国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      改進(jìn)迪杰斯特拉算法的兩點(diǎn)間最短路徑搜索方法與流程

      文檔序號(hào):11778302閱讀:1178來(lái)源:國(guó)知局

      本發(fā)明涉及電力系統(tǒng)網(wǎng)絡(luò)、道路交通、通信網(wǎng)絡(luò)等領(lǐng)域,具體地說(shuō),涉及一種改進(jìn)迪杰斯特拉算法的兩點(diǎn)間最短路徑搜索方法。



      背景技術(shù):

      求取任意兩點(diǎn)間的最短路徑,是所有求解路徑問(wèn)題的基礎(chǔ),問(wèn)題的目標(biāo)是找到圖中任意兩個(gè)頂點(diǎn)之間的最短路徑。它在電力系統(tǒng)網(wǎng)絡(luò)、道路交通、通信網(wǎng)絡(luò)尋優(yōu)等領(lǐng)域具有廣泛的用途。

      對(duì)于兩點(diǎn)間的最短路徑計(jì)算問(wèn)題,國(guó)際上采用較多的方法主要是dijkstra算法(迪杰斯特拉算法),此算法可以找出網(wǎng)絡(luò)中從一點(diǎn)到其余各點(diǎn)間的最短路徑。dijkstra算法是由荷蘭計(jì)算機(jī)科學(xué)家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是從一個(gè)頂點(diǎn)到其余各頂點(diǎn)的最短路徑算法,解決的是有向圖中最短路徑問(wèn)題。迪杰斯特拉算法主要特點(diǎn)是以起始點(diǎn)為中心向外層層擴(kuò)展,直到擴(kuò)展到終點(diǎn)為止。

      1、dijkstra算法思想:

      按路徑長(zhǎng)度遞增次序產(chǎn)生算法:

      把頂點(diǎn)集合v分成兩組:

      (1)s:已求出的頂點(diǎn)的集合(初始時(shí)只含有源點(diǎn)v0)

      (2)v-s=t:尚未確定的頂點(diǎn)集合

      將t中頂點(diǎn)按遞增的次序加入到s中,保證:

      (1)從源點(diǎn)v0到s中其他各頂點(diǎn)的長(zhǎng)度都不大于從v0到t中任何頂點(diǎn)的最短路徑長(zhǎng)度

      (2)每個(gè)頂點(diǎn)對(duì)應(yīng)一個(gè)距離值

      s中頂點(diǎn):從v0到此頂點(diǎn)的長(zhǎng)度

      t中頂點(diǎn):從v0到此頂點(diǎn)的只包括s中頂點(diǎn)作中間頂點(diǎn)的最短路徑長(zhǎng)度

      依據(jù):可以證明v0到t中頂點(diǎn)vk的,或是從v0到vk的直接路徑的權(quán)值;或是從v0經(jīng)s中頂點(diǎn)到vk的路徑權(quán)值之和

      2、算法步驟如下(以搜索v0到v1最短路徑為例):

      建立拓?fù)浣Y(jié)構(gòu)圖g={v,e}

      (1)初始時(shí)令s={v0},t=v-s={其余頂點(diǎn)},t中頂點(diǎn)對(duì)應(yīng)的距離值

      若存在<v0,vi>,d(v0,vi)為<v0,vi>弧上的權(quán)值

      若不存在<v0,vi>,d(v0,vi)為∞

      (2)從t中選取一個(gè)與s中頂點(diǎn)有關(guān)聯(lián)邊且權(quán)值最小的頂點(diǎn)w,加入到s中

      (3)對(duì)其余t中頂點(diǎn)的距離值進(jìn)行修改:若加進(jìn)w作中間頂點(diǎn),從v0到vi的距離值縮短,則修改此距離值

      重復(fù)上述步驟2、3,直到s中包含所有頂點(diǎn),即w=vi為止。此時(shí)v0到v1距離即兩個(gè)節(jié)點(diǎn)間最短距離。搜索過(guò)程,距離值變化時(shí)歷經(jīng)的節(jié)點(diǎn)及路徑,即為兩點(diǎn)間最短路徑。

      現(xiàn)有dijkstra算法每次將頂點(diǎn)放入s中時(shí)候,搜索都需要對(duì)t中剩余的全部節(jié)點(diǎn)進(jìn)行分析處理,計(jì)算量大。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明旨在克服現(xiàn)有迪杰斯特拉算法的不足,提供一種改進(jìn)迪杰斯特拉算法的兩點(diǎn)間最短路徑搜索方法,基于鄰接矩陣進(jìn)行路徑分析避免了不相連節(jié)點(diǎn)的無(wú)用計(jì)算過(guò)程,有效減小計(jì)算量同時(shí)保證了搜索路徑最短,既可以準(zhǔn)確確定最短路徑及距離,也能提高運(yùn)算速度。

      本發(fā)明所述的一種改進(jìn)迪杰斯特拉算法的兩點(diǎn)間最短路徑搜索方法,包括如下步驟:

      1)引入了圖論思想中的鄰接矩陣,矩陣中第i行第j列元素表示頂點(diǎn)i和頂點(diǎn)j的連接關(guān)系,當(dāng)頂點(diǎn)i可由拓?fù)浣Y(jié)構(gòu)圖某一條邊直接到達(dá)頂點(diǎn)j時(shí),矩陣第i行第j列的元素為1;否則元素為0,

      利用鄰接矩陣對(duì)搜索過(guò)程進(jìn)行輔助,即每次確定了某一頂點(diǎn)v到起始頂點(diǎn)的最短距離后,都查找鄰接矩陣中,頂點(diǎn)v所對(duì)應(yīng)的行中元素為1的列;

      2)只對(duì)步驟1)元素為1的列所對(duì)應(yīng)的且最短路徑未知的頂點(diǎn)的距離值進(jìn)行計(jì)算分析,有效降低計(jì)算量。

      優(yōu)選地,所述圖論思想中的鄰接矩陣,即利用圖論知識(shí)構(gòu)造頂點(diǎn)之間的連接關(guān)系,定義圖中頂點(diǎn)集合為v,邊集合為e,建立鄰接矩陣a,a可表示不同頂點(diǎn)之間的相鄰關(guān)系;

      對(duì)于有n個(gè)頂點(diǎn)的拓?fù)浣Y(jié)構(gòu)圖來(lái)說(shuō),鄰接矩陣a為一個(gè)n×n的方陣,行列均為頂點(diǎn)的排列,對(duì)應(yīng)的第i行第j列元素表示頂點(diǎn)i和頂點(diǎn)j的連接關(guān)系,當(dāng)頂點(diǎn)i可由某條邊直接到達(dá)頂點(diǎn)j時(shí),鄰接矩陣a中對(duì)應(yīng)位置的元素為1;否則鄰接矩陣對(duì)應(yīng)位置元素為0;即a中元素可表示為:

      優(yōu)選地,選取某頂點(diǎn)v0作為起始頂點(diǎn),v1作為終止頂點(diǎn),以求取v0到v1之間的最短路徑,

      步驟1:取網(wǎng)絡(luò)中所有節(jié)點(diǎn)形成頂點(diǎn)集v,連接這些頂點(diǎn)的線路構(gòu)成集合e,由頂點(diǎn)集v和線路集e構(gòu)成拓?fù)浣Y(jié)構(gòu)圖,記為g(v,e),并建立鄰接矩陣a;

      步驟2:建立集合s和u,初始時(shí),s只包含源點(diǎn)(起始頂點(diǎn)),即s={v0},v0的距離為0,u包含除v0外的其他頂點(diǎn),即:u={其余頂點(diǎn)},查找矩陣a中v0所在行,若a中第v0行vi列數(shù)值為1,則u中頂點(diǎn)vi到v0距離值有權(quán)值,權(quán)值即為相連線路的長(zhǎng)度;若a中第v0行vi列數(shù)值為0,則vi到v0距離值權(quán)值為∞;

      步驟3:從u中選取一個(gè)距離權(quán)值最小的頂點(diǎn)vk,把vk加入s中,選定的距離lk就是v0到vk的最短路徑長(zhǎng)度;

      步驟4:查找矩陣a中vk所在行中元素為1的頂點(diǎn),如果頂點(diǎn)vm在集合u中,則以vk為新考慮的中間點(diǎn),修改vm距離;設(shè)vk與vm連接線路的長(zhǎng)度為lkm,若從源點(diǎn)v0到vm的距離lm,經(jīng)過(guò)頂點(diǎn)vk,lm=lk+lkm比原來(lái)距離短,則修改頂點(diǎn)vm的距離值為較短的值;

      步驟5:重復(fù)步驟3和4直到所有頂點(diǎn)都包含在s中,此時(shí)v0到v1的距離數(shù)值即為兩點(diǎn)間最短路徑長(zhǎng)度;所述距離數(shù)值產(chǎn)生過(guò)程歷經(jīng)的節(jié)點(diǎn)及線路,即為兩點(diǎn)間最短路徑。

      現(xiàn)有迪杰斯特拉算法在計(jì)算兩點(diǎn)間最短距離時(shí),每從剩余頂點(diǎn)集合中選取頂點(diǎn),并放入已知距離的頂點(diǎn)集合中時(shí),都需要對(duì)剩下所有頂點(diǎn)的距離權(quán)值進(jìn)行計(jì)算分析。本發(fā)明引入了圖論思想中的鄰接矩陣,就兩點(diǎn)間最短路徑的搜索過(guò)程進(jìn)行了改進(jìn),結(jié)合圖論矩陣思想,每次查找已知距離頂點(diǎn)所對(duì)應(yīng)的行中元素為1的列,并只對(duì)這些列所對(duì)應(yīng)的頂點(diǎn)距離值進(jìn)行計(jì)算分析,有效降低計(jì)算量。

      附圖說(shuō)明

      通過(guò)結(jié)合下面附圖對(duì)其實(shí)施例進(jìn)行描述,本發(fā)明的上述特征和技術(shù)優(yōu)點(diǎn)將會(huì)變得更加清楚和容易理解。

      圖1是本發(fā)明實(shí)施例所示的5節(jié)點(diǎn)有向拓?fù)浣Y(jié)構(gòu)圖。

      具體實(shí)施方式

      下面將參考附圖來(lái)描述本發(fā)明所述的實(shí)施例。本領(lǐng)域的普通技術(shù)人員可以認(rèn)識(shí)到,在不偏離本發(fā)明的精神和范圍的情況下,可以用各種不同的方式或其組合對(duì)所描述的實(shí)施例進(jìn)行修正。因此,附圖和描述在本質(zhì)上是說(shuō)明性的,而不是用于限制權(quán)利要求的保護(hù)范圍。此外,在本說(shuō)明書中,附圖未按比例畫出,并且相同的附圖標(biāo)記表示相同的部分。

      下面結(jié)合圖1來(lái)詳細(xì)說(shuō)明本實(shí)施例。以下通過(guò)本發(fā)明所提方法應(yīng)用到圖中所示網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)圖中,說(shuō)明該方法的應(yīng)用。

      圖論是數(shù)學(xué)的一個(gè)分支,它以圖為研究對(duì)象,研究頂點(diǎn)和邊組成的圖形的數(shù)學(xué)理論和方法。鄰接矩陣可以清楚表示頂點(diǎn)之間的連接關(guān)系,矩陣中第i行第j列元素表示頂點(diǎn)i和頂點(diǎn)j的連接關(guān)系,當(dāng)頂點(diǎn)i可由圖中某一條邊直接到達(dá)頂點(diǎn)j時(shí),矩陣第i行第j列的元素為1;否則元素為0。

      選取頂點(diǎn)0作為起始頂點(diǎn),1作為終止頂點(diǎn),以求取0到1之間的最短路徑為例。

      步驟1:取網(wǎng)絡(luò)中所有節(jié)點(diǎn)形成頂點(diǎn)集v。連接這些頂點(diǎn)的線路構(gòu)成集合e。由頂點(diǎn)集v和線路集e構(gòu)成拓?fù)浣Y(jié)構(gòu)圖,記為g(v,e),并建立鄰接矩陣a:

      步驟2:建立集合s和u。初始時(shí),s只包含源點(diǎn),即s={0},距離為0。u包含除0外的其他頂點(diǎn),即:u={1,2,3,4},查找矩陣a中0所在行,頂點(diǎn)1,2,4對(duì)應(yīng)列數(shù)值為1,則頂點(diǎn)1,2,4距離值有權(quán)值,分別為100,30,10。其余頂點(diǎn)距離值權(quán)值為∞。

      步驟3:從u中選取一個(gè)距離權(quán)值最小的頂點(diǎn)4,把4加入s中,4到0的最短路徑長(zhǎng)度為10。

      步驟4:查找矩陣a中頂點(diǎn)4所在行中元素為1的頂點(diǎn),為頂點(diǎn)3。以4為新考慮的中間點(diǎn),修改3距離;4與3連接線路的長(zhǎng)度為50,從源點(diǎn)0到3的距離50+10=60比原來(lái)距離∞短,修改頂點(diǎn)3的距離值為60。

      步驟5:從u中選取一個(gè)距離權(quán)值最小的頂點(diǎn)2,把2加入s中,2到0的最短路徑長(zhǎng)度為30。

      步驟6:查找矩陣a中頂點(diǎn)2所在行中元素為1的列,對(duì)應(yīng)為頂點(diǎn)1,3。以2為新考慮的中間點(diǎn),判斷是否修改距離:2與1連接線路的長(zhǎng)度為60,從源點(diǎn)0到1的距離30+60=90比原來(lái)距離100短,修改頂點(diǎn)1的距離值為90;2與3連接線路的長(zhǎng)度為60,從源點(diǎn)0到3的距離30+60=90比原來(lái)距離60長(zhǎng),頂點(diǎn)3距離值不作修改。

      步驟7:從u中選取一個(gè)距離權(quán)值最小的頂點(diǎn)3,把3加入s中,3到0的最短路徑長(zhǎng)度為60。

      步驟8:查找矩陣a中頂點(diǎn)3所在行中元素為1的頂點(diǎn),為頂點(diǎn)1。以3為新考慮的中間點(diǎn),判斷是否修改距離:3與1連接線路的長(zhǎng)度為10,從源點(diǎn)0到1的距離60+10=70比原來(lái)距離90短,修改頂點(diǎn)1的距離值為70。

      步驟9:從u中選取一個(gè)距離權(quán)值最小的頂點(diǎn)1,把1加入s中,1到0的最短路徑長(zhǎng)度為70。搜索過(guò)程,該距離值產(chǎn)生過(guò)程中歷經(jīng)的節(jié)點(diǎn)為0-4-3-1,即為該兩點(diǎn)間最短路徑。

      本發(fā)明引入了圖論思想中的鄰接矩陣,每次從剩余頂點(diǎn)集合中選取頂點(diǎn),并放入已知距離的頂點(diǎn)集合中時(shí),都查找鄰接矩陣中,該頂點(diǎn)所對(duì)應(yīng)的行中元素為1的列,并只對(duì)這些列所對(duì)應(yīng)的頂點(diǎn)距離值進(jìn)行計(jì)算分析,有效降低計(jì)算量。

      本發(fā)明依據(jù)圖論中的鄰接矩陣原理,依靠鄰接矩陣得到不同頂點(diǎn)的相鄰關(guān)系。本發(fā)明僅對(duì)已知距離頂點(diǎn)的相鄰頂點(diǎn)進(jìn)行分析,基于鄰接矩陣進(jìn)行路徑分析避免了不相連節(jié)點(diǎn)的無(wú)用計(jì)算過(guò)程,有效減小計(jì)算量同時(shí)保證了搜索路徑最短,既可以準(zhǔn)確確定最短路徑及距離,也能提高運(yùn)算速度。

      以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1