普利姆和克鲁斯卡尔的故事

普利姆喜欢选择近的路铺。
克鲁斯卡尔专挑短的桥架。
有一天他们同时拿到了一张地图,有n个地点,m条边,(m<=n*(n-1)/2),任意两个地点之间的距离为vi(i<=m),要求用自己的方式,消耗最少的人力物力,使地图中的各个地方的可达。
普利姆和克鲁斯卡尔的故事_第1张图片
1. 普利姆的故事
普利姆喜欢从点出发。普利姆经过长途跋涉,终于到达地图中的某一地点A。核心思想W:新修建一条路,必须得能增加一个达到的地点。能到达的地点Y(数组)。通过地图知道,从A可以到达的地点只有B,C(这里可以是任意多个)。但是A,B之间的距离比A,C之间的距离大。好吧,我就先把路从A修到B吧。在B点,查看地图,从B可以到达的地方有D,E,F(可以任意多)。现在可以选择修建的路有BD,BE,BF还有在A没有选择的AC。
经过比较BD,BE,BF,AC四条路中AC最短,先修AC。(第二条路,无法出现不满足核心思想W)站在C点查看可以选择修建的路有CF,CG。
目前可以选择的有BD,BE,BF,CF,CG,最短的是BE。Y(A,B,C)。站在E点看,新增的有ED,EH。
目前可以选择的有BD,BF,CF,CG,ED,EH,最短的是ED。Y(A,B,C,E)。站在D点看,新增的有DH。
目前可以选择的有BD,BF,CF,CG,EH,DH,最短的是BF。Y(A,B,C,D,E)。站在F点看,新增的有FI,FH。
目前可以选择的有BD,CF,CG,EH,DH,FI,FH,最短的是CF,BD,FI。Y(A,B,C,D,E,F)。CF,BD不满足W。FI最短,站在I点看,新增的有IH,IG。
目前可以选择的有CG,EH,DH,FH,IH,IG。最短的是IG。Y(A,B,C,D,E,F,I)。站在G点看,新增的有GH。
目前可以选择的有CG,EH,DH,FH,IH,GH。最短的是IH。Y(A,B,C,D,E,F,I)。站在H点看,没有新增。完成。
核心思想W:新修建一条路,必须得能增加一个达到的地点。
脑海闪现:
从一个点出发,画树。
可选择的距离为虚线,一闪一闪。
可选择的距离升序排列,从最短的开始。
选择的短距离不到达已经到过的地点。
选择的短距离画上实线。
已经到过的地点包含所有地图地点,停止。
2. 克鲁斯卡尔的传奇
克鲁斯卡尔喜欢从最短的距离考虑。 他先选择最从最短的桥开始架设。距离从短到长排序的序列N。确定的地点指向的数组 J核心思想K:新建的桥,桥的两端最终连接的地点不能是同一个地点。
未考虑的最短的桥1,连接IG。IG都没有连接地点,符合核心思想K。I最终连接G,J ={IG}
未考虑的最短的桥2,连接DE。DE都没有连接地点,符合核心思想K。J = {DE,IG}
未考虑的最短的桥3,连接AB。AB都没有连接地点,符合核心思想K。J = {AB,DE,IG}
未考虑的最短的桥4,连接AC。B(起点A连接的地点B),C没有连接的地点,符合核心思想K。BC。J = {AB,BC,DE,IG}
未考虑的最短的桥5,连接BE。C(起点B连接的地点C),E没有连接的地点,符合核心思想K。CE。J = {AB,BC,CE,DE,IG}
未考虑的最短的桥6,连接BF。E(起点B连接的地点B-C-E),F没有连接的地点,符合核心思想K。EF。J = {AB,BC,CE,DE,EF ,IG}。
未考虑的最短的桥7,连接HI。H没有连接点,G(终点I连接的地点G),符合核心思想K。HG。{AB,BC,CE,DE,EF ,IG,HG}。
未考虑的最短的桥8,连接FC。F没有连接点,F(终点C连接的地点E-F),不符合核心思想K。J = {AB,BC,CE,DE,EF ,IG,HG}。
未考虑的最短的桥9,连接BD。F(起点B连接的地点C-E——F),F(终点D连接的地点E-F),不符合核心思想K。。J = {AB,BC,CE,DE,EF ,IG,HG}。
未考虑的最短的桥10,连接FI。F没有连接点,G没有连接点,符合核心思想K。FG。J = {AB,BC,CE,DE,EF ,FG,IG,HG}。
未考虑的最短的桥11,连接HG。G(起点H连接的地点G),G没有连接点,不符合核心思想K。J = {AB,BC,CE,DE,EF ,IG,HG}。
依次类推,直到考虑所有距离。
或者 a个顶点可以用a-1条线段连接起来。停止。
核心思想K:新建的桥,桥的两端最终连接的地点不能是同一个地点。
没有图例,看着很难理解。可惜这个富文本编辑,不支持插入截图或者我没有找到。

你可能感兴趣的:(普利姆和克鲁斯卡尔的故事)