Вот псевдокод для поиска равномерной стоимости, также известного как алгоритм Дейкстры:
function UniformCostSearch(problem)
frontier <- Priority Queue with initial state
explored <- Empty set
add problem.initialState to frontier with cost 0
while frontier is not empty
node <- frontier.pop()
if problem.goalTest(node.state)
return node.solution
add node.state to explored
for action, childState, stepCost in problem.successorFunction(node.state)
if childState is not in explored or frontier
newNode <- Node(childState, node, node.solution + action, node.pathCost + stepCost)
if childState is in frontier with higher path cost
replace that frontier node with newNode
else
add newNode to frontier with path cost
return failure
Вот несколько дополнительных методов, обычно используемых в алгоритмах поиска по графам:
problem.initialState: возвращает исходное состояние проблемы.problem.goalTest(state): проверяет, является ли данное состояние целевым.problem.successorFunction(state): генерирует преемников данного состояния, а также соответствующие действия и стоимость шагов.Node(state, родительский, action, pathCost): представляет узел в дереве поиска, гдеstate— текущее состояние,parent— родительский узел,action— действие, предпринятое для достижения этого состояния из родительского узла, аpathCost— стоимость пути от начального состояния к текущему состоянию..