一、首先要知道邻接矩阵的解读
这是一个简单的邻接矩阵
1、以城市0为节点,我们先从城市0开始(他们之间的距离、时间、消耗等我们称为权值,这个例子权值=距离),我们能与城市一进行来回的通路,所以看下图,下标[0,1]与[1,0]都为1。接下来轮到城市二,同理可得,[0,2]与[2,0]都为2。因为城市0到城市3没有通路,所以说他们之间的的距离权值为"无穷"(对应下图的数字符号)
2、以城市1为节点,城市0去往其他城市的路程已经解析完,接下来就是城市1到其他城市。首先是城市1到城市2,由上同理,没有到城市2的通路,所以路程为"无穷",然后就是到城市3,他们之间的通路是4,所以[1,3]与[3,1]都是4
3、以城市2为节点,接下来就是城市二到城市三,[2,3]与[3,2]之间权值就为3
4、最后一个城市为节点,因为没有下一个节点所以[3,3]为零
二、本人对迪杰斯特拉的理解
1.由第一个点开始作为初始节点,开始计算到其他节点的权值,然后比较去往相同节点不同的权值去计算他们之间那条路线更近到达目标节点。直到所有的节点都当过目标节点后算法就结束了。
2.我们根据迪杰斯特拉算法得出
middle=2----这个是当前的初始节点 min_dist--这个是v0到该节点的距离
我们要算北京到海南的最短距离,首先我们要以北京为初始节点,算出我们到其他三个地方的距离
因为北京以济南为中间节点到武汉的距离为400<500,所以 北京到武汉的距离v1就成为了400(只要访问过的节点就位变为1,下图会变)
一下就是最终的结果起始城市到其他城市的最终距离
三、例子、
第一步将起始节点到其他节点 的距离存在dist数组中
第二步更新北京去往其他节点的距离,首先选择的是最近的天津中间节点,天津节点到济南最终的距离是400,到郑州的距离是1000小于北京直达郑州的距离1200,所以
第三步 因为北京到济南最近,所以设置济南为下一个中间节点,到北京的距离是800<1000所以距离更新。到长沙的距离由"无穷"更新为1700。到海南的距离为1800。
第四步因为郑州距离北京最近,所以设置郑州为下一个中间节点。到长沙的距离为1300<1700。
第五步就是长沙节点,它到海南2800>1800所以还为1800,海南为最后一个节点也是目的地,所以不用在查。