Я пытаюсь создать небольшое приложение для маршрутизации общественного транспорта.
Мои данные представлены в следующей структуре:
graph = {'A': {'B':3, 'C':5},
'B': {'C':2, 'D':2},
'C': {'D':1},
'D': {'C':3},
'E': {'F':8},
'F': {'C':2}}
Где:
- graph dict key - это node
- subdict key - это ребро между двумя узлами
- Значение subdict - это вес кромки
Я использовал алгоритм find_shortest_path, описанный здесь https://www.python.org/doc/essays/graphs/, но он довольно медленный из-за рекурсии и не имеет поддержки весов.
Итак, я перешел к алгоритму, описанному Давидом Эпштейном здесь http://code.activestate.com/recipes/119466-dijkstras-algorithm-for-shortest-paths/ (и даже лучшая реализация могла быть найдена там в комментариях с использованием of heapq)
Он отлично работает, он очень быстрый, но я получаю только лучший маршрут, а не список всех возможных маршрутов. И вот где я застрял.
Может кто-нибудь помочь мне в этом, пожалуйста, или, по крайней мере, дать направление? Я не очень хорош в алгоритмах кратчайших путей графика.
Спасибо заранее!