def dijkstragraphsrc length = lengraph type_ = typegraph if type_ == list nodes = i for i in xrangelength elif type_ == dict nodes = graphkeys visited = src path = srcs
- 第1行:定义了一个函数dijkstra,接受两个参数graph和src,用于实现Dijkstra算法。
- 第2行:获取图的长度。
- 第3行:获取图的类型。
- 第4-7行:根据图的类型,初始化节点列表。
- 第9行:初始化已访问节点列表,将起始节点src加入其中。
- 第10行:初始化路径字典,将起始节点src作为键,值为一个字典,其中键为起始节点src,值为空列表。
- 第11行:从节点列表中移除起始节点src。
- 第12行:初始化距离图,将起始节点src作为键,值为0。
- 第13-15行:初始化pre和next变量,用于记录上一个和下一个节点。
- 第17-38行:当节点列表不为空时,进行循环。
- 第18行:将距离初始化为无穷大。
- 第19-21行:遍历已访问节点列表中的节点。
- 第22-24行:遍历节点列表中的节点。
- 第25行:计算新的距离。
- 第26-28行:如果新的距离小于等于当前距离,更新距离、pre和next变量,并更新距离图。
- 第30-32行:将路径更新为从起始节点到pre节点的路径,并添加next节点。
- 第34行:将下一个节点加入已访问节点列表。
- 第35行:从节点列表中移除下一个节点。
- 第37-39行:返回距离图和路径字典。
- 第42-45行:定义了一个图的列表表示。
- 第47-55行:定义了一个图的字典表示。
- 第57行:调用dijkstra函数,传入图的列表表示和起始节点2,返回距离图和路径字典。
- 第59行:调用dijkstra函数,传入图的字典表示和起始节点's1',返回距离图和路径字典。
- 第60行:打印距离图和路径字典。
原文地址: http://www.cveoy.top/t/topic/iPeY 著作权归作者所有。请勿转载和采集!