




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
Dijkstra算法尋找網(wǎng)絡(luò)中最短路徑1.實驗?zāi)繕?biāo)給定一個nxn的網(wǎng)絡(luò)鄰接矩陣network[n][n]試?yán)肈ijkstra算法求解任意兩點之間的最短路徑矩陣path[n][n]以及最短路徑長度plength[n][n]。本實驗中網(wǎng)絡(luò)矩陣借助隨機數(shù)函數(shù)rand()生成符合條件矩陣,并將其存入network.txt文本文檔,以便于在實驗結(jié)束后進行進一步的驗證,此后即借助Dijkstra算法的TP標(biāo)號法可得最短路徑矩陣path[n][n]并將其存入path.txt文檔,之后可根據(jù)path矩陣求出最短路徑長度矩陣plength[n][n]矩陣并將其存入pathlength.txt文檔。最后給出plength矩陣中路徑最長的路徑長度并存入到length.txt文檔中。代碼實現(xiàn)#include<iostream>#include<fstream>#include<stdlib.h>#include<string>#include<stdio.h>#include<time.h>#include<math.h>#definemaximum62555usingnamespace::std;intInt_Random(intL){return(unsignedint)(rand()<<8Arand())%L;}voidInit_matrix_network(int**network,intn);//初始化網(wǎng)絡(luò)矩陣voidOutput_matrix_path(int**path,intn);//輸出path矩陣到path.txt文件voidOutput_matrix_pathlength(int**path,intn);//輸出網(wǎng)路中i到j(luò)節(jié)點之間的最短路徑長度到pathlength.txt文件voidDijkstra(intn,intv,int**network,int**path);intmain(void)
{inti,j;intSIZE=10;//SIZE值自己指定int**network=newint*[SIZE];for(i=0;i<SIZE;i++)network[i]=newint[SIZE];for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){network[i][j]=0;}}Init_matrix_network(network,SIZE);int**path=newint*[SIZE];for(i=0;i<SIZE;i++)path[i]newint[SIZE];for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){path[i][j]0;}}for(i=0;i<SIZE;++i){Dijkstra(SIZE,i,network,path);}Output_matrix_path(path,SIZE);Output_matrix_pathlength(path,SIZE);for(i=0;i<SIZE;i++){delete[]network[i];delete[]path[i];}delete[]network;delete[]path;return0;}voidInit_matrix_network(int**network,intn){ofstreamcoutfile("network.txt");srand((unsignedint)time(NULL));inti,j;
intSIZE1=n;intrand1=0;for(i=1;i<SIZE1;i++){rand1=Int_Random(i);network[i][rand1]1;network[rand1][i]1;}for(i=0;i<SIZE1;i++){for(j=0;j<SIZE1;j++){coutfile<<network[i][j]<"";}coutfile<endl;}coutfile.close();}voidOutput_matrix_path(int**path,intn){inti,j;ofstreamcoutfile3("path.txt");for(i=0;i<n;++i){for(j=0;j<n;++j){coutfile3<<path[i][j]<"";}coutfile3<endl;}coutfile3.close();}voidOutput_matrix_pathlength(int**path,intn){inti,j,node;intlength,maxlen=0;ofstreamcoutfile("pathlength.txt");intplength[n][n];for(i=0;i<n;++i){for(j=0;j<n;++j){
node=j;length0;while(path[i][node]!=-1){length++;node=path[i][node];}plength[i][j]=length;if(maxlen<length)maxlen=length;}}for(i=0;i<n;++i){for(j=0;j<n;++j){coutfile<<plength[i][j]<"";}coutfile<endl;}coutfile.close();ofstreamcoutfilel("length.txt");〃輸出最長路徑長度到到length.txt文件coutfile1<<maxlen<<endl;coutfile1.close();}voidDijkstra(intn,intv,int**network,int**path){intdist[n];intset[n];for(inti=0;i<n;++i){set[i]=0;if(network[v][i]!=0){dist[i]=network[v][i];path[v][i]=v;}else{dist[i]=maximum;path[v][i]=-1;}}set[v]=1;
dist[v]=0;path[v][v]=-1;intmin,v1;for(intk=0;k<n-1;++k){min=maximum;for(intj=0;j<n;++j) //T標(biāo)號中尋找最小值過程{if(set[j]==0&&dist[j]<min){min=dist[j];v1=j;}}set[v1]=1;//將找到的最小T標(biāo)號變?yōu)镻標(biāo)號for(inti=0;i<n;++i)//以變?yōu)镻標(biāo)號后更新網(wǎng)絡(luò){if(set[i]==0&&network[v1][i]&&dist[v1]+network[v1][i]<dist[i]){dist[i]=dist[v1]+network[v1][i];path[v][i]=v1//設(shè)置i節(jié)點到v節(jié)點路徑中i節(jié)點的前一個節(jié)點}}}}實驗演示通過程序運行可得如下結(jié)果:為便于觀察此處假定圖中有10個節(jié)點,通過程序運行可得如下結(jié)果:1) Network「10]「10]:2)/irmt/1/Dijkstra/h1$catnetwork,txt000(i00000000000100102)/irmt/1/Dijkstra/h1$catnetwork,txt000(i000000000001001000010000000001000000001000010000000010000001000001000000001010-100000000tooo1一450088moo1-00066003333-133333h8888888881a-T333333331t一9366666661k-66j2222221i-722D333331-3333catpath,txt說明:path矩陣第i行表示第i個節(jié)點到其余節(jié)點的路徑,要尋找第i個節(jié)點至第j個節(jié)點的最短路徑只需第i行數(shù)據(jù)即可。例:要尋找第0個和第9個節(jié)點的最短路徑只需要看path[10][10]數(shù)組的第0行即可得最短路徑為:3)4)Maxlength:Pathlength[10][10]:3)4)Maxlength:Pathlength[
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育大數(shù)據(jù)提升教學(xué)質(zhì)量的創(chuàng)新路徑
- 如何運用教育技術(shù)提升企業(yè)內(nèi)訓(xùn)中的混合式學(xué)習(xí)效果研究報告
- 2025年房屋整體質(zhì)量無損檢測分析系統(tǒng)合作協(xié)議書
- 學(xué)生心理健康與學(xué)校教育的融合發(fā)展
- 商業(yè)視角下的數(shù)字化教學(xué)設(shè)計與實施策略
- 醫(yī)療心理輔導(dǎo)在疾病康復(fù)中的作用
- 提升教學(xué)質(zhì)量5G網(wǎng)絡(luò)在教育技術(shù)中的應(yīng)用策略
- 合同與信息管理類
- 教育園區(qū)的辦公空間與智慧圖書館建設(shè)
- 基于AI的教學(xué)管理系統(tǒng)開發(fā)與實踐研究報告
- 最新《工會基礎(chǔ)知識》試題庫及答案1000題【完美打印版】
- 禮品禮金登記表
- 【新】2019-2020成都市石室中學(xué)北湖校區(qū)初升高自主招生數(shù)學(xué)【4套】模擬試卷【含解析】
- 《文明禮貌我最棒》班會課件
- 意外受傷賠償協(xié)議書的格式
- PE管閉水試驗表
- 山東省教師職稱改革實施方案
- 《河南省企業(yè)安全風(fēng)險辨識管控與隱患排查治理雙重預(yù)防體系建設(shè)導(dǎo)則(試用)》
- 生產(chǎn)過程檢驗記錄表
- 規(guī)劃放線報告材料樣本
- 完整版佛教葬禮儀式
評論
0/150
提交評論