AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Spezieller Sortieralgorithmus bzw. Pfadfindealgorithmus gesucht
Thema durchsuchen
Ansicht
Themen-Optionen

Spezieller Sortieralgorithmus bzw. Pfadfindealgorithmus gesucht

Ein Thema von mariusbenz · begonnen am 16. Sep 2019 · letzter Beitrag vom 23. Sep 2019
Antwort Antwort
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Spezieller Sortieralgorithmus bzw. Pfadfindealgorithmus gesucht

  Alt 17. Sep 2019, 12:41
Ich suche nur nach einem zuverlässigen Algorithmus.
Gib es auch unzuverlässige Algorithmen?
Ja. Es kommt drauf an was man unter unzuverlässig versteht. Gefragt ist hier eine Lösung mit den wenigsten Wechseln. Unzuverlässig wäre ein Algorithmus der zwar wenig Wechsel hat, aber nicht am wenigsten.
Einen zuverlässigen Algorithmus wird es hier schon geben, zumindest der Brute Force wäre einer.
Es kann jedoch sein, dass dieser Algorithmus nicht brauchbar wäre. Das wäre zum Beispiel der Fall wenn man um einige Wechsel mit je 5 Sekunden zu sparen fünf Stunden benötigt um die optimal Lösung zu finden.
(Das Problem hat auch jedes Navigationsgerät.)

Deswegen fragte ich auch nach der Anzahl der Blöcke. Sind es zum Beispiel maximal 20, dann Brute Force und gut ist.
Wenn es 1000 sind fürchte ich, gibt es keine brauchbare zuverlässige Lösung. Aber meistens reicht auch eine nahezu zuverlässige Lösung.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

AW: Spezieller Sortieralgorithmus bzw. Pfadfindealgorithmus gesucht

  Alt 17. Sep 2019, 15:47
So, ich habe es jetzt hoffentlich verstanden.

Ein Sortieralgorithmus läßt sich m.E. aber nur auf die jeweiligen einzelnen Zeilen anwenden. Danach ist wohl die Zeit für "brute force" gekommen: Die einzelnen Blöcke mit gleich(groß)en Elementen innerhalb der Zeilen so permutieren, daß die Zusatzbedingung ("möglichst wenige Wechsel") erfüllt ist.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: Spezieller Sortieralgorithmus bzw. Pfadfindealgorithmus gesucht

  Alt 17. Sep 2019, 15:49
Ich suche nur nach einem zuverlässigen Algorithmus.
Gib es auch unzuverlässige Algorithmen?
Ja. Es kommt drauf an was man unter unzuverlässig versteht. Gefragt ist hier eine Lösung mit den wenigsten Wechseln. Unzuverlässig wäre ein Algorithmus der zwar wenig Wechsel hat, aber nicht am wenigsten.
Das ist aber kein Algorithmus, der die Aufgabenstellung löst! Der ist also nicht nur unzuverlässig, sondern hinsichtlich des Zielens unbrauchbar/untauglich/nutzlos/wertlos o.ä..
  Mit Zitat antworten Zitat
mariusbenz

Registriert seit: 6. Mär 2015
38 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Spezieller Sortieralgorithmus bzw. Pfadfindealgorithmus gesucht

  Alt 20. Sep 2019, 14:12
Hallo nochmal,

ich habe das Thema etwas ruhen lassen, deshalb melde ich mich jetzt erst wieder.
Da unsere Azubis diesen Algorothmus später umsetzen sollen, habe ich sie mit etwas Unterstützung erst mal selbst grübeln lassen.

Ich bin auf jeden Fall froh, dass Uwe und Schokohase die Aufgabe trotz fehlender Umformulierung verstanden haben.

Evtl. werden wir es auch mal mit BruteForcing probieren, therotisch kämen bis zu 60 Blöcke je 13 Werten zu Stande, in der Praxis wären es aber grob 20 Blöcke mit je 5 Werten.
Ebenso sind wir schon auf Uwes Idee mit der gemeinsamen Schnittmenge gekommen.

Den Ansatz (der mit den Bildern beschrieben ist) habe ich übrigens komplett verworfen, leider kann ich nun den Post aber nicht mehr bearbeiten.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

AW: Spezieller Sortieralgorithmus bzw. Pfadfindealgorithmus gesucht

  Alt 20. Sep 2019, 18:19
Ich hatte da noch eine Idee: Vielleicht könnten man das Problem als Graph umformulieren und dann über einen Standard-Algorithmus zur Lösung kommen.

Jeden Block kann man als Paar von Knoten auffassen, mit dem Anfangs- und Endbuchstaben. Die Pfade zwischen den beiden Knoten geben an, welche Kombinationen möglich sind. Vom zweiten Knoten gehen dann wieder viele Pfade zum ersten Knoten des nächsten Blocks.

Es ergeben sich sehr viele Pfade, die daher nach Möglichkeit nicht am Anfang alle erstellt werden sollten. Jeder Pfad hat dann ein Gewicht (0/1) je nachdem, ob die Buchstaben identisch sind. (Im Bild: Rot=1)
Angehängte Grafiken
Dateityp: png beispiel.PNG (33,7 KB, 21x aufgerufen)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

AW: Spezieller Sortieralgorithmus bzw. Pfadfindealgorithmus gesucht

  Alt 20. Sep 2019, 19:10
Evtl. werden wir es auch mal mit BruteForcing probieren, therotisch kämen bis zu 60 Blöcke je 13 Werten zu Stande, in der Praxis wären es aber grob 20 Blöcke mit je 5 Werten.
Schon bei 20, erst recht bei 60 Blöcken fällt brute force wegen der sehr stark wachsenden Fakultätsfunktion aus.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Spezieller Sortieralgorithmus bzw. Pfadfindealgorithmus gesucht

  Alt 23. Sep 2019, 11:10
Evtl. werden wir es auch mal mit BruteForcing probieren, therotisch kämen bis zu 60 Blöcke je 13 Werten zu Stande, in der Praxis wären es aber grob 20 Blöcke mit je 5 Werten.
Schon bei 20, erst recht bei 60 Blöcken fällt brute force wegen der sehr stark wachsenden Fakultätsfunktion aus.
Wahrscheinlich richtig, aber wenn man zunächst die Zahl der Permutationen pro Block auf die Interessanten reduziert, wie von Schokohase vorgeschlagen und dann die 60 Blöcke in z.B. 5er Pakete zerlegt, oder immer da eine Paketgrenze macht, wo zw. zwei Blöcken wegen komplett verschiedener Inhalte eh keine Optimierung möglich ist, und dann auf die Pakete die Brute-Force-Methode anwendet, könnte das was werden.
Nur wäre es dann eigentlich nicht mehr pur Brute Force .
Ralph
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#8

AW: Spezieller Sortieralgorithmus bzw. Pfadfindealgorithmus gesucht

  Alt 23. Sep 2019, 12:37
In meinem vorherigen Beitrage war ich unvollständig: Ich meinte natürlich, die Fakultätsfunktion wegen der Permutation(senumeration).

Soeben schaute ich mir Schokohases Beitrag eingehend an. Ich weiß nicht, was mit "stabil" gemeint ist. Stabil i.S. der Sortierung? Das ist eine beliebige Sortierung nicht per se, sondern es muß explizit ein stabiler Sortieralgorithmus gewählt werden! Diese "Sortierstabilität" war nach meiner Erinnerung in der Ausgangsproblemstellung nicht gefordert. Sie zu gewährleisten, ist jedoch mit der Wahl eines geeigneten, entsprechenden Sortieralgorithmus' leicht möglich.

Ja, und natürlich werden Blöcke bei diesen Permutationen als Elemente behandelt, d.h., daß innerhalb dieser Blöcke keinerlei Elementebewegungen stattfinden. Die Blöcke werden zeilenweise permutiert. Ist die Anzahl der Blöcke in der ersten Zeile a1, in der zweiten a2 usw. so dürfte die bei Brutforce abzuarbeitenden Gesamanzahl maximal a1!*a2!*... betragen. Das kann schnell heftig werden.
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#9

AW: Spezieller Sortieralgorithmus bzw. Pfadfindealgorithmus gesucht

  Alt 23. Sep 2019, 12:48
@Delphi-Laie

Ein Sortieralgorithmus (egal welcher) sollte egal wie immer so ein Ergebnis raushauen
Code:
aaabbbcccdddeee
sonst ist es kein Sortieralgorithmus. Einen echten stabilen Sortieralgorithmus braucht man hier gar nicht, weil es hier in diesem Anwendungsfall doch völlig egal ist, ob
Code:
aaabbbcccdddeee
oder
Code:
aaabbbcccdddeee
bei der Sortierung herauskommt.

(Wie, sie haben den Unterschied nicht bemerkt? Doch, sehen sie genau hin, das 2. a war vorher das 1. a also nicht stabil)

Oder anders gesagt, brauchen wir eigentlich keinen Sortieralgorithmus, sondern einen stabilen Gruppierungsalgorithmus, der gleiche Zeichen immer auf die gleiche Art zusammenfasst.

Geändert von Schokohase (23. Sep 2019 um 12:51 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz