本文使用 Python 语言,实现一个 Dijkstra 算法的简单算例。
有关算例及算法流程,见博客:
Dijkstra 算法流程的举例说明
代码实现:
from datetime import datetime
from typing import List, Tuple
def dijkstra(mat_distance: List[List[int]], start: int, m: int = 10 ** 8) -> Tuple[List[int], List[int]]:
"""
Dijkstra algorithm
:param mat_distance: distance matrix
:param start: start point
:param m: big m
:return: list_distance: list of distance from start point to other nodes
"""
# number of nodes
num_node = len(mat_distance)
# result data: distance list
list_distance = [m for _ in range(num_node)]
list_node_from = [0] + [-1 for _ in range(num_node - 1)]
# intermediate data
# if node status is optimal
list_if_opt = [False for _ in range(num_node)]