2010-07-22 3 views
0

Я выполняю алгоритм поиска стоимости unifrom. Я получаю свое решение немного больше фактического. Количество расширенных узлов больше, чем фактическое.Проблема с алгоритмами в решении с равномерной стоимостью

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

Получить начальный узел и поместите его в приоритет queue.The P.queue будет сам организует узлы в нем по стоимости. На первом месте стоит узел с низкой стоимостью.

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

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

вычислить стоимость до этого узла.

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

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

+2

Я не понимаю, для чего нужен ваш алгоритм и что он делает. Извините, но вы должны уточнить свой вопрос (imho). – cletus

+0

Что сказал cletus. Вдруг вы говорите о «родительском каталоге» ...? –

ответ

2

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