Попытка реализовать единый поиск по стоимости в этом коде 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.

Я все еще новичок в этом, пожалуйста, уважайте пост.

0 ответов

Другие вопросы по тегам