数据结构地提出是为了更好地解决数据存储问题,图数据结构的提出是为了解决生活中的复杂网络问题。
在Python中,图的表示方式一般使用字典以及列表完成。
#使用字典列表展现图
graph={
1:{2:1,3:12},
2:{3:9,4:3},
3:{5:5},
4:{3:4,5:13,6:15},
5:{6:4},
6:{6:0}
}
Dijkstra算法一般是用于解决求解最短路径问题,属于盲目搜索算法。
原理:不断求解起始节点到其他节点的最短路径成本。
First:
引入cost字典,表示对于起始点到每一个其他节点的成本。eg:cost[2]=1。表示起始点(这里设定为节点1)到节点2的成本需要1。
引入visted列表,记录已访问的节点。eg:起始visted=[1];
引入Parents字典,记录已求解最短路径节点的前一个节点。eg:假设至3节点的最短路径为1-2-4-3,则parents[3]=4;
Second:算法流程(以上面的网络图为例)
cost初始值为1节点到各个节点的成本