專利名稱:用于計(jì)劃多道路的雙重dijkstra搜索的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的背景(1)本發(fā)明的領(lǐng)域本發(fā)明涉及用于計(jì)劃多道路的雙重Dijkstra搜索,這些道路宜對(duì)于計(jì)算機(jī)圖形學(xué)或機(jī)器人學(xué)與導(dǎo)航系統(tǒng)等領(lǐng)域中的各種計(jì)劃問(wèn)題,用于快速并同時(shí)計(jì)算多個(gè)解。
(2)先有技術(shù)的闡述一般來(lái)說(shuō),作為道路搜索算法,是要搜索從起點(diǎn)到目標(biāo)點(diǎn)的最適合道路。在道路搜索算法中,有時(shí)的情形是,要搜索的是多個(gè)解而不是最適合道路。用于搜索這種多道路的算法一般作為K最短道路算法被研究。然而,K最短算法是這樣進(jìn)行的搜索按圖7所示搜索最適合道路;相繼搜索在這樣已搜索到的最適合道路附近的其它道路;決定第二,第三等適合道路,這出現(xiàn)了以下問(wèn)題。
(1)由于必須進(jìn)行重復(fù)計(jì)算,與只搜索最適合道路的情形比較必須要長(zhǎng)的計(jì)算時(shí)間。
(2)由于在最適合道路附近找到許多其它道路,如果要被搜索的其它道路與最適合道路并類似,則必須時(shí)值K較大。
在大量的問(wèn)題中,必須搜索與這種類似道路不同的道路。這里的術(shù)語(yǔ)“不同的道路”是指如圖8中所示的非連續(xù)過(guò)渡的道路。就是說(shuō),不同的道路具有不同的拓?fù)洹榱怂阉鬟@種具有不同拓?fù)涞牡缆?,由于有上述的?wèn)題,故按已知的算法必須進(jìn)行非常大量計(jì)算。
本發(fā)明的概述本發(fā)明的目的是要提供用于在道路搜索問(wèn)題中計(jì)劃多道路的雙重Dijkstra搜索,其中能夠同時(shí)搜索不同于最適合道路的多道路,且其中能夠搜索不同于最適合道路附近類似道路的各種道路。
根據(jù)本發(fā)明的第一方式,用于計(jì)劃多道路的雙重Dijkstra搜索,包括以下步驟采用稱為Dijkstra算法的算法計(jì)算從開(kāi)始到所有結(jié)點(diǎn)的第一最短成本;采用Dijkstra算法計(jì)算從目標(biāo)到所有結(jié)點(diǎn)的第二最短成本;把第一最短成本與第二最短成本相加獲得相加的最短成本;并在所有結(jié)點(diǎn)存儲(chǔ)相加的最短成本,作為從開(kāi)始到目標(biāo)通過(guò)各結(jié)點(diǎn)的最短道路的成本,從而搜索從開(kāi)始到目標(biāo)的一道路。
此外,根據(jù)本發(fā)明的第二方式,用于計(jì)劃多道路的雙重Dijkstra搜索,包括以下步驟采用稱為Dijkstra算法的算法計(jì)算從開(kāi)始到所有結(jié)點(diǎn)的第一最短成本;采用Dijkstra算法計(jì)算從目標(biāo)到所有結(jié)點(diǎn)的第二最短成本;把第一最短成本與第二最短成本相加獲得相加的最短成本;并在所有結(jié)點(diǎn)對(duì)于相加的最短成本獲得從開(kāi)始到目標(biāo)通過(guò)各結(jié)點(diǎn)的最短道路,從而搜索從開(kāi)始到目標(biāo)的一道路。
在本發(fā)明中,通過(guò)執(zhí)行以下步驟,以同只獲得最適合道路基本相同的計(jì)算時(shí)間能夠搜索到多個(gè)道路(1)采用Dijkstra算法計(jì)算從開(kāi)始到所有結(jié)點(diǎn)的第一最短成本;(2)采用Dijkstra算法計(jì)算從目標(biāo)到所有結(jié)點(diǎn)的第二最短成本;(3)把第一最短成本與第二最短成本相加獲得相加的最短成本;以及(4a)在所有結(jié)點(diǎn)存儲(chǔ)存儲(chǔ)相加的最短成本作為從開(kāi)始到目標(biāo)通過(guò)各結(jié)點(diǎn)的最短道路成本;或(4b)在所有結(jié)點(diǎn)獲得從開(kāi)始到目標(biāo)通過(guò)各結(jié)點(diǎn)對(duì)于相加的最短成本的最短道路,從而搜索從開(kāi)始到目標(biāo)的一道路。結(jié)果是,如果本發(fā)明用于計(jì)算機(jī)圖形學(xué)或機(jī)器人及導(dǎo)航系統(tǒng)領(lǐng)域中各種計(jì)劃問(wèn)題,能夠?qū)C(jī)器人和CG特性的各種運(yùn)動(dòng)進(jìn)行快速搜索。
作為一優(yōu)選實(shí)施例,(1)利用通過(guò)一點(diǎn)的道路及其成本,搜索其拓?fù)浔舜瞬煌木植孔钸m合的多個(gè)道路,以及(2)并行處理利用Dijkstra算法的兩次成本計(jì)算,或?qū)Σ煌負(fù)涞膬纱纬杀居?jì)算與道路搜索。兩種情形下,由于能夠更快速進(jìn)行多道路搜索,都是優(yōu)選的。
附圖的簡(jiǎn)要說(shuō)明為了更好地理解本發(fā)明,要參照附圖,其中
圖1a-1c是分別表示作為一般圖形搜索方法的Dijkstra算法的步驟的示意圖2是表示從Dijkstra算法中先前結(jié)點(diǎn)的信息搜索最短道路方法的示意圖;圖3是表示根據(jù)本發(fā)明在雙重Dijkstra搜索中從開(kāi)始到所有結(jié)點(diǎn)的最短道路的示意圖;圖4是表示根據(jù)本發(fā)明在雙重Dijkstra搜索中從目標(biāo)到所有結(jié)點(diǎn)的最短道路的示意圖;圖5是表示根據(jù)本發(fā)明在雙重Dijkstra搜索中通過(guò)各點(diǎn)的道路的示意圖;圖6是表示根據(jù)本發(fā)明在雙重Dijkstra搜索中從開(kāi)始到目標(biāo)通過(guò)一個(gè)結(jié)點(diǎn)的最短道路的示意圖;圖7是表示通過(guò)已知的K最短道路問(wèn)題產(chǎn)生的道路的示意圖;以及圖8是表示不同的拓?fù)涞缆返氖疽鈭D。
本發(fā)明的詳細(xì)說(shuō)明在說(shuō)明根據(jù)本發(fā)明的雙重Dijkstra搜索算法之前,將先說(shuō)明作為搜索最短道路的一般方法的Dijkstra搜索算法。Dijkstra搜索是用于計(jì)算從圖形上一個(gè)結(jié)點(diǎn)到所有結(jié)點(diǎn)的最短道路的算法。在Dijkstra搜索算法中,圖形上到所有結(jié)點(diǎn)的最短道路是從開(kāi)始點(diǎn)逐一確定的。最短道路的決策區(qū)域是逐步擴(kuò)展的。最后,搜索到所有結(jié)點(diǎn)的最短道路。實(shí)際上,Dijkstra搜索是通過(guò)以下步驟進(jìn)行的。
(1)如圖1a所示,開(kāi)始點(diǎn)的成本設(shè)為零。
(2)如圖1b所示,計(jì)算與開(kāi)始點(diǎn)連接的結(jié)點(diǎn)的成本。
(3)形成其中成本已被計(jì)算的結(jié)點(diǎn)的一列表。開(kāi)始點(diǎn)從該列表中被去除。
(4)如圖1c所示,在列表中選擇具有較低成本的結(jié)點(diǎn),并計(jì)算與具有較低成本的結(jié)點(diǎn)連接的結(jié)點(diǎn)的成本。這里1.其中把其成本被新計(jì)算的結(jié)點(diǎn)添加到列表中。
2.在對(duì)同一結(jié)點(diǎn)多次計(jì)算成本的情形下,較低成本被重新記錄到列表上。
(5)在連接的結(jié)點(diǎn)成本計(jì)算之后,結(jié)點(diǎn)從列表中去除,并決定結(jié)點(diǎn)的成本。
(6)當(dāng)通過(guò)重復(fù)執(zhí)行(3)和(4)列表成為空時(shí),決定所有結(jié)點(diǎn)的成本,且上述這一重復(fù)操作結(jié)束。
這樣,采用Dijkstra搜索能夠計(jì)算在各結(jié)點(diǎn)對(duì)開(kāi)始點(diǎn)的最短成本。此外,在其中決定成本的步驟(4),如果先前的結(jié)點(diǎn)位置存儲(chǔ)在各結(jié)點(diǎn)處,如圖2所示能夠通過(guò)跟蹤結(jié)點(diǎn)順序計(jì)算最短結(jié)點(diǎn)。Dijkstra搜索對(duì)于計(jì)算的開(kāi)始點(diǎn)到目標(biāo)點(diǎn)的最短道路是有效的,但不能計(jì)算連接兩點(diǎn)的多個(gè)道路。
根據(jù)本發(fā)明的雙重Dijkstra搜索主要通過(guò)兩步被分類。首先,作為最初一步,通過(guò)所有點(diǎn)兩次采用Dijkstra搜索計(jì)算從開(kāi)始到目標(biāo)通過(guò)一定的點(diǎn)的道路成本。然后,作為第二步,在所計(jì)算的道路中,選擇具有不同拓?fù)涞牡缆?。以下,將順序說(shuō)明以上各步驟。
步驟1(1)如圖3所示,從開(kāi)始點(diǎn)進(jìn)行Dijkstra搜索。
(2)如圖4所示,還從目標(biāo)點(diǎn)進(jìn)行Dijkstra搜索。
(3)對(duì)通過(guò)兩次Dijkstra搜索計(jì)算并分別存儲(chǔ)在所有結(jié)點(diǎn)中的成本求和。
作為這些步驟的結(jié)果,在一點(diǎn)分別獲得以下成本和位置。
(1)從開(kāi)始到靶結(jié)點(diǎn)的最低成本及從目標(biāo)到靶結(jié)點(diǎn)的最低成本。就是說(shuō),如圖5所示,從開(kāi)始到目標(biāo)通過(guò)各結(jié)點(diǎn)的道路的最低成本。
(2)連接靶結(jié)點(diǎn)與開(kāi)始結(jié)點(diǎn)的道路中靶結(jié)點(diǎn)的先前結(jié)點(diǎn)的位置。就是說(shuō)圖6中所示的指針(a)。
(3)連接靶結(jié)點(diǎn)與目標(biāo)結(jié)點(diǎn)的道路中靶結(jié)點(diǎn)的先前結(jié)點(diǎn)的位置。就是說(shuō)圖6中所示的指針(b)。
如果如圖8所示既沿開(kāi)始點(diǎn)方向又沿目標(biāo)點(diǎn)方向跟蹤道路,就能夠決定通過(guò)一點(diǎn)的最短道路。由于這一信息能夠在所有結(jié)點(diǎn)被存儲(chǔ),因而能夠最好地獲得達(dá)到結(jié)點(diǎn)數(shù)目的通過(guò)一點(diǎn)的最短道路。
步驟2
局部上采用其數(shù)目對(duì)應(yīng)于通過(guò)步驟1獲得的結(jié)點(diǎn)及它們的成本的道路集合,計(jì)算出具有不同拓?fù)涞淖钸m合道路。如前所述,具有不同拓?fù)涞牡缆芬馑际欠沁B續(xù)過(guò)渡的道路。如果道路不是連續(xù)過(guò)渡的,則必定存在彼此不相鄰的點(diǎn)。使用這一條件,應(yīng)用以下的步驟。
(1)選擇具有較低成本的結(jié)點(diǎn),描繪其結(jié)點(diǎn)是被這樣選擇的結(jié)點(diǎn)的道路。這種道路就是最適合的道路。
(2)標(biāo)記這種道路上的所有結(jié)點(diǎn)。
(3)選擇具有第二較低成本的結(jié)點(diǎn),并考慮其結(jié)點(diǎn)是這樣被選擇的結(jié)點(diǎn)的道路。這里1.在這種道路上所有結(jié)點(diǎn)都是對(duì)先前標(biāo)記的結(jié)點(diǎn)相鄰的情形下,不描繪這種道路。
2.在即便只存在一個(gè)結(jié)點(diǎn)不與標(biāo)記的結(jié)點(diǎn)相鄰的情形下,則對(duì)這種道路進(jìn)行描繪。這一道路是具有不同拓?fù)涞淖钸m合道路。
(4)重復(fù)以上步驟直到所有結(jié)點(diǎn)被標(biāo)記。
首先,這一方法增加了圍繞最短道路具有相同拓?fù)涞膮^(qū)域。如果找到具有不同拓?fù)涞牡缆?,則從該道路增加了具有另外拓?fù)涞囊粎^(qū)域。最后所有空間被劃分為具有不同拓?fù)涞膮^(qū)域。這樣,只描繪相同的拓?fù)渲凶钸m合的道路。
采用并行處理能夠快速執(zhí)行根據(jù)本發(fā)明的雙重Dijkstra搜索的算法。由于基于雙重執(zhí)行的Dijkstra搜索的計(jì)算是被獨(dú)立進(jìn)行的,因而能夠采用并行處理。此外,由于計(jì)算具有不同拓?fù)涞牡缆返囊徊糠诌€能夠通過(guò)增加具有相同拓?fù)洳粌H圍繞最短多個(gè)熱道路的區(qū)域而進(jìn)行,因而還能夠采用并行處理。
從以上說(shuō)明可清楚地理解,根據(jù)本發(fā)明用于計(jì)劃多道路的雙重Dijkstra搜索,能夠通過(guò)只是基本上與獲得最適合道路相同的計(jì)算時(shí)間,就能夠搜索多個(gè)道路。其結(jié)果是,如果本發(fā)明用于計(jì)算機(jī)圖形學(xué)或機(jī)器人及導(dǎo)航系統(tǒng)的領(lǐng)域,則能夠?qū)C(jī)器人和CG特性的各種運(yùn)動(dòng)進(jìn)行快速搜索。此外,該方法提供了多個(gè)道路,能夠用于計(jì)劃道路。
權(quán)利要求
1.用于計(jì)劃多道路的雙重Dijkstra搜索,包括以下步驟采用稱為Dijkstra算法的算法計(jì)算從開(kāi)始到所有結(jié)點(diǎn)的第一最低成本;采用Dijkstra算法計(jì)算從目標(biāo)到所有結(jié)點(diǎn)的第二最低成本;把第一最低成本與第二最低成本相加獲得相加的最低成本;并在所有結(jié)點(diǎn)存儲(chǔ)相加的較低成本,作為從開(kāi)始到目標(biāo)通過(guò)各結(jié)點(diǎn)的較低道路的成本,從而搜索從開(kāi)始到目標(biāo)的一道路。
2.用于計(jì)劃多道路的雙重Dijkstra搜索,包括以下步驟采用稱為Dijkstra算法的算法計(jì)算從開(kāi)始到所有結(jié)點(diǎn)的第一最低成本;采用Dijkstra算法計(jì)算從目標(biāo)到所有結(jié)點(diǎn)的第二最短成本;把第一最短成本與第二最短成本相加獲得相加的最短成本;并在所有結(jié)點(diǎn)對(duì)于相加的最短成本獲得從開(kāi)始到目標(biāo)通過(guò)各結(jié)點(diǎn)的最短道路,從而搜索從開(kāi)始到目標(biāo)的一道路。
3.根據(jù)權(quán)利要求1或2用于計(jì)劃多道路的雙重Dijkstra搜索,其中利用通過(guò)一點(diǎn)的道路及其成本,搜索其拓?fù)浔舜瞬煌木植孔钸m合的多個(gè)道路。
4.根據(jù)權(quán)利要求1或2用于計(jì)劃多道路的雙重Dijkstra搜索,其中并行處理利用Dijkstra算法的兩次成本計(jì)算,或?qū)Σ煌負(fù)涞膬纱纬杀居?jì)算與道路搜索。
5.一種運(yùn)動(dòng)計(jì)劃,其中采用根據(jù)權(quán)利要求1或2的用于計(jì)劃多道路的雙重Dijkstra搜索。
全文摘要
通過(guò)以下步驟為計(jì)劃多個(gè)道路執(zhí)行雙重Dijkstra搜索(1)采用稱為Dijkstra算法的算法計(jì)算從開(kāi)始到所有結(jié)點(diǎn)的第一最短成本;(2)采用Dijkstras算法計(jì)算從目標(biāo)到所有結(jié)點(diǎn)的第二最短成本;(3)把第一最短成本與第二最短成本相加獲得相加的最短成本;以及(4a)在所有結(jié)點(diǎn)存儲(chǔ)存儲(chǔ)相加的最短成本作為從開(kāi)始到目標(biāo)通過(guò)各結(jié)點(diǎn)的最短道路的成本;或(4b)在所有結(jié)點(diǎn)獲得從開(kāi)始到目標(biāo)通過(guò)各結(jié)點(diǎn)對(duì)于相加的最短成本的最短道路,從而搜索從開(kāi)始到目標(biāo)的一道路。
文檔編號(hào)G06Q10/04GK1459744SQ0310382
公開(kāi)日2003年12月3日 申請(qǐng)日期2003年2月12日 優(yōu)先權(quán)日2002年2月12日
發(fā)明者中村仁彥, 藤田悠介 申請(qǐng)人:東京大學(xué)