#大名鼎鼎的Dijkstra是一种广度优先算法:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import numbers
import numpy
import math
'''
Dijkstra 算法说明
初始条件:
1、设定邻接列表或邻接矩阵
2、选定初始节点
3、设立已确立最短线路的节点集,包括目标节点标志、路径权重、路径节点序列(set1)
4、设立待优化路径集合,包裹目标节点标志、路径权重、路径节点序列(set2)
5、当前节点
*********************************
方法:
1、选定节点该,直接进入set1
2、当前节点不包含于set1的邻接节点,并累计到这些这些节点的权重的到临时settemp;
3、settemp中的元素逐个与set2中的待优化路径比较:目标节点相同则相比较区中,set中的做选择权重小的路径;未有匹配的路径则直接写入(松弛)
4、在set2中选择权重最小的节点写入set1,并将这个节点作为当前节点
5、重复2-4部
#代码:
def dijkstra(curp,setf,nfix):
setf[curp[-1][0]]=[curp[-1][1],curp[-1][2]]
temppoint = ''
temppath = ''
tempright = 0