проблема алгоритмов в едином решении затрат - PullRequest
0 голосов
/ 22 июля 2010

Я делаю алгоритм поиска по стоимости.Я получаю свое решение немного больше, чем фактическое.Число развернутых узлов больше, чем фактическое.

Я использовал этот алгоритм:

Получите начальный узел и поместите его в очередь с приоритетами. P.queue сама упорядочит узлы вэто по стоимости.Сначала будет стоить более дешевый узел.

используйте цикл while, он будет работать до тех пор, пока очередь не станет пустой.

удалите узел из очереди и проверьте, является ли он целевым состоянием или нет.если нет, проверьте, есть ли он в списке посещенных или нет.список посещений - это набор, в котором есть все уже развернутые узлы.если его нет в списке посещенных, получите его преемников вместе со стоимостью и действием.

рассчитайте стоимость до этого узла.

, если стоимость вспомогательного элемента больше, чем стоимость родительского узла,добавьте его в очередь и проверьте, находится ли этот преемник в родительском каталоге или нет.Если нет, сделайте его родителем, чтобы мы могли отследить путь.

мой алгоритм верен или мне нужно проверить что-то еще:

1 Ответ

2 голосов
/ 22 июля 2010

Кажется, вы реализуете Dijkstra с приоритетной очередью.Но поскольку затраты одинаковы, BFS будет достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...