最小生成树之prim算法讲解.pptx
文本预览下载声明
算法导论;问题简介;Prim算法;void?prim(int?n,?Type **c)??
{??
????Typelowcost[MAX];??
????int?clost[max];??
bool s[max]; s[1]=true;
????????for?(i?=?2;?i?=?n;?i++)??
????{??
????????lowcost[i]?=?c[1][i];??
????????clost[i]?=?1;??s[i]=false;
????}????
????for?(i?=?1;?i?n;?i++)??
????{??
????????Type min?=? inf;?
??????? int j=1;??
????????for?(int k=?2;?k=?n;?k++)??
????????{??
????????????if?(lowcost[k]??min??!s[k])??
????????????{??min?=?lowcost[k]? j=k;??}??
????????}??
????????cout??“j??’’?closet[j]??endl;??
????????s[j]=true;
????????
????????;算法过程详解;一. 初始化
在Prim算法中,最小生成树的起点设置为1.
此时S={1},由于S中只含有点1,故此时 lowcost[i]=c[1][i],Closet[i]=1:
Lowcoset[1]=0, Lowcoset[2]=6,
Lowcoset[3]=1, Lowcoset[4]=5,
Lowcoset[5]=max, Lowcoset[6]=max,
(max表示无直接连线)
;二.Lowcost 第一次循环 ;三. 更新lowcost数组;四. Lowcost数组第二次循环;五. Lowcost更新;;最终得到最小生成树S={1,3,6,4,2,5};
显示全部