Dies ist ein Beispiel dafür, was ich per Code tun möchte. Ich weiß, dass Sie die Sprungpunktsuche verwenden können, um problemlos vom grünen Knoten zum roten Knoten oder sogar zu A * zu gelangen. Aber wie rechnet man das mit Warps?
Im Bild können Sie sehen, dass es nur 8 Züge dauert, um vom grünen zum roten Knoten zu gelangen, wenn Sie den blauen Pfad nehmen. Der blaue Pfad verschiebt Ihre Position sofort von einem lila Knoten zum nächsten. Das Feld in der Mitte, das 2 Züge kostet, ist ein Punkt zwischen zwei Warpzonen, zu dem Sie sich bewegen müssen, um zu gelangen.
Es ist deutlich schneller, den blauen Pfad einzuschlagen, da Sie nur die Hälfte (ungefähr) bis zum gelben Pfad zurücklegen müssen. Wie mache ich das programmgesteuert?
Um dieses Problem zu lösen, nehmen wir an, dass das Diagramm mehrere violette "Verzerrungen" enthält, die Sie verwenden können, UND wir wissen genau, wohin sich die einzelnen violetten Punkte verzerren und wo sie sich im Diagramm befinden.
Einige violette Verzerrungen sind bidirektional und andere nicht, was bedeutet, dass Sie eine Verzerrung manchmal nur von einer Seite eingeben können, nach dem Verzerren jedoch nicht zurück.
Ich habe über die Lösung nachgedacht und bin nur zu dem Schluss gekommen, dass ich das Problem berechnen kann, indem ich den Abstand zu jedem Warp-Punkt (abzüglich der unidirektionalen Punkte) und den Unterschied zwischen diesen Punkten und den nahegelegenen Punkten überprüfe .
Das Programm müsste irgendwie herausfinden, dass es vorteilhafter ist, den zweiten Warp auszuführen, anstatt vom ersten Sprung zu laufen. Anstatt also 6 Punkte zu bewegen, dann zu verziehen und dann die restlichen 8 Schritte zu Fuß zu bewegen (was auch schneller ist, als überhaupt keine Verzerrungen zu verwenden), würden die 6 Züge und dann die beiden Züge zur zweiten Verzerrung führen.
EDIT: Ich habe festgestellt, dass der blaue Pfad tatsächlich 12 statt 8 Züge benötigt, aber die Frage bleibt dieselbe.