Попытка реализовать единый поиск по стоимости в этом коде DFS
Раньше это была BFS, которую я превратил в DFS.
Сейчас пытаюсь внедрить UCS.
Это код:
class Node:
def __init__(self, label):
self.label = label
self.adjacency = []
self.explored = False
def initial_state(start, problem):
for node in problem:
if start.label == node.label:
return[start]
return []
def remove_front(nodes):
actual_node = nodes.pop()
actual_node.explored = True
return actual_node
def goal(node, target):
return node.label == target.label
def queue(nodes, actual_node):
for n in actual_node.adjacency:
if not n.explored:
n.explored = True
nodes.append(n)
def isempty(frontier):
return len(frontier) == 0
def reset_explored():
for node in problem:
node.explored = False
def ucs(start_node, target_node):
frontier = initial_state(start_node, problem) #Initialize
while True:
if isempty(frontier):
print("Fail")
return
node = remove_front(frontier)
print(node.label)
if goal(node, target_node):
print("Landed at " + node.label)
return
nodes = queue(frontier, node)
Я уже знаю, как работает UCS, но не знаю, как добавлять стоимость к каждому соседнему узлу.
Было бы проще, если бы я просто использовал словарь?
Редактировать:
node1 = Node("Airport 1")
node2 = Node("Airport 2")
node3 = Node("Airport 3")
node4 = Node("Airport 4")
node5 = Node("Airport 5")
node6 = Node("Airport 6")
node7 = Node("Airport 7")
node8 = Node("Airport 8")
node9 = Node("Airport 9")
node10 = Node("Airport 10")
node11 = Node("Airport 11")
node12 = Node("Airport 12")
node13 = Node("Airport 13")
node1.adjacency.append(node2)
node1.adjacency.append(node3)
node1.adjacency.append(node4)
node2.adjacency.append(node5)
node3.adjacency.append(node6)
node4.adjacency.append(node7)
node5.adjacency.append(node3)
node6.adjacency.append(node13)
node7.adjacency.append(node9)
node8.adjacency.append(node12)
node9.adjacency.append(node10)
node10.adjacency.append(node11)
node11.adjacency.append(node12)
node12.adjacency.append(node13)
node13.adjacency.append(node6)
problem = []
problem.append(node1)
problem.append(node2)
problem.append(node3)
problem.append(node4)
problem.append(node5)
problem.append(node6)
problem.append(node7)
problem.append(node8)
problem.append(node9)
problem.append(node10)
problem.append(node11)
problem.append(node12)
problem.append(node13)
target_airport = node13
ucs(node1, target_airport)
это мои узлы, ожидаемый результат — это путь с наименьшими затратами из аэропорта 1 в аэропорт 13.
Я все еще новичок в этом, пожалуйста, уважайте пост.