Top.Mail.Ru
Ответы

Реализация алгоритма Дейкстры в Python

В книге <<Грокаем Алгоритмы>> представлен этот код, но в итоге ошибка на 29 и 40 строках NameError: name 'find_lowest_cost_node' is not defined.

graph = {}
graph['you'] = ['alice', 'bob', 'claire']
graph['start'] = {}
graph['start']['a'] = 6
graph['start']['b'] = 2
graph['a'] = {}
graph['a']['fin'] = 1
graph['b'] = {}
graph['b']['a'] = 3
graph['b']['fin'] = 5
graph['fin'] = {}

infinity = float('inf')
costs = {}
costs['a'] = 6
costs['b'] = 2
costs['fin'] = infinity

parents = {}
parents['a'] = 'start'
parents['b'] = 'start'
parents['in'] = None

processed = []

node = find_lowest_cost_node(costs)

while node != None:
cost = costs[node]
neightbors = graph[node]

for n in neightbors.keys():
new_cost = cost + neightbors[n]

if costs[n] > new_cost:
costs[n] = new_cost
parents[n] = node

processed.append(node)
node = find_lowest_cost_node(costs)

По дате
По Рейтингу
Аватар пользователя
Новичок

Представленное - это только ЧАСТЬ алгоритма.
В этой же книге в одном из соседних листингов должен быть код, содержащий:
def find_lowest_cost_node...
Если же такого листинга нет, значит реализовать функцию find_lowest_cost_node предлагают читателю самостоятельно.

P.S. "Грокаем алгоритмы" - это НЕ учебник, а попсовый научпоп. Хочешь нормальный учебник программирования - бери Вирта или Кормена ("Вводный курс").

Аватар пользователя
Мудрец
Аватар пользователя
Гений

А с чего бы ему быть defined? Такой функции нигде в коде не объявено.

Аватар пользователя
Искусственный Интеллект

и что?
если не понимаете что написано, начинайте с начала а не с середины