




全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
圖論李一鵬 PB12001076 數(shù)學(xué)系 第五組1. 實(shí)驗(yàn)題目:最小生成樹和最短路徑2. 實(shí)驗(yàn)?zāi)康模菏煜D的鄰接表儲存,深優(yōu)廣優(yōu),最小生成樹和最短路徑求解思想。3. 實(shí)驗(yàn)內(nèi)容:令狐沖要到松山少林寺救任盈盈,但左冷禪在山上設(shè)下n個陣營。兩個陣營之間可能有道路相通,也可能沒有。而每兩個道路相通陣營i和j之間設(shè)有Wij個小兵來埋伏令狐沖。藍(lán)鳳凰被劇透了這一信息并順利拿到了標(biāo)有陣營、道路和小兵數(shù)目的地圖,然后告訴了令狐沖。令狐沖救人心切,希望藍(lán)鳳凰能幫他找出一條小兵數(shù)目最少的路通往少林寺。到了少林寺后,令狐沖記恨于左冷禪,就想搗毀所有陣營,卻不想浪費(fèi)時間在虐沒經(jīng)驗(yàn)值的1級小兵上。此時左冷禪的小兵都重新按原來的陣勢埋伏在原來位置。請大家?guī)蛶兔?,設(shè)計(jì)一個滿足令狐沖兩個計(jì)劃的程序吧。4. 算法分析:最短路徑有Dijkstra和Floyd兩種算法,由于本實(shí)驗(yàn)并不要求求出任意兩個結(jié)點(diǎn)的最短路徑,只要求從一個結(jié)點(diǎn)到另外結(jié)點(diǎn)的最短路徑,故采用Dijkstra算法:每次選擇一個未訪問的離起點(diǎn)最近的結(jié)點(diǎn),訪問該結(jié)點(diǎn)并用其更新到其他結(jié)點(diǎn)的路徑。動態(tài)方程:si=min(si,sk+dki);用adjvex來記錄該結(jié)點(diǎn)的到起點(diǎn)的最短路徑中經(jīng)過的第一個結(jié)點(diǎn)。最小生成樹有Prim和Kruskal兩種算法,由于本實(shí)驗(yàn)采用鄰接表儲存故使用Prim算法:每次選擇一個離已訪問點(diǎn)集最近的結(jié)點(diǎn),訪問并加入已訪問點(diǎn)集。用adjvex來記錄父結(jié)點(diǎn)。5. 程序清單:#include#include#define new1 (node*)malloc(sizeof(node)typedef struct graphnodeint v,weight;struct graphnode *next;node;node *a100;int m;char visited100;void create()/創(chuàng)建鄰接表int b,c,d,i;node *p;printf(Input your number of node:n);scanf(%d,&m);for(i=0;iweight=0;ai-next=0;printf(Input your edges and end with -1:nTwo nodes and the weightn);scanf(%d,&c);while(c!=-1)scanf(%d%d,&b,&d);p=new1;p-v=b;p-weight=d;p-next=ac-next;ac-next=p;ac-weight+;/頭結(jié)點(diǎn)不動的頭插法p=new1;p-v=c;p-weight=d;p-next=ab-next;ab-next=p;ab-weight+;/頭結(jié)點(diǎn)的weight用于記錄結(jié)點(diǎn)度數(shù)scanf(%d,&c);void deep(int n)/深度優(yōu)先搜索node *p;if(visitedn)return;/visited用于記錄當(dāng)前結(jié)點(diǎn)是否已被訪問printf(%dt,n);visitedn=1;for(p=an-next;p;p=p-next)deep(p-v);void breadth()/廣度優(yōu)先搜索int open1100;/隊(duì)列char opened100;/用于記錄當(dāng)前結(jié)點(diǎn)是否曾入隊(duì)int i,front,rear,n;node *p;front=rear=0;for(i=0;im;i+)openedi=0;for(i=0;im;i+)/適用于連通或非連通圖if(openedi) continue;open1+rear=i;/入隊(duì)openedi=1;while(frontnext;p;p=p-next)if(!openedp-v)open1+rear=p-v;/入隊(duì)openedp-v=1;shortload(int s,int load,int n)/用Dijkstra算法求最短路徑int i,j,k,min,finished;node *p;for(i=0;inext;p;p=p-next)sp-v=p-weight;loadp-v=n;visitedn=1;for(i=1;im;i+)min=32767;finished=1;for(j=0;jm;j+)if(!visitedj&sj!=-1) if(sjnext;p;p=p-next)/用找到的結(jié)點(diǎn)k更新n到其他未被訪問的結(jié)點(diǎn)的路程if(!visitedp-v)if(sp-v=-1)sp-v=sk+p-weight;loadp-v=k;else if(sp-vsk+p-weight)sp-v=sk+p-weight;loadp-v=k;void mintree()int i,j,k,min,ad100,sum,lc100;node *p;for(i=0;inext;p;p=p-next)adp-v=0;lcp-v=p-weight;for(i=1;im;i+)min=32767;for(j=1;jm;j+)/找出離已訪問結(jié)點(diǎn)集合最近的結(jié)點(diǎn)kif(lcj&lcj!=-1)if(lcjnext;p;p=p-next)/把k加入已訪問結(jié)點(diǎn)集并更新lcif(lcp-v)if(lcp-v=-1)adp-v=k;lcp-v=p-weight;/ad記錄父結(jié)點(diǎn),lc記錄其余結(jié)點(diǎn)的到已訪問結(jié)點(diǎn)集的最短路else if(lcp-vp-weight)lcp-v=p-weight;adp-v=k;printf(%dn,sum);printf(Here is the tree:n);/輸出樹for(i=0;im;i+)printf(%dtsons:t,i);for(j=1;jm;j+)if(adj=i)printf(%dt,j);putchar(10);main()int s100,load100;int i,v1,v2,k,sum2;create();for(i=0;im;i+)visitedi=0;printf(Here is the depth first search:n);for(i=0;im;i+)if(!visitedi)deep(i);/適用于連通或非連通圖putchar(10);printf(Here is the breadth first search:n);breadth();putchar(10);printf(Now we can find the short load between two nodes.n);printf(Input the two nodes you want to find.n);printf(We will begin in the first node and end in the second node.n); scanf(%d%d,&v1,&v2);shortload(s,load,v1);k=v2;sum2=0;printf(Here is the lowest cost load of every node to v1:n);for(i=0;im;i+)printf(%dt%dn,i,si);printf(Here is the load:n);while(k!=v1)printf(%dt,k);k=loadk;printf(%dn,v1);printf(Here is the lowest cost:n);printf(%dn,sv2);printf(Here is the lowest sum weight of th
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《銀滿倉系列介紹》課件
- 導(dǎo)數(shù)與微分課件
- 2025年自愿撤銷合同的承諾聲明
- 《管道連接技術(shù)教程》課件
- 2025年氣動元件、系統(tǒng)及裝置合作協(xié)議書
- 頂管施工的試題及答案
- 第6章一元一次方程導(dǎo)學(xué)案
- 2025圖書委托出版合同樣本
- 導(dǎo)學(xué)案 第二節(jié) 科學(xué)探究 物質(zhì)的比熱容
- 《白酒品鑒流程》課件
- TCAWAORG 032-2024 家庭醫(yī)生遠(yuǎn)程與互聯(lián)網(wǎng)健康服務(wù)規(guī)范
- 2025年春季學(xué)期 形勢與政策講稿第五講-從教育大國邁向教育強(qiáng)國
- 大型活動安保人員配置措施
- 腦小血管病共識-課件
- 大華單元門口機(jī)使用說明書
- 新疆烏魯木齊市米東區(qū)2024-2025學(xué)年九年級上學(xué)期期中數(shù)學(xué)試卷(含答案)
- 第一章整式的乘法單元(教學(xué)設(shè)計(jì))-七年級數(shù)學(xué)下冊同步備課系列(湘教版2024)
- 水井清理淤泥施工方案
- 2024年黑龍江哈爾濱市中考英語真題卷及答案解析
- 【MOOC】道路交通安全-河海大學(xué) 中國大學(xué)慕課MOOC答案
- 地方融資平臺債務(wù)和政府中長期支出事項(xiàng)監(jiān)測平臺操作手冊-單位
評論
0/150
提交評論