日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

学妹,你要的C语言版AOE网络数据结构来了,就这么简单!

發(fā)布時間:2023/12/4 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学妹,你要的C语言版AOE网络数据结构来了,就这么简单! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • AOE關鍵路徑編程
  • AOE完整求解程序

AOE關鍵路徑編程


不難發(fā)現(xiàn)AOE圖最大特點是沒有回路,并且有向圖方向始終是從源點走向匯點,且源點匯點都是一個。

把圖1寫成鄰接矩陣文件,見文件P200G736.TXT,并在此復制G0.C到AOE.C,修改這個程序的讀文件名稱,使其正確讀出該文件的數(shù)據(jù)并構造圖。

分析圖1可知,該圖實際有以下路徑:

V1->V2->V5->V7->V9;
V1->V3->V5->V7->V9;
V1->V2->V5->V8->V9;
V1->V3->V5->V8->V9;
V1->V4->V6->V8->V9;

一共是5條路徑,這5條路徑上面的權值和最大者就是關鍵路徑。

很明顯,把上述5條路徑的V1合并成一個結點,則可以看這個結果實際是一個生成樹,這個生成樹上的結點或許是重復的,但要全部走完,則結果肯定是這樣的一棵樹,這樣的樹我們這里成為全路徑生成樹,或許N多教材沒這個稱謂,但要編程求解該問題則必然是要先解出該樹來、然后累計求和每個子樹上的權值和。

C#的程序上很容易做到這個樹,這個解就是:

這樣的樹,實際是一種特殊的深度優(yōu)先遍歷生成的結果。

回顧我們在普通的圖上做的深度優(yōu)先遍歷,由于一般意義上的圖中存在回路,所以我們需要一個Visited[]這樣的數(shù)組、標記已經(jīng)走過的頂點,從而制止了在一個回路上無限循環(huán),但我們分析AOE圖則不難發(fā)現(xiàn):我們不需要標記已經(jīng)走過的頂點,深度優(yōu)先遍歷也可以順利從源點到匯點走完。

手工完成這樣的遍歷不是問題,所以我們可以編寫出以下的程序來遍歷:

void AOETrav (struct Graph *G,int n) {int i;if(G==NULL) return;printf("%d\t%s\n",n,G->pV[n]);for(i=0;i<G->num;i++)if(G->pA[n][i]!=0)AOETrav(G,i); }

對照我們前面的深度優(yōu)先遍歷函數(shù):

void DFS(struct Graph *G,int n) {int i;if(G==NULL) return;if(n<0||n>G->num) return;G->Visited[n]=1;printf("%s ",G->pV[n]); for(i=0;i<G->num;i++)if(G->pA[n][i]!=0&&G->Visited[i]!=1) DFS(G,i); }

執(zhí)行AOE1.c程序,則結果是:

V1、 V2、V5、V7、 V9、V8、V9、V3、V5、V7、V9、 V8、V9、V4、V6、V8、V9

分析表1的程序以及結果不難發(fā)現(xiàn):

<1> 如AOETrav( )函數(shù)入口參數(shù)n是生成樹父結點的話、那么在第8行進入下一個頂點時所找到的第i個頂點、則就是第n個結點的孩子;

<2> 如果設到第n個結點的權值累計合是w,則該函數(shù)就是這樣的入口參數(shù):

void AOETrav (struct Graph *G,int n,int w)

有這樣的函數(shù)后,則在表1的第9行就是:

AOETrav(G,i, w+G->pA[n][i]);

也就是說:到第n個頂點的權值如果是w的話,則到第n個后的第i個頂點,其權值合計是:

w+A[n][i];

然后,我們設計一個雙親表示法的表格,按:

void AOETrav (struct Graph *G,int n,int w) {int i,nw;if(G==NULL) return;for(i=0;i<G->num;i++)if(G->pA[n][i]!=0){nw=w+G->pA[n][i]; printf("%d\t%d\t%s\t%d\n",i,n,G->pV[i],nw);AOETrav(G,i,nw);} }

修改main()函數(shù),使其從第0個頂點開始,就是:

main() {int i,j;struct Stack *S;struct Graph *G;G=GraphCreat("p200G736.txt");printf("頂點名稱:\n");for(i=0;i<G->num;i++)printf("%s\t",G->pV[i]);printf("\n鄰接矩陣:\n");for(i=0;i<G->num;i++) {for(j=0;j<G->num;j++)printf("%d\t",G->pA[i][j]);printf("\n");}printf("\n");printf("ID\tPID\tV\tW\n");printf("%d\t%d\t%s\t%d\n",0,-1,G->pV[0],0);AOETrav(G,0,0); }

運行這個程序,會有以下結果:


至此,AOE的問題基本解決,查看表6,其最大權值是18,見上表第4行、第6行,如是第4行,則是V9,回溯PID=6到第3行V7、從V7取PID=4回到第2行V5、再從PID=1回到V2、從V2取PID=0回到V1,全路程就是:

V1、V2、V5、V7、V9,全路程權值合計是18

同理在第6行也有一條路徑:

V1、V3、V5、V8、V9,全路程權值和也是18,這也是一條關鍵路徑。

表6需要注意的是:由于這個樹上、一個結點可能出現(xiàn)在好幾個子樹上,所以父結點編號要尋找上面最近的結點編號。

AOE完整求解程序

上述解法、對小的AOE圖是可行的,但在大的圖上,很明顯對表6也需要進行編程處理,所以一個完整的AOE處理程序,還需要設計一個順序表、保存表6的結果,然后通過順序表求解出完整的計算結果。這個工作就留給同學們自己解決。

AOE2.c是通過一種簡單的方式、把各個路徑上的權值累計合計和路徑顯示出來的程序,請同學們自己分析。

總結

以上是生活随笔為你收集整理的学妹,你要的C语言版AOE网络数据结构来了,就这么简单!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女在线不卡 | 中文字幕一区二区三区手机版 | 污污的视频在线免费观看 | 97超级碰碰人妻中文字幕 | 日本视频免费 | 中文有码av | 蜜臀av性久久久久蜜臀aⅴ | 男人免费视频 | 不卡精品 | 九一亚色 | 欧洲做受高潮免费看 | 中国一级大黄大黄大色毛片 | 成人在线国产 | 99热在线免费 | 久久人妻少妇嫩草av蜜桃 | 寡妇激情做爰呻吟 | 草草影院网址 | 午夜免费播放观看在线视频 | 91av在线网站 | 国产三级国产精品 | 操极品女神 | 波多野结衣调教 | 夜色网| 日批在线视频 | 视频一区二区欧美 | 美女一二区 | 欧美黄色免费 | 色综合a | 久久女人天堂 | 亚洲国产中文字幕在线观看 | 国产后入清纯学生妹 | 国产一区二区精品在线 | 天天爱天天操 | 国产又粗又长又硬免费视频 | 岛国精品在线 | 久久久久亚洲精品中文字幕 | 牛牛精品一区二区 | 国产激情第一页 | 污视频网站免费在线观看 | 欧美色图亚洲色 | 国产色视频在线 | 精品国自产拍在线观看 | 91视频国产免费 | 精品人妻一区二区三区日产乱码 | 亚洲激情在线观看 | 国产靠逼视频 | www.呦呦 | 香港三级日本三级 | 欧美 变态 另类 人妖 | 国产麻豆91 | avtt亚洲天堂 | 日韩欧美国产一区二区在线观看 | 无套内谢少妇高潮免费 | 亚洲精品日韩综合观看成人91 | 色视频网址 | 欧美日韩视频在线观看一区 | 97精品自拍| 黄色免费网站视频 | 免费一级片 | 国产又粗又长视频 | 青娱乐国产在线视频 | youjizz欧美 | 国产99在线 | 日韩精品视频免费看 | 乡村乱淫| 少妇捆绑紧缚av | 99激情视频 | 国产激情视频在线 | 人妻精品无码一区二区三区 | 欧美成人短视频 | 欧美无吗| 免费黄色网址在线 | 日韩资源在线观看 | 亚洲精视频| 久久中文字幕国产 | 亚洲精品自拍视频 | 午夜久久久久 | 中文在线天堂网 | 久久99国产精品久久99 | 3d动漫精品啪啪一区二区三区免费 | wwwxxx在线播放 | 亚洲综合色一区二区 | 国产传媒在线视频 | 欧美一区二区三区免费在线观看 | 91精品国产高清91久久久久久 | 久久精品国产一区二区 | 日韩城人免费 | 特级性生活片 | 女人下面无遮挡 | 又大又硬又爽免费视频 | 好吊色在线观看 | 超污视频网站 | av高清 | 99riav1国产精品视频 | 99久久精| 天天干天天摸天天操 | 高清无码一区二区在线观看吞精 | 毛片在哪里看 | 婷婷深爱网 |