离散数学最小生成树Word文档格式.docx
- 文档编号:14007224
- 上传时间:2022-10-16
- 格式:DOCX
- 页数:8
- 大小:23.69KB
离散数学最小生成树Word文档格式.docx
《离散数学最小生成树Word文档格式.docx》由会员分享,可在线阅读,更多相关《离散数学最小生成树Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
2)在白色边中,挑选一条权最小的边,使其与红色边不形成圈,将该白色边涂红;
3)重复2)直到有n-1条红色边,这n-1条红色边便构成最小生成树T的边集合。
Prim算法
假设V是图中顶点的集合,E是图中边的集合,TE为最小生成树中的边的集合,则prim算法通过以下步骤可以得到最小生成树:
1)初始化:
U={u0},TE={f}。
此步骤设立一个只有结点u0的结点集U和一个空的边集TE作为最小生成树的初始形态,在随后的算法执行中,这个形态会不断的发生变化,直到得到最小生成树为止。
2)在所有u∈U,v∈V-U的边(u,v)∈E中,找一条权最小的边(u0,v0),将此边加进集合TE中,并将此边的非U中顶点加入U中。
此步骤的功能是在边集E中找一条边,要求这条边满足以下条件:
首先边的两个顶点要分别在顶点集合U和V-U中,其次边的权要最小。
找到这条边以后,把这条边放到边集TE中,并把这条边上不在U中的那个顶点加入到U中。
这一步骤在算法中应执行多次,每执行一次,集合TE和U都将发生变化,分别增加一条边和一个顶点,因此,TE和U是两个动态的集合,这一点在理解算法时要密切注意。
3)如果U=V,则算法结束;
否则重复步骤2。
可以把本步骤看成循环终止条件。
我们可以算出当U=V时,步骤2共执行了n-1次(设n为图中顶点的数目),TE中也增加了n-1条边,这n-1条边就是需要求出的最小生成树的边。
实验结果:
附:
程序源代码:
#include<
iostream.h>
string.h>
main()
{
system("
color9c"
);
cout<
<
"
请输入图的点数:
\n"
;
intn;
cin>
>
n;
charc1='
a'
系统自动生成点为:
inti,j,k;
c1;
for(i=1;
i<
i++)
"
(char)(c1+i);
inta[n][n];
\n请输入图的权矩阵:
for(i=0;
for(j=0;
j<
j++)
a[i][j];
\n\n此图的邻接矩阵为:
\n"
(char)(c1+i)<
"
endl;
{
if(a[i][j])
1"
else
0"
}
intm=0;
k=0;
if(a[i][j]&
&
j)
m++;
intb[m][3];
i++)//找出边和权
b[k][0]=i;
b[k][1]=j;
b[k++][2]=a[i][j];
intt;
m-1;
i++)//排序
for(j=i+1;
m;
if(b[i][2]>
b[j][2])
for(k=0;
k<
3;
k++)
t=b[i][k];
b[i][k]=b[j][k];
b[j][k]=t;
}
("
(char)(c1+b[i][0])<
(char)(c1+b[i][1])<
b[i][2]<
)"
intc[n-1][3],d[n];
c[0][k]=b[0][k];
d[0]=b[0][0];
d[1]=b[0][1];
k=1;
intk1=2,k2,k3,m1=0;
c[k][j]=b[i][j];
k++;
k3=k1;
for(k2=0;
k2<
k1;
k2++)
if(b[i][0]==d[k2])
m1++;
if(!
m1)
d[k1++]=b[i][0];
m1=0;
if(b[i][1]==d[k2])
d[k1++]=b[i][1];
if(k>
=k1)
k--;
k1=k3;
if(k==n)break;
用Kruskal算法得到的最小生成树为:
\n{"
intcount=0;
n-2;
(char)(c1+c[i][0])<
(char)(c1+c[i][1])<
),"
count+=c[i][2];
(char)(c1+c[n-1][0])<
(char)(c1+c[n-1][1])<
)}\n"
count+=c[n-1][2];
最小权和为:
count<
endl<
b[0][2]=0;
d[1]=b[0][1];
k1=2;
k2=0;
k3=0,m1=1;
while(k1<
=n)
if(b[i][2])
if(b[i][0]==d[j])
k2++;
if(b[i][1]==d[j])
k3++;
if(k2&
!
k3)
c[m1][k]=b[i][k];
b[i][2]=0;
k2=0;
gotoh;
elseif(!
k2&
k3=0;
k2=k3=0;
h:
用Prim算法得到的最小生成树为:
count=0;
pause"
}
WelcomeTo
Download!
欢迎您的下载,资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 离散数学 最小 生成