Abhängig davon, ob eine Fokussiermetrik zur Stützung verwendet wird und nach dem Finden des Ausgangspunktes abbricht, werden mehr oder weniger Stellen erweitert und sind daher später als Stütze verfügbar. Wenn der Start-Knoten aufgeklappt ist, kann der Suchalgorithmus beendet werden. Der OpenList darf nicht entleert werden. Bei einer Sperrung werden alle davon betroffenen Stellen wieder in die OpenList aufgenommen.
Sie sind jedoch als Raise Points (orangefarbene Points auf der Karte) gekennzeichnet. Doch bevor ein Erhöhungspunkt die Kostensteigerung an seine Nachfolgepunkte weitergibt, überprüft er, ob es einen Ort in seiner Umgebung gibt, der seine Ausgaben senken kann. Jetzt durchläuft eine Anstiegswelle alle beteiligten Stellen. Diesem folgt eine niedrigere Frequenz (grüne Punkte), falls vorhanden.
Tieferpunkte sind Stellen, die die Kostensenkung weiter verbreiten. Der rechte Anschlag hat in diesem Beispiel die Option, über einen anderen Nachbar zum Bestimmungsort zu gelangen. Diese Stelle vermeidet, dass eine ganze Serie anderer Stellen überhaupt "berührt" werden muss. Dabei werden nur die Positionen verarbeitet, die wirklich von der Kosttänderung beeinflusst werden.
Dieses Mal kann die Sperre nicht so einfach umgangen werden. Bei keinem der Orte kann über einen Nachbar eine neue Strecke zum Bestimmungsort ermittelt werden. Nur außerhalb des Channels können Orte gesucht werden, die eine Strecke zum Zielpunkt bereitstellen. Es werden hier zwei niedrigere Wellen erzeugt, die die als unzugänglich markierten Positionen mit neuen Routeninformationen erweitern.
Es werden alle erkennbaren Stellen auf der OpenList notiert. Sofern es in der Liste Points gibt, wird immer der erste Point aus der OpenList gelöscht und erweitert. Zunächst wird festgelegt, ob sich der zu erweiternde Zeitpunkt im Erhöhungszustand befindet oder nicht (und damit von selbst im Unterzustand). Dabei werden alle Anwohner auf ihre Erreichbarkeit vom jetzigen Zeitpunkt an besser als bisher adressiert.
Ist dies der fall, wird der aktuell gewählte Zeitpunkt zum Vorläufer des Nachbars, kalkuliert seine Anschaffungskosten erneut und fügt ihn der OpenList hinzu. Besteht eine Erhöhungsbedingung, werden die anfallenden Gebühren unverzüglich an alle Anwohner weitergegeben, die über den jeweiligen Zeitpunkt den Weg zum Zielpunkt anstreben. Bei allen anderen Punkten wird untersucht, ob der derzeitige Zeitpunkt eine Kostensenkung bedeuten könnte.
Wenn ja, werden die Minimalkosten des laufenden Punkts auf seine Tageskosten festgelegt (er wird also auf den niedrigeren Stand gesetzt) und wieder auf die OpenList zurückgesetzt, um seine Betriebskostenoptimierung bei der nächsten Erweiterung zu verbreiten. Der Entscheid, ob eine Erhöhung oder eine niedrigere Bedingung besteht, wird auf der Grundlage der laufenden und der Mindestkosten getroffen.
Wenn die derzeitigen Trassenkosten höher sind als die Mindestkosten, besteht eine Erhöhungsbedingung. Vor der Weitergabe dieser Kostensteigerung wird jedoch überprüft, ob es einen Ort in der Nähe gibt, der die Gesamtkosten des jetzigen Ortes mindern kann. Wenn es einen solchen Zeitpunkt gibt, wird er als neuen Nachfolger eingestellt und die Ausgaben werden nachberechnet.
Nachdem alle Nachbarschaft überprüft wurden, wird erneut überprüft, ob die Mindestkosten den derzeitigen ausmachen.
Das Minimum an Zusatzkosten bietet immer die geringsten Anschaffungskosten seit der ersten "Hinzufügung" zur OpenList. Wenn Sie eine Sperre einfügen, stellen Sie sicher, dass diese Option einen geringeren Rückgabewert als die tatsächlichen Anschaffungskosten des Punkts hat. Folgende Massnahmen sind entweder mit hohem Programmierungsaufwand oder negativen Auswirkungen verbunden, weshalb bei der Umsetzung zu berücksichtigen ist.
Der größte Einfluss auf die Runtime des Verfahrens hat die Implementation der OpenList. In der OpenList wird "im hintersten Drittel" gefüllt und von vorn entleert. Wenn sich eine blockierte Fläche ausdehnt, gibt es häufige Veränderungen der Mindestkosten (auf und ab) bei den Übergangsphasen von höheren zu niedrigeren Wellen. Wenn eine zusätzliche Sperre einen beliebigen Teilbereich komplett von der Erweiterung ausschließt, wird sie nicht beendet.
Bevor geprüft wird, ob eine Raise Condition besteht, wird der Versuch unternommen, einen Nachbar zu suchen, der geringere Preise bietet. Für einen Nachbar einer blockierten Stadt ist dies ein beliebiger Ort, außer der selbst. Die Anhebung " verbindet " sich mit einem Nachbar, nur um von diesem Nachbar in der nächstfolgenden Erweiterung wieder nach oben geholt zu werden, um wieder zum Erhöhungszustand zu werden.
Dies führt zu einer Schlaufe, in der die Preise für die einzelnen Schritte erhöht werden. Es gibt zwei Wege, dieses Phänomen zu beheben: Feste Obergrenze: Sie legen eine Untergrenze fest, an der ein Ort als "unzugänglich" giltf. Eine Validitätsprüfung: Bevor ein Zeitpunkt im Raise Check zum Vorläufer wird, wird er einer Validitätsprüfung unterzogen.
Hiermit wird überprüft, ob der Point in eine Loop mündet, in der OpenList steht, keinen Vorläufer hat ( "das kann nur der Endpoint sein"), als nicht erreichbar oder als blockiert gekennzeichnet ist. Tritt einer dieser vier Punkte ein, wird der betreffende Zeitpunkt ausgelassen. Sie können diesen Test vom Wunschpunkt zum Zielpunkt fahren, aber es braucht Zeit.
Zur Vermeidung von endlosen Schleifen genügt es jedoch, die folgenden 2 Stellen zu überprüfen. Dies bedeutet, dass alle Stellen gleichwertig sind und eine Kreisausdehnung durchgeführt wird. Ein Fokussiermaß, wie das A* für geographische Problemstellungen, wäre die Zahl der Absprünge vom Zeitpunkt des Auftretens bis zum Ende plus der lineare Abstand zwischen dem Zeitpunkt und dem Ende.
Diese Kennzahl dehnt sich immer um den letzten bekannten optimierten Weg oder zum Ausgangspunkt aus. Diese Kennzahl sollte immer zügig berechnet werden und muss die tatsächlich anfallenden Ausgaben immer unterbewerten, da es sonst zu Irrtümern kommt. D* kann im Unterschied zu A* von ihnen unwiederbringlich zerstört werden, so dass keine Verbindung zum Bestimmungsort hergestellt wird.
Zuerst wird der Knoten A erweitert. Weil ihre Vorläufer jedoch noch nicht durch die Erhöhungswelle abgedeckt sind, gelten sie als wirksam und bieten ihre Preise an. Dies kann nur dann eintreten, wenn Orte in großer Distanz zum Zielort aufgeweitet werden und nicht näher am Zielort. Bei einem Raise Check wird ein tatsächlich "ungültiger" oder durch eine Raise Welle nachträglich geänderter Wert als neue zielorientierte Nachbarin verwendet.
Dadurch geht der Erhöhungspunkt in den unteren Zustand, da er mit seinen Trassenkosten alle Weichen in der Umgebung aufwerten kann. Jetzt schwingen niedrigere Wellen, gefolgt von Erhöhungswellen um diesen Ort herum, bis eine endgültige Niedrig-/Hochleistungswelle endlich die richtigen Distanzkosten ausbreitet. Auch beim Scannen vom mutmaßlichen Ort zum Zielort kann eine solche Aufstellung noch auftreten.
Heuristisch: Bei einer N*N-Matrix unterbindet eine Abtastiefe von N/20 die meisten dieser Auswirkungen in den ersten 2/3 der zu erweiternden Zonen. Ähnlich wie bei A* kann der Athorithmus beendet werden, sobald der Ausgangspunkt erweitert wird und - das ist D*-spezifisch - im unteren Zustand ist (gilt nur, wenn die Implementation sauber ist). Die OpenList darf im Falle einer Kündigung nicht entleert werden, da sonst nicht alle Möglichkeiten zur Vermeidung im Falle einer Sperrung bekannt sind.
Dadurch sollte sichergestellt sein, dass nahezu alle anderen Gewinde gesperrt sind und nur die Strecke errechnet wird. Kaum hat der Athorithmus den Zeitpunkt erreicht, an dem Sie ihn normal beenden würden (erste Erweiterung des Startpunktes), sagen Sie allen anstehenden Gewächsen, dass die Strecke nun zur Verfügung steht. Im Regelfall genügt die überflüssige Rechnerleistung, um die Map bis zur Einsatzbereitschaft des Agenten voll zu erweitern.
Dabei wird der rufende Faden so lange gesperrt, bis der berechnete Faden eine neue Strecke ermittelt hat, dann wird die Map weiter erweitert, während der Experte neue Kommandos erhält.