先设置一个集合 [ B , C , D , E , F , G ] [B,C,D,E,F,G] [B,C,D,E,F,G]
我们要做的就是把数据填上去,上面这个集合最后要写的就是A点到以上这些点的最短距离。
当前在A点,可以找到的距离如下:
[ 15 , 2 , 12 , ? , ? , ? ] [15,2,12,?,?,?] [15,2,12,?,?,?]
你看,A点连着的点只有三个,B,C,D,我们先把这些已知的距离写上。
我们确定了C点的数据
从上面的集合看,最短的地方是C点,好,那我们跳到C点。
当前在C点,我们假如发现了更短的路径则覆盖掉原来的数据。
我们不难发现,从C点 → \rightarrow →F点 → \rightarrow →D点比直接从A点 → \rightarrow →D点要快,所以,我们把D处的数据12换成(2+4+5=11)。
另外,此时,在C点,可以到达E,F点
依次类推有集合如下:
[ 15 , 2 , 11 , 10 , 6 , ? ] [15,2,11,10,6,?] [15,2,11,10,6,?]
此时,除了C点外,最短的就是A → \rightarrow →F了,所以,接下来是以F为起步
至此,我们确定了B,C,D,F点的数据
我们发现A → \rightarrow →F → \rightarrow →G是6+10=16,但是,A → \rightarrow →F → \rightarrow →D → \rightarrow →G是6+5+3=14,因此我们更倾向于后者。
在F处没有发现比从C出发更快的路径,因此,此时集合:
[ 15 , 2 , 11 , 10 , 6 , 14 ] [15,2,11,10,6,14] [15,2,11,10,6,14]
至此,全部点已经确定了
主要是贪心算法的思想,我们着眼于,我们走到最近的点,到达目标一直都选择更近的路径。