a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

最小生成樹算法之Prim算法

2020-01-26 15:01:23
字體:
來源:轉載
供稿:網友

本文介紹了最小生成樹的定義,Prim算法的實現步驟,通過簡單舉例實現了C語言編程。

1.什么是最小生成樹算法?
簡言之,就是給定一個具有n個頂點的加權的無相連通圖,用n-1條邊連接這n個頂點,并且使得連接之后的所有邊的權值之和最小。這就叫最小生成樹算法,最典型的兩種算法就是Kruskal算法和本文要講的Prim算法。

2.Prim算法的步驟是什么?
這就要涉及一些圖論的知識了。
a.假定圖的頂點集合為V,邊集合為E.
b.初始化點集合U={u}.//u為V中的任意選定的一點
c.從u的鄰接結點中選取一點v使這兩點之間的權重最小,然后將v加入集合U中.
d.從結點v出發,重復c步驟,直到V={}.

3.舉個例子來說明Prim算法的步驟:
一個簡單的加權拓撲圖如下所示

選取1為初始點,則按照上面所示的步驟訪問結點的順序依次次為:

則最終訪問結點的順序:1,3,4,2,5.
4.Prim算法的具體C語言編程實現:

#include <stdio.h>#include <cstdlib>#include<memory.h>const int Max =0x7fffffff;const int N=50; int n;int g[N][N],dis[N],visited[N]; int prim(){  int i,j;  int pos,min;  int ans=0;  memset(visited,0,sizeof(visited));  visited[1]=1;pos=1;  //assign a value to the dis[N] first  for(i=2;i<=n;i++)    dis[i]=g[pos][i];  for(i=1;i<n;i++)  {    min=Max;     for(j=1;j<=n;j++)    {      if(visited[j]==0&&min>dis[j])      {        min=dis[j];        pos=j;       }    }    printf("The node being traversed is :%d/n",pos);    ans+=min;    printf("The value of ans is %d/n",ans);    //mark the node    visited[pos]=1;    //update the weight    for(j=1;j<=n;j++)      if(visited[j]==0&&dis[j]>g[pos][j])        dis[j]=g[pos][j];  }  return ans;} int main(){  int i=1,j=1;  int ans=0;  int w;  printf("Please enter the number of the nodes:/n");  scanf("%d",&n);  for(i=1;i<=n;i++)    for(j=1;j<=n;j++)    {      if(i==j)        g[i][j]=0;      else        g[i][j]=Max;    }  printf("Please enter the number of the edges:/n");  int edgenum;  scanf("%d",&edgenum);  int v1,v2;  printf("Please enter the number and the corresponding weight:/n");  for(i=1;i<=edgenum;i++)  {    scanf("%d%d%d",&v1,&v2,&w);    g[v1][v2]=g[v2][v1]=w;  }  ans=prim();  printf("The sum of the weight of the edges is:%d/n",ans);  system("pause");  return 0;   }

5.程序運行后的結果截圖

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 波多野结衣一区三区 | 国产黄色在线观看 | 欧美成人一区二区三区片免费 | 精品久久久久一区二区三区 | 黄色一级片视频 | 日韩一区二区三区精品 | 亚洲综合在线播放 | 亚洲啊v在线 | 日本中文字幕在线观看 | 亚州av一区二区 | 亚洲精品3区 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 狠狠操麻豆 | 成人一区在线观看 | 欧洲成人在线观看 | 欧美在线一级 | 九色在线观看 | 麻豆一区 | 欧美自拍视频 | 园产精品久久久久久久7电影 | 成人欧美一区二区三区在线播放 | 网址你懂的在线观看 | 日韩av高清在线 | 男人的天堂视频网站 | 一区二区三区久久 | 91.成人天堂一区 | 超碰97免费在线 | 日韩亚洲视频在线观看 | 韩国精品主播一区二区在线观看 | 综合网在线 | 欧美日韩首页 | 老司机深夜福利在线观看 | 欧美视频在线观看一区 | 亚洲视频一区二区三区 | 狠狠躁日日躁夜夜躁东南亚 | 九九热精品免费视频 | 亚洲精品一区二区三区 | 欧美a级网站 | 国产精品美女久久久 | 狠狠做深爱婷婷综合一区 | 日本精品视频在线 |