Es gibt eine große Einschränkung bei der Verwendung von D *, D * -Lite oder einem der inkrementellen Algorithmen in dieser Kategorie (und es ist erwähnenswert, dass diese Einschränkung in der Literatur selten erwähnt wird). Diese Arten von Algorithmen verwenden eine umgekehrte Suche. Das heißt, sie berechnen die Kosten vom Zielknoten nach außen, wie eine Welligkeit, die sich nach außen ausbreitet. Wenn sich die Kosten für Kanten ändern (z. B. wenn Sie in Ihrem Beispiel eine Wand hinzufügen oder entfernen), verfügen alle über verschiedene effiziente Strategien, um nur die Teilmenge der untersuchten (auch als "besuchte" bezeichneten) Knoten zu aktualisieren, die von den Änderungen betroffen sind.
Die große Einschränkung besteht darin, dass die Position dieser Änderungen in Bezug auf die Zielposition einen enormen Unterschied für die Effizienz der Algorithmen darstellt. Ich habe in verschiedenen Abhandlungen und meiner These gezeigt, dass es durchaus möglich ist, dass die schlechteste Leistung eines dieser inkrementellen Algorithmen schlechter ist, als alle Informationen wegzuwerfen und mit etwas neuem zu beginnen, das nicht inkrementell ist, wie einfaches altes A *.
Befinden sich die geänderten Kosteninformationen in der Nähe des Umfangs der erweiterten Suche (der "besuchten" Region), müssen nur wenige Pfade geändert werden, und die inkrementellen Aktualisierungen sind schnell. Ein einschlägiges Beispiel ist ein mobiler Roboter, an dessen Körper Sensoren angebracht sind. Die Sensoren sehen nur die Welt in der Nähe des Roboters, und daher sind die Änderungen in dieser Region. Diese Region ist der Startpunkt der Suche, nicht das Ziel, und so funktioniert alles gut und die Algorithmen sind sehr effizient bei der Aktualisierung des optimalen Pfads, um die Änderungen zu korrigieren.
Wenn sich die geänderten Kosteninformationen dem Ziel der Suche nähern (oder in Ihrem Szenario die Zieländerungsorte und nicht nur der Start angezeigt werden), kommt es zu einer katastrophalen Verlangsamung dieser Algorithmen. In diesem Szenario müssen fast alle gespeicherten Informationen aktualisiert werden, da sich der geänderte Bereich so nahe am Ziel befindet, dass fast alle vorberechneten Pfade die Änderungen durchlaufen und neu ausgewertet werden müssen. Aufgrund des Mehraufwands beim Speichern zusätzlicher Informationen und Berechnungen für inkrementelle Aktualisierungen ist eine Neubewertung in dieser Größenordnung langsamer als ein Neustart.
Da in Ihrem Beispielszenario der Benutzer scheinbar jede gewünschte Wand verschieben kann, tritt dieses Problem auf, wenn Sie D *, D * -Lite, LPA * usw. verwenden. Die Zeitleistung Ihres Algorithmus ist je nach Benutzer unterschiedlich Eingang. Im Allgemeinen "das ist eine schlechte Sache" ...
Als Beispiel hatte Alonzo Kellys Gruppe an der CMU ein fantastisches Programm namens PerceptOR, das versuchte, Bodenroboter mit Luftrobotern zu kombinieren, wobei alle Wahrnehmungsinformationen in Echtzeit ausgetauscht wurden. Als sie versuchten, das Planungssystem eines Bodenfahrzeugs mit einem Hubschrauber in Echtzeit auf den neuesten Stand zu bringen, stießen sie auf dieses Problem, da der Hubschrauber dem Bodenfahrzeug vorausfliegen und die Kosten näher am Ziel liegen und sich somit verlangsamen könnte ihre Algorithmen nach unten. Haben sie diese interessante Beobachtung besprochen? Nein. Am Ende gelang es ihnen am besten, den Hubschrauber direkt über dem Bodenfahrzeug fliegen zu lassen - und es damit zum teuersten Sensormast der Welt zu machen. Klar, ich bin kleinlich. Aber es ist ein großes Problem, über das niemand sprechen möchte - und sie sollten,
Es gibt nur eine Handvoll Papiere, die dies diskutieren, hauptsächlich von mir. Von den Arbeiten, die von den Autoren oder Studenten der Autoren der in dieser Frage aufgeführten Originalarbeiten verfasst wurden, fällt mir nur eine ein, die dieses Problem tatsächlich erwähnt. Likhachev und Ferguson schlagen vor, den Umfang der erforderlichen Aktualisierungen abzuschätzen und die gespeicherten Informationen zu löschen, wenn die inkrementelle Aktualisierung voraussichtlich länger dauert als ein Neustart. Dies ist eine vernünftige Lösung, aber es gibt auch andere. Meine Doktorarbeit verallgemeinert einen ähnlichen Ansatz auf ein breites Spektrum von Rechenproblemen und geht über den Rahmen dieser Frage hinaus. Sie finden die Referenzen jedoch möglicherweise nützlich, da sie einen umfassenden Überblick über die meisten dieser Algorithmen und mehr bietet. Siehe http://db.acfr.usyd.edu.au/download.php/Allen2011_Thesis.pdf?id=2364 für Details.