Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 8, 2019 14:48:12

chelovek
Зарегистрирован: 2019-12-08
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Кратчайший путь в графе

Добрый вечер, есть код, но его надо доработать. Не понимаю как и что. Задание:
строка ввода # 1: n - целое число, показывающее, сколько путей у нас будет на графике

строка ввода № 2: первые две соединенные вершины

строка ввода № 3: еще две соединенные вершины



строка ввода # n + 1: последние подключенные вершины

строка ввода # n + 2: вершина, чтобы начать и закончить движение

Программа выводит кратчайший путь. Если существует более 1 пути одинакового размера, проргам выводится по алфавиту больше. Например, если возможными путями являются A B D и A C D, берется первый (A B D)

graph = {'A': , ‘B’: , ‘C’: , ‘D’: , ‘E’: , ‘F’: , ‘J’:, ‘G’:, ‘H’:,'I':}
def find_shortest_path(graph, start, end, path:
path = path +
if start == end:
return path
if not start in graph:
return None
shortest = None
for node in graph:
if node not in path:
newpath = find_shortest_path(graph, node, end, path)
if newpath:
if not shortest or len(newpath) < len(shortest):
shortest = newpath
return shortest

Пример:
input:

8
A B
A C
B C
B D
C D
D C
E F
F C
A D

output:

A B D

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version