Википедия говорит о сложности A * следующей (ссылка здесь):
Более проблематично, чем время сложность - использование памяти A * s. В в худшем случае, он также должен помнить экспоненциальное число узлов.
Я не вижу, что это правильно, потому что:
Скажем, мы исследуем node A с преемниками B, C и D. Затем добавляем B, C и D в список открытых узлов, каждый из которых сопровождается ссылкой на A, и мы перемещаем A из открыть узлы к закрытым узлам.
Если в какой-то момент мы найдем другой путь к B (скажем, через Q), то лучше, чем путь через A, тогда все, что необходимо, - это изменить ссылку B на A на точку Q и обновить ее фактическую стоимость, g (и логически f).
Следовательно, если мы сохраним в node его имя, ссылающееся на него имя node и его оценки g, h и f, то максимальное количество узлов, которые хранятся, представляет собой фактическое количество узлов на графике, не так ли? Я действительно не понимаю, почему в любой момент алгоритм должен будет хранить количество узлов в памяти, которое экспоненциально соответствует длине оптимального (кратчайшего) пути.
Может кто-нибудь объяснит?
edit Как я понимаю, теперь, читая ваши ответы, я рассуждал с неправильной точки зрения проблемы. Я принимал как данность данный график, тогда как экспоненциальная сложность относится к концептуальному графу, который определяется исключительно "фактором ветвления".