本發(fā)明涉及連通圖遍歷算法和路徑圖生成領(lǐng)域,具體地說(shuō)是一種基于改進(jìn)的連通圖遍歷算法的路徑圖生成方法。
背景技術(shù):
近幾年來(lái),隨著人們生活水平的提高,汽車(chē)數(shù)量在家庭中急劇增加。在車(chē)輛出行的過(guò)程中,人們對(duì)于道路等級(jí)的要求大大提升,對(duì)于道路信息的需求也大幅度提高。對(duì)于道路信息的需求中,最基本的就是行車(chē)的路徑圖。目前一般的室外地圖已經(jīng)非常完善,可以通過(guò)電子地圖獲取路徑圖,通過(guò)GPS進(jìn)行導(dǎo)航,獲得出發(fā)地到目的地的最短路徑,道路上的超速、限速信息以及危險(xiǎn)地段提示等。但是GPS導(dǎo)航技術(shù)是基于已有的電子地圖并且在室外無(wú)遮擋的環(huán)境下才能進(jìn)行,所以當(dāng)前的電子地圖以及GPS導(dǎo)航存在室內(nèi)環(huán)境下,尤其是地下停車(chē)場(chǎng)內(nèi),具有一定的缺失。
現(xiàn)在的地下停車(chē)場(chǎng)的路徑圖大多數(shù)使用停車(chē)場(chǎng)建設(shè)時(shí)的規(guī)劃圖紙或者停車(chē)場(chǎng)建成后的人工繪制圖紙,更新困難并且修正效率低下,難以應(yīng)用于大規(guī)模的地下停車(chē)場(chǎng)路徑圖的創(chuàng)建中,更加無(wú)法與當(dāng)前的室外電子地圖銜接,以補(bǔ)充當(dāng)前電子地圖的缺失。此外,目前也有很多的室內(nèi)定位技術(shù),例如基于wifi、慣性定位等的室內(nèi)定位技術(shù),都能夠進(jìn)行室內(nèi)定位,但是這一類(lèi)的定位技術(shù)僅僅應(yīng)用于夠獲得目標(biāo)的位置信息,無(wú)法確定整個(gè)室內(nèi)路徑狀況。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明是為了克服現(xiàn)有技術(shù)存在的不足之處,提供一種基于改進(jìn)的連通圖遍歷算法的路徑圖生成方法,以期通過(guò)地下停車(chē)場(chǎng)內(nèi)改進(jìn)的路徑遍歷方法,來(lái)優(yōu)化地下停車(chē)場(chǎng)地圖的生成過(guò)程,使得地下停車(chē)場(chǎng)地圖的生成過(guò)程更加簡(jiǎn)潔化、高效化、規(guī)?;?,從而保證了地下停車(chē)場(chǎng)路徑圖與當(dāng)前的電子地圖互相銜接,更加豐富當(dāng)前電子地圖信息,為用戶(hù)的出行提供所需的路徑信息。
本發(fā)明為達(dá)到上述發(fā)明目的,采用如下技術(shù)方案:
本發(fā)明一種基于改進(jìn)的連通圖遍歷算法的路徑圖生成方法的特點(diǎn)是應(yīng)用于未知路徑圖的地下停車(chē)場(chǎng)中,并按如下步驟進(jìn)行:
步驟1、初始化連通圖,建立坐標(biāo)系;
步驟1.1、將地下停車(chē)場(chǎng)的未知路徑圖定義為連通圖G=(V,E),V表示頂點(diǎn)集;E表示邊集;定義頂點(diǎn)集V中任意一個(gè)頂點(diǎn)為vq,q表示頂點(diǎn)的數(shù)量;定義邊集E中任意一條邊為ek,k表示邊的數(shù)量;
步驟1.2、基于連通圖G,定義遍歷點(diǎn)集,則遍歷點(diǎn)集中所有遍歷點(diǎn)所組成的坐標(biāo)集合為W;遍歷點(diǎn)集中的所有遍歷點(diǎn)能組成連通圖G;
定義遍歷點(diǎn)集中每個(gè)遍歷點(diǎn)的度所組成的集合為N;定義集合N中任意一個(gè)遍歷點(diǎn)的度為n;
定義遍歷點(diǎn)集中每個(gè)遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量所組成的集合為M;定義集合M中任意一個(gè)遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量為m;
定義連通圖G的鄰接矩陣為A;
步驟1.3、以地下停車(chē)場(chǎng)的入口位置為原點(diǎn)O,以原點(diǎn)O為中心,并以地下停車(chē)場(chǎng)入口方向作為X軸正方向,以X軸方向向左旋轉(zhuǎn)90°的方向作為Y軸正方向,以向上垂直于平面XOY的方向?yàn)閆軸正方向,建立三維坐標(biāo)系O-XYZ;
步驟1.4、初始化連通圖G、遍歷點(diǎn)集W、所有遍歷點(diǎn)的度所組成的集合N、關(guān)聯(lián)邊數(shù)量所組成的集合M、鄰接矩陣A均為空集;
步驟2、基于當(dāng)前連通圖,在當(dāng)前遍歷點(diǎn)處,確定下一個(gè)遍歷點(diǎn)方向;
步驟2.1、定義遍歷次數(shù)為p;初始化p=1、q=1、k=1、Lk=0;
步驟2.2、以入口位置為第p次遍歷點(diǎn),遍歷的單位長(zhǎng)度為l;
步驟2.3、記錄第p次遍歷點(diǎn)的坐標(biāo)為wp;將第p次遍歷點(diǎn)加入到遍歷點(diǎn)集中,從而獲得更新后的遍歷點(diǎn)集和及其坐標(biāo)集合W′;獲取第p次遍歷點(diǎn)的度np;
步驟2.4、判斷p=1是否成立;若成立,則初始化第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp為np;若不成立,則初始化第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp為np-1;
步驟2.5、判斷在遍歷點(diǎn)集W中是否存在與第p次遍歷點(diǎn)的坐標(biāo)wp相同的遍歷點(diǎn)的坐標(biāo)wr;若存在,則將相同的遍歷點(diǎn)的度nr賦值給第p次遍歷點(diǎn)的度np,將相同的遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mr賦值給第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp;
若不存在,則第p次遍歷點(diǎn)的度np保持不變,第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp保持不變;
步驟2.6、將第p次遍歷點(diǎn)的度np加入到遍歷點(diǎn)度的集合N中,從而獲得更新后的遍歷點(diǎn)度的集合N′;將第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp加入到遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量集合M中,從而獲得更新后的遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量集合M′;
步驟2.7、根據(jù)第p次遍歷點(diǎn)的度np,判斷第p次遍歷點(diǎn)的類(lèi)型;
若第p次遍歷點(diǎn)的度np為2,則表示第p次遍歷點(diǎn)為邊ek上的點(diǎn);將第p次遍歷點(diǎn)加入到邊ek中,從而獲得更新后的邊e′k;并執(zhí)行步驟2.9;
若第p次遍歷點(diǎn)的度np不為2,則表示第p次遍歷點(diǎn)為頂點(diǎn);將第p次遍歷點(diǎn)的坐標(biāo)wp賦值給頂點(diǎn)vq的坐標(biāo),同時(shí)記錄下頂點(diǎn)vq所對(duì)應(yīng)的第p次遍歷點(diǎn)的遍歷次數(shù),從而獲得更新后的頂點(diǎn)集V′,將q+1賦值給q;并執(zhí)行步驟2.8;
步驟2.8、判斷更新后的頂點(diǎn)集V′中的頂點(diǎn)個(gè)數(shù)q是否小于3;
若q小于3,則保持邊ek不變,保持邊集E不變;
若q不小于3,由邊ek中的遍歷點(diǎn)個(gè)數(shù)計(jì)算獲得邊ek的長(zhǎng)度Lk;將邊ek加入到邊集E中,從而獲得更新后的邊集E′;由更新后的頂點(diǎn)集V′和更新后的邊集E′,更新當(dāng)前連通圖為Gk;將k+1賦值給k;計(jì)算更新后的頂點(diǎn)集V′中的各個(gè)頂點(diǎn)之間的長(zhǎng)度,從而更新鄰接矩陣為A′;
步驟2.9、根據(jù)第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp,判斷第p+1次遍歷點(diǎn)的方向;
若第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp不為0,則從第p次的遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊中隨機(jī)選取任一關(guān)聯(lián)邊的方向作為第p+1次遍歷點(diǎn)的方向;將mp-1賦值給mp,從而獲得再次更新的未遍歷的關(guān)聯(lián)邊數(shù)量集合M″,并轉(zhuǎn)步驟3;
若第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp為0,則判斷未遍歷的關(guān)聯(lián)邊數(shù)量集合M′中是否存在未遍歷的關(guān)聯(lián)邊數(shù)量不為0的其他頂點(diǎn);若存在,則轉(zhuǎn)步驟2.10;否則,終止遍歷,并根據(jù)前p次遍歷點(diǎn)的坐標(biāo)連接成地下停車(chē)場(chǎng)的路徑圖;
步驟2.10、根據(jù)更新后的鄰接矩陣A′,運(yùn)用最短路徑算法從頂點(diǎn)集V′中選取與第p次遍歷點(diǎn)距離最近且未遍歷的關(guān)聯(lián)邊數(shù)量不為0的頂點(diǎn)vs作為第p次遍歷點(diǎn),并將頂點(diǎn)vs的坐標(biāo)賦值給第p次遍歷點(diǎn)的坐標(biāo)wp,返回步驟2.3;
步驟3、從第p次遍歷點(diǎn)出發(fā),根據(jù)第p+1次遍歷點(diǎn)的方向,移動(dòng)單位長(zhǎng)度l的距離后達(dá)到第p+1次遍歷點(diǎn),通過(guò)慣性定位法獲得第p+1次遍歷點(diǎn)的坐標(biāo)wp+1;
步驟4、在第p+1次遍歷點(diǎn)處,判斷從第p次遍歷點(diǎn)出發(fā),移動(dòng)到第p+1次遍歷點(diǎn)路程中是否存在頂點(diǎn);
若存在,則從第p+1次遍歷點(diǎn)處移動(dòng)至相應(yīng)頂點(diǎn)處,并通過(guò)慣性定位法獲得相應(yīng)頂點(diǎn)的坐標(biāo),將相應(yīng)頂點(diǎn)作為第p+1次遍歷點(diǎn);
若不存在,第p+1次遍歷點(diǎn)保持不變;
步驟5、將p+1賦值給p,將W′賦值給W,將V′賦值給V,將N′賦值給N,將M″賦值給M,將A′賦值給A;并返回步驟2.3。
與已有技術(shù)相比,本發(fā)明的有益技術(shù)效果體現(xiàn)在:
1、本發(fā)明中運(yùn)用了改進(jìn)的連通圖遍歷算法,將生成地下停車(chē)場(chǎng)地圖的遍歷過(guò)程完全展現(xiàn),通過(guò)改進(jìn)運(yùn)籌學(xué)中的深度遍歷算法和廣度遍歷算法,形成了對(duì)于未知連通圖的新的遍歷算法,更加簡(jiǎn)潔、高效的遍歷地下停車(chē)場(chǎng),獲得路徑的坐標(biāo)信息和其他路徑相關(guān)信息,最終生成地下停車(chē)場(chǎng)地圖,從而保證了地下停車(chē)場(chǎng)路徑圖與當(dāng)前的電子地圖互相銜接,更加豐富當(dāng)前電子地圖信息,為用戶(hù)的出行提供所需的路徑信息。
2、本發(fā)明的步驟1.1中,將地下停車(chē)場(chǎng)的未知地圖抽象成連通圖,即可運(yùn)用連通圖的相關(guān)特性來(lái)優(yōu)化遍歷地下停車(chē)場(chǎng)的過(guò)程,更加高效的生成地下停車(chē)場(chǎng)路徑圖。
3、本發(fā)明的步驟1.3中,通過(guò)建立三維坐標(biāo)系,不僅僅描述了地下停車(chē)場(chǎng)徑圖在平面內(nèi)的特征,還可以凸顯路徑的空間變化。
4、本發(fā)明的步驟2.3中,通過(guò)運(yùn)用點(diǎn)的度的特性來(lái)判斷遍歷點(diǎn)的類(lèi)型,將不同類(lèi)型確的遍歷點(diǎn)分類(lèi),分別構(gòu)成連通圖的頂點(diǎn)和邊,繼而形成了連通圖,實(shí)現(xiàn)了遍歷過(guò)程中由點(diǎn)構(gòu)成邊,由邊和頂點(diǎn)構(gòu)成連通圖的逐步形成過(guò)程,使運(yùn)用改進(jìn)的連通圖遍歷算法的路徑圖生成過(guò)程具體化、結(jié)構(gòu)化。
5、本發(fā)明的步驟2.4中,定義遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量來(lái)確定下一個(gè)遍歷點(diǎn)的方向,使遍歷過(guò)程中下一個(gè)遍歷點(diǎn)可選擇方向的數(shù)量明確,每個(gè)遍歷點(diǎn)的選擇過(guò)程清晰明了。
6、本發(fā)明的步驟2.10中,通過(guò)定義的連通圖的鄰接矩陣?yán)米疃搪窂剿惴ǎ@得下一個(gè)遍歷點(diǎn)方向,有效減少了重復(fù)遍歷,提高了遍歷連通圖的效率。
附圖說(shuō)明
圖1為本發(fā)明流程圖;
圖2為本發(fā)明流程圖細(xì)節(jié)圖;
圖3為本發(fā)明實(shí)例中遍歷過(guò)程中隨機(jī)生成的路徑圖a;
圖4為本發(fā)明實(shí)例中遍歷過(guò)程中隨機(jī)生成的路徑圖b;
圖5為本發(fā)明實(shí)例中遍歷完成后的路徑圖。
具體實(shí)施方式
在應(yīng)用本方法生成路徑圖的過(guò)程,為了獲得相應(yīng)的數(shù)據(jù),需要一定的路徑圖生成設(shè)備。實(shí)例中以車(chē)輛作為載體,在車(chē)輛上裝有路徑圖生成所需的裝置,包括:?jiǎn)尉€(xiàn)激光雷達(dá)、廣角攝像頭、三軸加速度計(jì)、三軸陀螺儀、主控計(jì)算機(jī)和LED顯示屏。單線(xiàn)激光雷達(dá)掃描并獲取載體車(chē)輛所處的地下停車(chē)場(chǎng)內(nèi)的環(huán)境信息;廣角攝像頭,用于獲取載體車(chē)輛周?chē)牡孛鎴D像數(shù)據(jù);三軸加速度計(jì)和三軸陀螺儀屬于慣性定位裝置,用來(lái)采集載體車(chē)輛在地下停車(chē)場(chǎng)內(nèi)移動(dòng)時(shí)的三軸加速度和三軸角速度;主控計(jì)算機(jī),用于存儲(chǔ)單線(xiàn)激光雷達(dá)、廣角攝像頭、三軸加速度計(jì)和三軸陀螺儀采集的數(shù)據(jù),在采集數(shù)據(jù)后并對(duì)數(shù)據(jù)進(jìn)行處理,可以獲得載體車(chē)輛在地下停車(chē)場(chǎng)內(nèi)的定位坐標(biāo),地下停車(chē)場(chǎng)內(nèi)路徑坡度、轉(zhuǎn)彎角度等信息,采集處理完成后運(yùn)行地下停車(chē)場(chǎng)的路徑圖生成算法,生成地下停車(chē)場(chǎng)的路徑圖;LED顯示屏用于顯示生成的地下停車(chē)場(chǎng)路徑圖。車(chē)輛以地下停車(chē)場(chǎng)入口處位起點(diǎn),開(kāi)啟路徑圖生成裝置,進(jìn)行地下停車(chē)場(chǎng)路徑圖的生成。圖3和圖4為某地下停車(chē)場(chǎng)路徑生成過(guò)程中載體車(chē)輛在地下停車(chē)場(chǎng)內(nèi)的遍歷過(guò)程圖,圖5為遍歷完成后由所有遍歷點(diǎn)坐標(biāo)生成的圖,將圖5中的點(diǎn)連接后就生成了地下停車(chē)場(chǎng)的路徑圖。在圖3、圖4,圖5中僅顯示了坐標(biāo)點(diǎn)位置,并沒(méi)有顯示其他相關(guān)路徑信息。
本實(shí)施例中,如圖1所示,一種基于改進(jìn)的連通圖遍歷算法的路徑圖生成方法,應(yīng)用于未知路徑圖的地下停車(chē)場(chǎng)中,并按如下步驟進(jìn)行:
步驟1、初始化連通圖,建立坐標(biāo)系;
步驟1.1、將地下停車(chē)場(chǎng)的未知路徑圖定義為連通圖G=(V,E),V表示頂點(diǎn)集;E表示邊集;定義頂點(diǎn)集V中任意一個(gè)頂點(diǎn)為vq,q表示頂點(diǎn)的數(shù)量;定義邊集E中任意一條邊為ek;k表示邊的數(shù)量;
遍歷地下停車(chē)場(chǎng)之前,將即將生成的路徑圖簡(jiǎn)化定義為連通圖,并將路徑中的信息也依照連通圖的特征進(jìn)行定義,以便于在遍歷過(guò)程中利用連通圖的特性提高便利效率。將路徑圖定義為連通圖忽略了路徑的寬度以及路面標(biāo)線(xiàn),但在實(shí)際遍歷過(guò)程中可以通過(guò)在載體車(chē)輛上安裝單線(xiàn)激光雷達(dá)、廣角攝像頭等裝置來(lái)獲取載體車(chē)輛所處地下停車(chē)場(chǎng)的環(huán)境信息和載體車(chē)輛周?chē)穆访鎴D像數(shù)據(jù)。在以車(chē)輛作為載體的實(shí)際應(yīng)用中,所有定義的數(shù)據(jù)、數(shù)據(jù)集合等都由主控計(jì)算機(jī)存儲(chǔ)和更新,數(shù)據(jù)的計(jì)算處理等也由主控計(jì)算機(jī)完成。
步驟1.2、基于連通圖G,定義遍歷點(diǎn)集,則遍歷點(diǎn)集中所有遍歷點(diǎn)所組成的坐標(biāo)集合為W;遍歷點(diǎn)集中的所有遍歷點(diǎn)能組成連通圖G;
定義遍歷點(diǎn)集中每個(gè)遍歷點(diǎn)的度所組成的集合為N;定義集合N中任意一個(gè)遍歷點(diǎn)的度為n;
定義遍歷點(diǎn)集中每個(gè)遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量所組成的集合為M;定義集合M中任意一個(gè)遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量為m;
定義連通圖G的鄰接矩陣為A;定義的鄰接矩陣A為動(dòng)態(tài)矩陣,每遍歷得到一個(gè)頂點(diǎn)增加一個(gè)維數(shù),以連通圖G中邊的長(zhǎng)度作為鄰接矩陣A的元素。
步驟1.3、以地下停車(chē)場(chǎng)的入口位置為原點(diǎn)O,以原點(diǎn)O為中心,并以地下停車(chē)場(chǎng)入口方向作為X軸正方向,以X軸方向向左旋轉(zhuǎn)90°的方向作為Y軸正方向,以向上垂直于平面XOY的方向?yàn)閆軸正方向,建立三維坐標(biāo)系O-XYZ;
建立三維坐標(biāo)系是以便于凸顯路徑在空間位置上的變化,可以反映出路徑的坡度變化,在多層的大型地下停車(chē)場(chǎng)內(nèi)也可以反映出路徑圖所處的不同高度、不同樓層。實(shí)例中選取的是比較理想化的地下停車(chē)場(chǎng),忽略了坡度和多層問(wèn)題,所以圖3、圖4、圖5都為平面圖。
步驟1.4、初始化連通圖G、遍歷點(diǎn)集W、所有遍歷點(diǎn)的度所組成的集合N、關(guān)聯(lián)邊數(shù)量所組成的集合M、鄰接矩陣A均為空集;
步驟2、基于當(dāng)前連通圖,在當(dāng)前遍歷點(diǎn)處,確定下一個(gè)遍歷點(diǎn)方向;如圖2所示,步驟2作為路徑圖生成過(guò)程中遍歷算法的核心部分,其步驟細(xì)節(jié)如下,以圖3、圖4為例:
步驟2.1、定義遍歷次數(shù)為p;初始化p=1、q=1、k=1、Lk=0;
步驟2.2、以入口位置為第p次遍歷點(diǎn),遍歷的單位長(zhǎng)度為l;在利用車(chē)輛作為載體時(shí),每次遍歷單位長(zhǎng)度可以通過(guò)控制車(chē)輛速度和時(shí)間間隔來(lái)完成,以固定的時(shí)間間隔勻速行駛就能保證每次遍歷單位長(zhǎng)度。在圖3中,入口處位置為頂點(diǎn)即V1位置,在坐標(biāo)系中時(shí)原點(diǎn)位置,三個(gè)方向的坐標(biāo)都可以為0,或者由于入口處位置處于室外也可由GPS進(jìn)行定位獲得坐標(biāo)。
步驟2.3、記錄第p次遍歷點(diǎn)的坐標(biāo)為wp;wp位置如圖3;將第p次遍歷點(diǎn)加入到遍歷點(diǎn)集中,從而獲得更新后的遍歷點(diǎn)集和及其坐標(biāo)集合W′;獲取第p次遍歷點(diǎn)的度np;
利用連通圖中點(diǎn)的度來(lái)提供遍歷方向,每個(gè)遍歷點(diǎn)有幾個(gè)度就有幾個(gè)遍歷方向。第p次循環(huán)下的遍歷起點(diǎn)的度np的獲得方式是,通過(guò)已有的圖像識(shí)別技術(shù),拍攝地下停車(chē)場(chǎng)路徑圖片,將圖片與具有不同度的連通圖圖片對(duì)比,找出與拍攝的地下停車(chē)場(chǎng)路徑圖片最相近的對(duì)照?qǐng)D片,對(duì)照?qǐng)D片中點(diǎn)的度即為第p次循環(huán)下的遍歷起點(diǎn)的度,從而獲得連通圖G中各個(gè)遍歷點(diǎn)的度。
步驟2.4、遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量即在遍歷點(diǎn)處可選擇的下一遍歷點(diǎn)的方向數(shù),數(shù)量上等于遍歷點(diǎn)的度減去該遍歷點(diǎn)上已經(jīng)遍歷的方向數(shù);判斷p=1是否成立;若成立,則初始化第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp為np;在第1次遍歷點(diǎn)處,遍歷點(diǎn)沒(méi)有遍歷過(guò)任何方向,所以初始化遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量等于度的大小。圖3中,V1處初始化的未遍歷的關(guān)聯(lián)邊數(shù)量即為度的大小1;若不成立,則初始化第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp為np-1;除去第1次遍歷點(diǎn)處,以后的其他遍歷點(diǎn),都會(huì)因?yàn)樯弦槐闅v點(diǎn)移動(dòng)到該遍歷點(diǎn)而減少一個(gè)遍歷方向,所以初始化的未遍歷的關(guān)聯(lián)邊數(shù)量等于度減去一個(gè)遍歷方向。在圖3中,V2、V3等點(diǎn)處,初始化的未遍歷的關(guān)聯(lián)邊數(shù)量為度的大小減1,即V2處初始化的未遍歷的關(guān)聯(lián)邊數(shù)量為3。
步驟2.5、判斷在遍歷點(diǎn)坐標(biāo)集W′中是否存在與第p次遍歷點(diǎn)的坐標(biāo)wp相同的遍歷點(diǎn)的坐標(biāo)wr;若遍歷點(diǎn)是頂點(diǎn),則會(huì)有多個(gè)遍歷方向那么這個(gè)遍歷點(diǎn)就會(huì)重復(fù)遍歷,重復(fù)遍歷時(shí)就要及時(shí)更新遍歷點(diǎn)的信息。若存在,則將相同的遍歷點(diǎn)的度nr賦值給第p次遍歷點(diǎn)的度np,將相同的遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mr賦值給第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp;在圖3中,頂點(diǎn)V2處就會(huì)遍歷三次,每次重復(fù)遍歷時(shí),初始化后頂點(diǎn)V2處的未遍歷的關(guān)聯(lián)邊數(shù)量都為3,但實(shí)際上并不是,有可能頂點(diǎn)V2處的未遍歷的關(guān)聯(lián)邊數(shù)量已經(jīng)為1,所以需要重新更新V2處的未遍歷的關(guān)聯(lián)邊數(shù)量;
若不存在,則第p次遍歷點(diǎn)的度np保持不變,第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp保持不變;
步驟2.6、將第p次遍歷點(diǎn)的度np加入到遍歷點(diǎn)度的集合N中,從而獲得更新后的遍歷點(diǎn)度的集合N′;將第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp加入到遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量集合M中,從而獲得更新后的遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量集合M′;
步驟2.7、根據(jù)第p次遍歷點(diǎn)的度np,判斷第p次遍歷點(diǎn)的類(lèi)型;
若第p次遍歷點(diǎn)的度np為2,則表示第p次遍歷點(diǎn)為邊ek上的點(diǎn);將第p次遍歷點(diǎn)加入到邊ek中,從而獲得更新后的邊e′k;并執(zhí)行步驟2.9;
若第p次遍歷點(diǎn)的度np不為2,則表示第p次遍歷點(diǎn)為頂點(diǎn);遍歷時(shí),頂點(diǎn)由于有多個(gè)遍歷方向可選擇,所以每個(gè)頂點(diǎn)都會(huì)進(jìn)行多次遍歷,每次遍歷頂點(diǎn)后頂點(diǎn)名稱(chēng)也會(huì)發(fā)生變化,但是多個(gè)不同的名稱(chēng)都代表同一頂點(diǎn);在圖3中,當(dāng)遍歷完成頂點(diǎn)V6到頂點(diǎn)V3之間的邊后,遍歷點(diǎn)再次到達(dá)頂點(diǎn)V3處,則再次對(duì)遍歷點(diǎn)進(jìn)行判定,判定為頂點(diǎn)后頂點(diǎn)V3處也是頂點(diǎn)V7處。將第p次遍歷點(diǎn)的坐標(biāo)wp賦值給頂點(diǎn)vq的坐標(biāo)的同時(shí),記錄下頂點(diǎn)vq所對(duì)應(yīng)的第p次遍歷點(diǎn)的遍歷次數(shù),從而獲得更新后的頂點(diǎn)集V′,將q+1賦值給q;并執(zhí)行步驟2.8;
步驟2.8、判斷更新后的頂點(diǎn)集V′中的頂點(diǎn)個(gè)數(shù)q是否小于3;通過(guò)頂點(diǎn)集中頂點(diǎn)數(shù)目的變化來(lái)判斷是否有新的邊形成。
若q小于3,則保持邊ek不變,保持邊集E不變;在圖3中,剛遍歷完第一次遍歷點(diǎn)后就可以判定出入口處位置為頂點(diǎn)V1,此時(shí)經(jīng)過(guò)賦值后q=2,所以在若q小于3的情況下都不會(huì)形成邊。
若q不小于3,如果頂點(diǎn)數(shù)目大于等于3,那么遍歷了一次頂點(diǎn)后就會(huì)生成一條邊。在圖3中,當(dāng)頂點(diǎn)V2已經(jīng)判定后,此時(shí)經(jīng)過(guò)賦值后q=3,滿(mǎn)足若q不小于3的條件,此時(shí)頂點(diǎn)V2和頂點(diǎn)V1之間形成了邊e1。由邊ek中的遍歷點(diǎn)個(gè)數(shù)計(jì)算獲得邊ek的長(zhǎng)度Lk;可以計(jì)算e1的長(zhǎng)度L1。更新鄰接矩陣為A′,鄰接矩陣由A=(0)變成了將邊ek加入到邊集E中,從而獲得更新后的邊集E′;當(dāng)頂點(diǎn)V2已經(jīng)判定后,邊集E由空集變成E′={e1},當(dāng)頂點(diǎn)V6已經(jīng)判定后,邊集為E′={e1、e2、e3、e4、e5};此時(shí)由更新后的頂點(diǎn)集V′和更新后的邊集E′,更新當(dāng)前連通圖為Gk;連通圖G是由頂點(diǎn)集和邊集組成的,所以當(dāng)遍歷了一個(gè)頂點(diǎn)并形成一條邊以后,連通圖就發(fā)生了變化,也要進(jìn)行更新;將k+1賦值給k;在圖3中,當(dāng)邊e1形成后,則k=2;
步驟2.9、根據(jù)第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp,判斷第p+1次遍歷點(diǎn)的方向;
若第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp不為0,則從第p次的遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊中隨機(jī)選取任一關(guān)聯(lián)邊的方向作為第p+1次遍歷點(diǎn)的方向;在圖3中wp點(diǎn)位置上,此時(shí)第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp=1,隨機(jī)選擇也只有一個(gè)方向,但是之前當(dāng)遍歷頂點(diǎn)V6處時(shí),頂點(diǎn)V6對(duì)應(yīng)的遍歷點(diǎn)wp處未遍歷的關(guān)聯(lián)邊數(shù)量mp=3,即當(dāng)頂點(diǎn)V6處為第p次遍歷點(diǎn)時(shí)向第p+1次遍歷點(diǎn)遍歷時(shí),可以從3個(gè)方向中隨機(jī)選擇,由圖3可已看出隨機(jī)選擇的是頂點(diǎn)V3的方向;將mp-1賦值給mp,由于已經(jīng)隨機(jī)選擇頂點(diǎn)V3的方向,所以未遍歷的關(guān)聯(lián)邊數(shù)量要減少一個(gè);從而獲得再次更新的未遍歷的關(guān)聯(lián)邊數(shù)量集合M″,并轉(zhuǎn)步驟3;
若第p次遍歷點(diǎn)的未遍歷的關(guān)聯(lián)邊數(shù)量mp為0,則判斷未遍歷的關(guān)聯(lián)邊數(shù)量集合M′中是否存在未遍歷的關(guān)聯(lián)邊數(shù)量不為0的遍歷點(diǎn);若存在,則所述遍歷點(diǎn)為頂點(diǎn),轉(zhuǎn)步驟2.10;圖3與圖4的區(qū)別就是,圖3在頂點(diǎn)V6處隨機(jī)選擇了頂點(diǎn)V4方向作為第p+1次遍歷點(diǎn)方向而圖4中在頂點(diǎn)V6處隨機(jī)選擇了頂點(diǎn)V4方向作為第p+1次遍歷點(diǎn)方向;在圖4中當(dāng)遍歷到頂點(diǎn)V4位置時(shí),頂點(diǎn)V4處即為第p次遍歷點(diǎn),同時(shí)也是頂點(diǎn)V7;從圖中可以看出在頂點(diǎn)V4處已經(jīng)沒(méi)有可向下一遍歷點(diǎn)的遍歷的遍歷方向,mp=0;否則,終止遍歷,圖5中則是已經(jīng)無(wú)法找到未遍歷的關(guān)聯(lián)邊數(shù)量不為0的遍歷點(diǎn),所以表明遍歷終止;并根據(jù)前p次遍歷點(diǎn)的坐標(biāo)連接成地下停車(chē)場(chǎng)的路徑圖;將圖5中的遍歷點(diǎn)連接起來(lái)就是地下停車(chē)場(chǎng)的路徑圖;
步驟2.10、根據(jù)更新后的鄰接矩陣A′,運(yùn)用最短路徑算法從頂點(diǎn)集V′中選取與第p次遍歷點(diǎn)距離最近且未遍歷的關(guān)聯(lián)邊數(shù)量不為0的頂點(diǎn)vs作為第p次遍歷點(diǎn),并將頂點(diǎn)vs的坐標(biāo)賦值給第p次遍歷點(diǎn)的坐標(biāo)wp,返回步驟2.3;
以圖4為例,在第p次遍歷點(diǎn)即頂點(diǎn)V4處,需要尋找未遍歷的關(guān)聯(lián)邊數(shù)量不為0的頂點(diǎn),滿(mǎn)足條件的頂點(diǎn)是V2、V3、V5、V6,以更新后的鄰接矩陣A′為依據(jù),運(yùn)用最短路徑算法即可找到距離最近的頂點(diǎn)是頂點(diǎn)V6,所以頂點(diǎn)V6將作為第p次遍歷點(diǎn),從頂點(diǎn)V4處移動(dòng)到頂點(diǎn)V6處的過(guò)程是載體車(chē)輛依據(jù)生成的最短路徑直接一定,這一過(guò)程中沒(méi)有遍歷點(diǎn)的生成;
步驟3、根據(jù)第p+1次遍歷點(diǎn)的方向,從第p次遍歷點(diǎn)出發(fā),移動(dòng)單位長(zhǎng)度l的距離后達(dá)到第p+1次遍歷點(diǎn),通過(guò)慣性定位法獲得第p+1次遍歷點(diǎn)的坐標(biāo)wp+1;
步驟4、在第p+1次遍歷點(diǎn)處,判斷從第p次遍歷點(diǎn)出發(fā),移動(dòng)到第p+1次遍歷點(diǎn)路程中是否存在頂點(diǎn);這一步驟是為了防止移動(dòng)單位距離l的過(guò)程中錯(cuò)過(guò)某個(gè)頂點(diǎn)的位置;判斷從第p次循環(huán)下的遍歷起點(diǎn)出發(fā),移動(dòng)到第p+1次遍歷點(diǎn)處的這一過(guò)程中,是否存在頂點(diǎn)的方法,通過(guò)已有的圖像識(shí)別技術(shù),在移動(dòng)長(zhǎng)度為l的距離過(guò)程中拍攝地下停車(chē)場(chǎng)中的路徑圖片,將所有圖片與具有不同度的連通圖圖片對(duì)比,找出與拍攝的地下停車(chē)場(chǎng)路徑圖片最相近的對(duì)照?qǐng)D片,通過(guò)對(duì)照?qǐng)D片中點(diǎn)的度,找出在移動(dòng)長(zhǎng)度為l的距離過(guò)程中是否存在頂點(diǎn)。
若存在,則從第p+1次遍歷點(diǎn)處移動(dòng)至相應(yīng)頂點(diǎn)處,并通過(guò)慣性定位法獲得相應(yīng)頂點(diǎn)的坐標(biāo),將相應(yīng)頂點(diǎn)作為第p+1次遍歷點(diǎn);
若不存在,第p+1次遍歷點(diǎn)保持不變;
步驟5、將p+1賦值給p,將W′賦值給W,將V′賦值給V,將N′賦值給N,將M″賦值給M,將A′賦值給A;并返回步驟2.3。