excel 求解最短路徑問題

excel 求解最短路徑問題

ID:26801435

大?。?82.00 KB

頁數(shù):4頁

時(shí)間:2018-11-29

excel 求解最短路徑問題_第1頁
excel 求解最短路徑問題_第2頁
excel 求解最短路徑問題_第3頁
excel 求解最短路徑問題_第4頁
資源描述:

《excel 求解最短路徑問題》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、Excel求解最短路徑問題金曉龍(廣東女子職業(yè)技術(shù)學(xué)院藝信系,廣東廣州511450)摘要:許多實(shí)際應(yīng)用問題都與最短路徑相關(guān),解決最短路徑問題通常采用圖論與計(jì)算機(jī)技術(shù)結(jié)合的方法,本文使用Excel的工作表和自定義宏函數(shù),采用Dijkstra算法和鏈表動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)解決最短路徑問題,并在Excel的VBA環(huán)境編程運(yùn)行。關(guān)鍵詞:Excel最短路徑鏈表Dijkstra算法中圖分類號(hào):TP311ExcelSolutionofShortestPathProblemJinXiaolong(GuangdongWomen’sPolytechnicCollege,Arta

2、ndInformationDepartment,Guangzhou511450,China)Abstract:Manypracticalapplicationproblemsarerelatedtotheshortestpathproblem.Themethodcombinedgraphtheorywithcomputertechnologyisusuallyadoptedtosolvetheshortestpathproblem.ThisarticledescribeshowtosolvetheshortestpathproblembyusingE

3、xcelworksheetandcustommacrofunctions,Dijkstraalgorithmandlinkedlistofdynamicdatastructure.Finally,allisprovedbyprogrammingandrunninginExcelVBA.Keywords:Excel;shortestpasth;dynamicarray;Dijkstraalgorithm1引言在實(shí)際應(yīng)用中,許多問題都與最短路徑有關(guān),如:物流路徑、交通導(dǎo)航、網(wǎng)絡(luò)路由、電力傳輸、綜合布線等,而且最短路徑還可抽象為許多其它的實(shí)際問題,如:最小

4、費(fèi)用、最短時(shí)間、最小負(fù)載、最少人員等,解決最短路徑問題通常采用圖論與計(jì)算機(jī)技術(shù)結(jié)合的方法。圖論是數(shù)學(xué)的一個(gè)分支,它以圖為研究對(duì)象,研究頂點(diǎn)和邊組成的圖形的數(shù)學(xué)理論和方法。Dijkstra算法是一種經(jīng)典的求最短路徑算法,它采用標(biāo)號(hào)法反復(fù)掃描網(wǎng)絡(luò)的節(jié)點(diǎn),尋找出最佳路徑。本文采用Dijkstra算法與鏈表數(shù)據(jù)結(jié)構(gòu)相結(jié)合,在Excel的VBA中編程實(shí)現(xiàn)最短路徑搜索。Excel是應(yīng)用廣泛的電子表格軟件,在其自帶的VBA環(huán)境里而非專門的編程環(huán)境里解決最短路徑問題,更具有一定的實(shí)際意義。由于在VBA中不能顯式使用指針,采用類實(shí)現(xiàn)鏈表數(shù)據(jù)結(jié)構(gòu)。2最短路徑問題給定一個(gè)

5、賦權(quán)的拓?fù)鋱DD=(V,A),V為頂點(diǎn)集,A為邊集,記D中每一條弧aij=(vi,vj)上的權(quán)為wij(aij)=wij。給定D中一個(gè)起點(diǎn)vs和vt終點(diǎn),設(shè)P是D中從vs到vt的一條路,則定義路P的權(quán)是P中所有弧的權(quán)之和,記為w(P),即:w(P)=∑wij。又若P1是D圖中vs到vt的一條路,且滿足w(P1)=min{w(P)},式中對(duì)D的所有從vs到vt的路P取最小,則稱P1為從vs到vt的最短路徑,w(P1)為從vs到vt的最短距離。3最短路徑算法最短路徑算法有多種,Dijkstra、Floyd、Kruskal等算法,其中Dijkstra是最常用

6、的求最短路徑的算法。Dijkstra算法核心思想就是采用逐節(jié)點(diǎn)擴(kuò)展的方式,確定各節(jié)點(diǎn)到起始點(diǎn)的最短距離。采用標(biāo)號(hào)法搜索各頂點(diǎn),標(biāo)號(hào)的目的就是區(qū)分該頂點(diǎn)是否已處理過。將頂點(diǎn)分為兩個(gè)頂點(diǎn)集,第一個(gè)為已處理頂點(diǎn)集B,第二個(gè)為未處理頂點(diǎn)集C,開始時(shí)B中只包括起始點(diǎn)vs,C中包括除起始點(diǎn)外的所有網(wǎng)絡(luò)節(jié)點(diǎn)。確定各頂點(diǎn)vi的D(vi)值,D(vi)值為已探索到vi到起始點(diǎn)vs的最小值,隨著搜索的不斷進(jìn)行,D(vi)會(huì)發(fā)生變化。搜索開始時(shí),D(vs)=0,與起始點(diǎn)相連的D(vi)為支路權(quán)值,不與起始點(diǎn)相連的D(vi)為+∞,然后,從C中選一個(gè)D(vi)最小的節(jié)點(diǎn),修

7、改與之相連的各節(jié)點(diǎn)的D(vi)值,將該節(jié)點(diǎn)從C中移到B中,記錄下被修改節(jié)點(diǎn)的前一節(jié)點(diǎn)信息,重復(fù)前面過程,直到所有的頂點(diǎn)均搜索。Dijkstra算法的具體步驟:①給vs以P標(biāo)號(hào),D(vs)=0,其余的各點(diǎn)為T標(biāo)號(hào)(P標(biāo)號(hào)表示節(jié)點(diǎn)在B集,T標(biāo)號(hào)表示節(jié)點(diǎn)在C集),T(vi)=+∞;②若vi為剛得到P標(biāo)號(hào)的點(diǎn),選擇T標(biāo)號(hào)點(diǎn)vj,進(jìn)行修改:D(vj)=min{D(vj),D(vi)+wij},記錄vi與vj關(guān)系;(wij為節(jié)點(diǎn)i、j支路權(quán)值)③在C集中選擇D(vi)最小的節(jié)點(diǎn)vi,給vi以P標(biāo)號(hào)重復(fù)②直到處理完所有節(jié)點(diǎn);④搜索完時(shí),所有節(jié)點(diǎn)的D值已確定,對(duì)應(yīng)所

8、求終點(diǎn)D值及前后節(jié)點(diǎn)關(guān)系可找到最短路徑。4路徑圖描述及鏈表結(jié)構(gòu)求圖1中節(jié)點(diǎn)間的最短路徑。5圖1帶權(quán)無向圖10

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。