问题:
求出A-F之间最短路线;(1)写出思路于算法;(2)Matlab编程找出最短路径。
答案:A-F之间的最短路线有A-B3-D3-E1-F,A-B3-D3-E1-E2-F;A-B2-C1-D1-D2-E2-F
这三条路线的最短距离均为8。
方案一:思路:
对于是否返回的分析:
如图可以看出只有B端才能跨越C端的点直接到达D端的,其余的各端点都是必须按照字母顺序一路下来。若如D端返回到C端或B端这是不可能的,因为这样无疑增加了路程,如图可以看出C端的点能到达D端的各个点,所以要求的直接命中想到达的该点;而D端出发去到E端后有图可以看出不可能再返回D端了,因为这只会增加路线的长度,而且E端的各点是相通的,也没必要再返回D端;同样B端到达C端或D端的,因为B2,B2到能直接到达C端的各点,只有B1只能到达C1,但B1它到D1的距离和B1点到C1的距离同样为4但也不可能经过C1后返回B端的,因为C1也是联系D端的各点,而且你要返回B段端,还不如在A端的时候就选择好一个理想的B点,这样距离会更加短。所以不能进行返回。
如图将我们本来所需要的的路线分成两半,以D字母的为中间端。
后半部分:后半部分主要由D端连接到E端最后才连接到F端的,同时D端无法越过E
端直接连接到F端。更为重要的是前半部分,也必须要经过D端才能与F端相接,所以构成他们之间的枢纽定在D端是最好不过的。
首先的是先分析D端的三个点D1,D2,D3分别到点F的最短距离。
一、已经从D端出发去到E端后有图可以看出不可能再返回D端了,因为这只会增加路线的长度,而且E端的各点是相通的,也没必要再返回D端;
二、由图可以看出E端到点F最好的路线是E2-F距离为1,除E2外的E1,E3他们到F点的方式(E1-F, E1-E2-F ,E3-F ,E3-E2-F)的距离均为2;所以如果能先到达E2则可以只考虑E2到F这条路线。若先到达了E1,或E3、则这路线的最短路径必定变化为两条。 三、由于D3到E端的三条路线D3-E2,D3-E5的距离均为5,与D3-E1的距离为2相差着3的距离点,而即使E2-F的距离是1,比E1,E3到F的距离都少了1的距离点,但依然无法补充3个距离点的差距,对于E3-F就跟不用说了,所以D3连接E1是众望所归的。
所以归纳D3到F的最短路线可为(D3-E1-F, D3-E1-E2-F)距离均为4.
四、面对D2到E端的线路,它可以先经过D1点再过E端的点,但D2点到E2点也只是1的距离,已经是最少了距离线了,更加重要的是E2点到F点的距离也只是1比E1,E3点都要短,
所以D2到F的最短线路是(D2-E2-F;)距离为2
五、对于D1点到F点的路线,首先可以先看出D1能直接到达E端的E,1,E2两点,但经分析若选择D1直接经过E1点的路径(D1-E1-F或D1-E1-E2-F)但他们的距离长也为4;D1直接经过E2,则由E2到达F点,路径(D1-E2-F)总距离也是为4;但同时别把D1
能通过的D2忽视了,经第四点可以知道D2到F的最短距离为2,而D1到D2的距离为1,所以总距离为3,
因此D1到F的最短路径为(D1-D2-E2-F)距离为3
经上述分析归纳出D端各点到达F的最短路径和距离为 D1到F的最短路径为(D1-D2-E2-F)总长度为3、 D2到F的最短线路是(D2-E2-F;)总长度为2、
D3到F的最短路线可为(D3-E1-F或D3-E1-E2-F)总长度为4、
前半部分
一、因为C端的点与其他点的联系比较多,所以先找出C端各点到F的最短路径。
1、首先对C1进行分析:C1与D端的各点能直接相连,同时与B端的B1,B2相连,之前已经分析过返回的可能性了,所以C1与F的最短路径必定是直接链接到D端的点。由于C1-D1的距离为2,C1-D2的距离为5,C1-D3的距离为3,再联系上述的“ D1到F的最短路径为(D1-D2-E2-F)总长度为3、 D2到F的最短线路是(D2-E2-F;)总长度为2、
D3到F的最短路线可为(D3-E1-F或D3-E1-E2-F)总长度为4、”
所以可以明确地找出C1到F的最短路径(C1- D1-D2-E2-F)总长度为5。
2、对于C2来说,理由也与C1的基本相同,分析:C2-D1的距离为1,C2-D2的距离为4,C2-D3的距离为2,同时也根据“
D1到F的最短路径为(D1-D2-E2-F)总长度为3、 D2到F的最短线路是(D2-E2-F;)总长度为2、
D3到F的最短路线可为(D3-E1-F或D3-E1-E2-F)总长度为4、”
所以也可以精确地找出C2到F的最短路径为(C2-D1-D2-E2-F)总长度为4。 二、再进一步的就是对B端的各点进行分析了,
1、先对B1进行分析,B1到达F端的的路线可以选择与C1或D1相连接,但“ D1到F的最短路径为(D1-D2-E2-F)总长度为3、 C1到F的最短路径(C1- D1-D2-E2-F)总长度为5” 而B1距离D1或距离C1的长度均为4,
所以可以分析出B1到达F的最短路径为(B1-D1-D2-E2-F)总长度为7。
2、再次是对B2点进行到达F的点进行比较了,与B2 的前方相连的就只有C1和C2了,而B2-C1的距离为1,B2-C2的距离为3,并且“ C1到F的最短路径(C1- D1-D2-E2-F)总长度为5、 C2到F的最短路径为(C2-D1-D2-E2-F)总长度为4、” 所以综合上述的情况可以比较出:
B2到达F的最短路径为(B2-C1- D1-D2-E2-F)总长度为6。
3、最后是对B3到F点的长度的比较,与B3的前方相连接的有点C1、C2、D3三个点,路径B3-C1的距离为3,B3-C2的路径为5,B3-D3的路径为3,同时“ C1到F的最短路径(C1- D1-D2-E2-F)总长度为5、 C2到F的最短路径为(C2-D1-D2-E2-F)总长度为4、
D3到F的最短路线可为(D3-E1-F或D3-E1-E2-F)总长度为4、”
因此经综合分析B3到达F最短的路径为(B3-D3-E1-F或B3-D3-E1-E2-F)总长度为7。 三、到最后的一个A点与B端的相连接了,为分析出A到达F端的最短路径,分别列出B端各点到达F点的最短路径为“
B1到达F的最短路径为(B1- D1-D2-E2-F)总长度为7、 B2到达F的最短路径为(B2-C1- D1-D2-E2-F)总长度为6、
B3到达F最短的路径为(B3-D3-E1-F或B3-D3-E1-E2-F)总长度为7、” 同时也因为路径A-B1的距离为3,A-B2的距离为2,A-B3的距离为1, 所以与综上的B端到达F点的最短距离比较可以得出: A端到达F点的最短路径为: (A-B2-C1- D1-D2-E2-F) (A-B3-D3-E1-F) (A-B3-D3-E1-E2-F)
这三条A-F的路径均为A-F的最短路径,最短路径长度为8。
方案二:
对于是否返回的分析:
如图可以看出只有B端才能跨越C端的点直接到达D端的,其余的各端点都是必须按照字母顺序一路下来。若如D端返回到C端或B端这是不可能的,因为这样无疑增加了路程,如图可以看出C端的点能到达D端的各个点,所以要求的直接命中想到达的该点;而D端出发去到E端后有图可以看出不可能再返回D端了,因为这只会增加路线的长度,而且E端的各点是相通的,也没必要再返回D端;同样B端到达C端或D端的,因为B2,B2到能直接到达C端的各点,只有B1只能到达C1,但B1它到D1的距离和B1点到C1的距离同样为4但也不可能经过C1后返回B端的,因为C1也是联系D端的各点,而且你要返回B段端,还不如在A端的时候就选择好一个理想的B点,这样距离会更加短。所以不能进行返回。
首先能找出一条从A点通向F点的路径,
一、在不返回的情况下,找出该点到下一个点的距离为最短的路径,然后如此延续下去直到到达F点; 1、从A点开始进行比较,可得出的路径为(A-B3-C1-D1-D2-E2-F)和(A-B3-D3-E1-E2-F);如下图所示:

