003-普利姆算法求解最小生成树的简单实例

来源:互联网 发布:淘宝店铺装修页尾 编辑:程序博客网 时间:2024/06/05 07:19

普利姆Prim算法求解最短路径的简单实例

给定6个节点,这6的节点中间有十条相连的通路,有的是直接相连,有的则是间接相连。如图所示:

图中的6个节点被分别标注为{P1,P2,P3,P4,P5,P6},它们之间的连接也有各自的权重,要想求出最小生成树,如果使用普利姆算法的话,应该如下操作:
1.我们设置lowMoney【i】为“以i为终点的时候最小的权重,也就是最小的花费”,当它等于0的时候代表该点已经被选中;

2.destination【i】为对应上面最小权重的时候,是谁在与之对应,也就是说谁将作为起点与之对应;

3.“*”可以看做无穷大,也就是没有直接的通路;

1.首先将P1看作基本点,这个时候就有

lowMoney【1】 = 0;
 destina【1】 = 0;
lowMoney【2】 = 6;
destina【2】 = 1;
lowMoney【3】 = 5;
destina【3】 = 1;
lowMoney【4】 = 1;
destina【4】 = 1;
lowMoney【5】 = * ;
destina【5】 = 4;
lowMoney【6】 = * ; 
destina【6】 = 4;
我们不难看出,除了自身以外,lowMoney【4】 为最小值,所以我们将它选定, 选定之后设置为lowMoney【4】 = 0;
则就会有:

lowMoney【1】 = 0;
 destina【1】 = 0;
lowMoney【2】 = 5
destina【2】 = 4
lowMoney【3】 = 5;
destina【3】 = 1;
lowMoney【4】 =0
destina【4】 =0
lowMoney【5】 =6
destina【5】 = 4;
lowMoney【6】 = 4
destina【6】 = 4;
我们不难看出,除了自身以外,lowMoney【6】 为最小值,所以我们将它选定,选定之后设置为lowMoney【6】 = 0;
则就会有:

lowMoney【1】 = 0;
 destina【1】 = 0;
lowMoney【2】 =5
destina【2】 =4
lowMoney【3】 =2
destina【3】 =6
lowMoney【4】 =0
destina【4】 =0
lowMoney【5】 =6
destina【5】 = 4;
lowMoney【6】 =0
destina【6】 =0
我们不难看出,除了自身以外,lowMoney【3】 为最小值,所以我们将它选定,选定之后设置为lowMoney【3】 = 0;
则就会有:
lowMoney【1】 = 0;
 destina【1】 = 0;
lowMoney【2】 =5
destina【2】 =4
lowMoney【3】 = 0
destina【3】 =0
lowMoney【4】 =0
destina【4】 =0
lowMoney【5】 =6 ; 
destina【5】 = 4;
lowMoney【6】 =0 ; 
destina【6】 =0
我们不难看出,除了自身以外,lowMoney【2】 为最小值,所以我们将它选定,选定之后设置为lowMoney【2】 = 0;
则就会有:

lowMoney【1】 = 0;
 destina【1】 = 0;
lowMoney【2】 =0
 destina【2】 =0
lowMoney【3】 = 0
 destina【3】 =0
lowMoney【4】 =0
 destina【4】 =0
lowMoney【5】 =6
 destina【5】 = 4;
lowMoney【6】 =0 ; 
destina【6】 =0
我们不难看出,除了自身以外,lowMoney【5】 为最小值,所以我们将它选定,选定之后设置为lowMoney【5】 = 0;
则就会有:


lowMoney【1】 = 0;
 destina【1】 = 0;
lowMoney【2】 =0; 
destina【2】 =0
lowMoney【3】 = 0
 destina【3】 =0
lowMoney【4】 =0; 
destina【4】 =0
lowMoney【5】 =0
 destina【5】 =0
lowMoney【6】 =0
 destina【6】 =0
至此,我们已经找到了最小生成树,这个算法就算是结束了,所以呢,最后的最小权值也就是最小花费就是(1+2+3+4+5=15),这就是普利姆算法求解最小生成树的全部过程。


1 0
原创粉丝点击