專利名稱:大型網(wǎng)絡(luò)單源的最短路的線性計(jì)算方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種利用計(jì)算機(jī)程序計(jì)算大型網(wǎng)絡(luò)中的最短路方法。
目前在城市交通,運(yùn)輸調(diào)度和公路導(dǎo)航中經(jīng)常需要對一個大型網(wǎng)絡(luò)進(jìn)行快速反復(fù)連續(xù)計(jì)算兩點(diǎn)間的最短路程。就申請人所知,目前還沒有能滿足這些要求的計(jì)算方法。
本發(fā)明的目的是提供一種大型網(wǎng)絡(luò)單源的最短路的精確的線性計(jì)算方法,以彌補(bǔ)現(xiàn)有計(jì)算方法的上述不足。
本發(fā)明以標(biāo)明相鄰兩地之間距離的圖為基礎(chǔ),并采用下述的計(jì)算方法設(shè)計(jì)計(jì)算機(jī)程序進(jìn)行計(jì)算大寫字母表示集合。設(shè)M為一網(wǎng)絡(luò)(即連通的簡單的加權(quán)圖),E(M)為M的邊集合,V(M)為M的點(diǎn)集合,邊e=(u,v)的權(quán)記作d(e),也記作d(u,v),其中u,v是邊e的兩個端點(diǎn)。d(v)表示點(diǎn)v的權(quán),也表示v點(diǎn)到起點(diǎn)x的某一條路的距離。令ρ=min{d(e)|e∈E(M)},r=2,ω'=r*ρ。
第一步令d(x)=-1,設(shè)N(x)={v1,v2,…,vk}為x的鄰接點(diǎn)集,令d(vi)=d(x,vi) i=1,2,…,k。
再令X=N(x),ω=ω',min=min{d(v)|v∈X}。如果min>ω,則ω=min。
進(jìn)入第二步。
第二步對X中的每一個滿足(按下標(biāo)順序進(jìn)行)d(vi)≤ω,i∈{1,2,…,k}。
的點(diǎn)包括后來并入的點(diǎn)的鄰接點(diǎn)集N(vi)={u1,u2,…,uk}的每一點(diǎn)處理如下如果d(uj)≠0,且d(uj)>d(vi)+d(vi,uj)則d(uj)=d(vi)+d(vi,uj)如果d(uj)=0則d(uj)=d(vi)+d(vi,uj),k=k+1,
vk=uj,X=X∪{vk}。
當(dāng)X中的點(diǎn)全部處理完,包括后來并入的點(diǎn),然后進(jìn)入第三步。
第三步劃分X為Y和Z,其中Y={d(v)|d(v)≤ω,v∈X},Z={d(v)|d(v)>ω,v∈X}。
如果止點(diǎn)y∈Y,則算法終止。否則令X=Z,min=min{d(v)|v∈X},ω=ω+ω’。
如果min>ω則ω=min。
設(shè)Z={v1,v2,…,vk},轉(zhuǎn)入第二步。
說明1.本算法亦可用于有向圖。
2.如果網(wǎng)絡(luò)的點(diǎn)的分布“均勻”,min變量可以不用。
3.如果算法終止于M的點(diǎn)數(shù),則可以求出起點(diǎn)到其他各點(diǎn)的最短路。
4.網(wǎng)絡(luò)數(shù)據(jù)的存放,最好用兩個關(guān)聯(lián)矩陣,如A(m*k),B(m*k)其中m=‖M‖,即M的點(diǎn)數(shù),k=max{dgree(v)|v∈V(M)},ai,j為標(biāo)號i的點(diǎn)同第j個相關(guān)聯(lián)的點(diǎn)的標(biāo)號,bi,j為標(biāo)號i的點(diǎn)同第j個相關(guān)聯(lián)的點(diǎn)的邊權(quán),可供參考。
5.當(dāng)r=4時(shí),應(yīng)在第二步中插入以下內(nèi)容如果d(uj)≠0,且d(uj)<d(vi)+d(vi,uj),且d(vi)>d(uj)+d(uj,vi),則d(vi)=d(uj)+d(uj,vi),且對于s=1,2,…,j-1,如果d(u )>d(vi)+d(vi,u ),則d(u )=d(vi)+d(vi,u )。
本發(fā)明的優(yōu)點(diǎn)能對一個大型網(wǎng)絡(luò)進(jìn)行快速反復(fù)連續(xù)地計(jì)算兩點(diǎn)間的最短路。該算法用C語言編程,在AST P2-386SX/20機(jī)上對300個點(diǎn)450條邊的網(wǎng)絡(luò)(山東公路網(wǎng)絡(luò)的1/6,復(fù)蓋區(qū)域約500個點(diǎn)左右。)進(jìn)行計(jì)算,僅用0.11秒(包括路程所經(jīng)過的地點(diǎn)和距離)。
實(shí)施例下面以實(shí)施例和附圖進(jìn)一步說明本發(fā)明。
附
圖1為本算法的程序框圖。
附圖2為山東榮成附近公路地圖。
以山東榮成附近公路地圖為例,設(shè)其中龍須島為起點(diǎn),崖頭為止點(diǎn)。ρ=7,r=2,ω’=14。
第一步d(龍須島)=-1。
N(龍須島)={馬家疃}。
d(馬家疃)=18。
X={馬家疃}。
ω=14,min=18,ω=18。
進(jìn)入第二步。
第二步N(馬家疃)={泊于家,埠柳村,馬道河,龍須島}。
d(泊于家)=d(馬家疃)+d(馬家疃,泊于家)=38。
X=X∪{泊于家}。
d(埠柳村)=d(馬家疃)+d(馬家疃,埠柳村)=30。
X=X∪{埠柳村}。
d(馬道河)=d(馬家疃)+d(馬家疃,馬道河)=28。
X=X∪{馬道河}。
X={馬家疃,泊于家,埠柳村,馬道河}。
進(jìn)入第三步。
第三步X={泊于家,埠柳村,馬道河}。
min=30,ω=32。
進(jìn)入第二步。
第二步N(埠柳村)={孟格莊,崖西頭,馬家疃}。
d(孟格莊)=d(埠柳村)+d(埠柳村,孟格莊)=45。
X=X∪{孟格莊}。
d(崖西頭)=d(埠柳村)+d(埠柳村,崖西頭)=43。
X=X∪{崖西頭}。
N(馬道河)={馬家疃,俚島}。
d(俚島)=d(馬道河)+d(馬道河,俚島)=35。
X=X∪{俚島}。
X={泊于家,埠柳村,馬道河,孟格莊,崖西頭,俚島}。
進(jìn)入第三步。
第三步X={泊于家 孟格莊 崖西頭 俚島}。
min=35,ω=46。
進(jìn)入第二步。
第二步N(泊于家)={馬家疃,孟格莊}。
N(孟格莊)={泊于家,埠柳村,崖西頭}。
N(崖西頭)={孟格莊,埠柳村,隆峰村,陰子夼}。
d(隆峰村)=d(崖西頭)+d(崖西頭,隆峰村)=51。
X=X∪{隆峰村}。
d(陰子夼)=d(崖西頭)+d(崖西頭,陰子夼)=50。
X=X∪{陰子夼}。
N(俚島)={馬道河,隆峰村,尋山}。
d(隆峰村)=d(俚島)+d(俚島,隆峰村)=49。
d(尋山)=d(俚島)+d(俚島,尋山)=47。
X=X∪{尋山}。
X={泊于家,孟格莊,崖西頭,俚島,隆峰村,陰子夼,尋山}。
進(jìn)入第三步。
第三步X={隆峰村,陰子夼,尋山}。
min=47,ω=60。
進(jìn)入第二步。
第二步N(隆峰村)={崖西頭,崖頭,俚島}。
d(崖頭)=d(隆峰村)+d(隆峰村,崖頭)=60。
X=X∪{崖西頭}。
N(陰子夼)={崖西頭,崖頭}。
N(尋山)={俚島,崖頭}。
d(崖頭)=d(尋山)+d(尋山,崖頭)=59。
X={隆峰村,陰子夼,尋山,崖頭}。
進(jìn)入第三步。
第三步X=O,(空集)。
算法終止。
從龍須島到崖頭最短路為龍須島,馬家疃,馬道河,俚島,尋山,崖頭。全長59公里。
權(quán)利要求
1.一種大型網(wǎng)絡(luò)單源的最短路的線性計(jì)算方法,其特征以標(biāo)明相鄰兩地之間距離的圖為基礎(chǔ),并采用下述步驟進(jìn)行計(jì)算第一步令d(x)=-1,設(shè)N(x)={v1,v2,…,vk}為x的鄰接點(diǎn)集,令d(vi)=d(x,vi) i=1,2,…,k。再令X=N(X),ω=ω’,min=min{d(v)|v∈X}。如果min>ω,則ω=min。進(jìn)入第二步。第二步對X中的每一個滿足(按下標(biāo)順序進(jìn)行)d(vi)≤ω,i∈{1,2,…,k}。的點(diǎn)包括后來并入的點(diǎn)的鄰接點(diǎn)集N(vi)={u1,u2,…,uk}的每一點(diǎn)處理如下如果d(uj)≠0,且d(uj)>d(vi)+d(vi,uj)則d(uj)=d(vi)+d(vi,uj)如果d(uj)=0則d(uj)=d(vi)+d(vi,uj),k=k+1,vk=uj,X=X∪{vk}。當(dāng)X中的點(diǎn)全部處理完,包括后來并入的點(diǎn),然后進(jìn)入第三步。第三步劃分X為Y和Z,其中Y={d(v)|d(v)≤ω,v∈X},Z={d(v)|d(v)>ω,v∈X}。如果止點(diǎn)y∈Y,則算法終止。否則令X=Z,min=min{d(v)|v∈X},ω=ω+ω’。如果min>ω則ω=min。設(shè)Z={v1,v2,…,vk},轉(zhuǎn)入第二步。
全文摘要
一種大型網(wǎng)絡(luò)單源的最短路的線性算法,其特征以標(biāo)明相鄰兩地之間距離的圖為基礎(chǔ),并采用下述步驟計(jì)算第一步d(x)=-1,d(vi)=d(x,vi),X=N(x),第二步對X中d(vi)≤ω的N(vi)如果d(uj)≠0且d(uj)>d(vi)+d(vi,uj)則 d(uj)=d(vi)+d(vi,uj),如果d(uj)=0 則 d=(uj)=d(vi)+d(vi,uj),第三步,劃分X為Y和Z,如果y∈Y終止,否則X=Z,ω=ω+ω′轉(zhuǎn)第二步,其優(yōu)點(diǎn)能對一個大型網(wǎng)絡(luò)快速反復(fù)連續(xù)地計(jì)算最短路。
文檔編號G06F19/00GK1110815SQ9311522
公開日1995年10月25日 申請日期1993年11月7日 優(yōu)先權(quán)日1993年11月7日
發(fā)明者趙世麟 申請人:趙世麟