| |

Fortgeschrittene ProgrammierungRe: Permutation von zwei Zahlenreihen | |  | Autor: Goblin | Datum: 13.03.07 14:34 |
| srcdbgr schrieb:
Zitat: |  | P.S.
Diese Lösung ist schnell, aber nicht perfekt
Annahme: Schiff B steht näher zu Schiff X als Schiff A.
Schiff A sucht und findet Weg zu Schiff X als kürzesten Weg.
Schiff B sucht seinen kürzesten Weg. Der Weg zu Schiff B wird
aber nicht gefunden, da Schiff A den Weg zu Schiff X bereits
für sich als Lösung reserviert hat. Wenn Schiff B seinen
kürzesten Weg sucht, steht Schiff X nicht mehr zur Auswahl.
Eventuell kannst Du aber mit diesem Nachteil leben, da
insgesamt betrachtet zwar keine optimale aber eine noch eine
gute Lösung gefunden wird.
Wenn Du nicht mit diesem Nachteil leben kannst oder willst,
dann musst Du im ersten Durchlauf für [u]jedes Schiff den
kürzesten Weg finden und untersuchen, ob es Überschneidungen
gibt (also, ob ein Zielschiff von zwei oder mehr Schiffen als
kürzeste Lösung gefunden wird). Aus den Überschneidungen
wiederum wählst Du die Variante mit dem kürzesten Weg. Das
ist dann Deine Lösung für das erste Schiff (also in obigem
Beispiel B und nicht A). Erst dann reduzierst Du die
Gesamtmenge um die gefundene Lösung. Im nächsten Lauf dann
das gleiche nochmal usw.
Diese Lösung wäre dann optimal.
Gruß,
Michael
|  |
Hallo Michael,
das ist genau die Lösung, also die optimale mit der Überprüfung!
Vielen Dank, Super!
Die Anzahl der Wege von einem Schiff zum anderen habe ich in einem zwei Dim. Array Wege(1 to 6, 1 to 6) gespeichert. Das hat mich nicht weiter gebracht, also habe ich sie nochmals in ein ein Dim. Array kopiert WegeLin(1 to 36). Das ganze für 2*6 Schiffe.(A,B,C,D,E,F und U,V,W,X,Y,Z)
Das sieht dann so aus:
WegeLin(1) = wert1 Schiff A - > Schiff U
WegeLin(2) = wert2 Schiff A - > Schiff V
WegeLin(3) = wert3 Schiff A - > Schiff W
WegeLin(4) = wert4 Schiff A - > Schiff X
WegeLin(5) = wert5 Schiff A - > Schiff Y
WegeLin(6) = wert6 Schiff A - > Schiff Z
WegeLin(7) = wert7 Schiff B - > Schiff U
WegeLin(8) = wert8 Schiff B - > Schiff V
WegeLin(9) = wert9 Schiff B - > Schiff W
usw. bis
WegeLin(36) = wert36 Schiff F- > Schiff Z
Alle 7 Einträge beginnen die Werte für das nächste Schiff. Ich dachte ich könne jetzt mit einer Schleife i=1 to 36 da durchlaufen und mit einem Hilfszähler i+7 die benötigten Paare bilden. Das geht aber nicht!
Ich habe keine Ahnung wie ich die von dir beschriebene Ideal Lösung Programmieren könnte. Da ist zum einen das Prüfen der Überschneidungen:
Zitat: |  | ob es Überschneidungen gibt (also, ob ein Zielschiff von zwei oder mehr Schiffen als kürzeste Lösung gefunden wird). Aus den Überschneidungen
wiederum wählst Du die Variante mit dem kürzesten Weg. |  |
als auch das reduzieren:
Zitat: |  | Erst dann reduzierst Du die Gesamtmenge um die gefundene Lösung. |  |
Ein ganz großes Lob an dich, für deine wirklich Vorbildliche Hilfe und nochmals Danke dafür. *RESPEKT* |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevDTA 3.0 Pro 
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|