專利名稱:基于地理網絡的最短路徑并行雙向搜索通信方法
技術領域:
本發明屬于最短路徑并行雙向搜索通信技術領域,尤其涉及一種基于地理網絡的最短路徑并行雙向搜索的通信方法。
背景技術:
最短路徑問題是圖論研究中的一個重要課題,自它被提出便得到各個領域的廣泛的關注。因為它不僅是交通運輸問題中的熱點,而且在網絡分析中起著關鍵的作用。應用領域包括網絡優化、物流配送、交通運輸、電子導航等。自從最短路徑問題被提出,經歷幾十年的研究,研發出大量的搜索方法,建立起較為完善的理論體系。然而隨著真實地理網絡(具有地理屬性的網絡)規模越來越大,處理的數據量也急劇增大,傳統最短路徑串行搜索的性能已經不能滿足現實需求。近年來隨著計算機硬件的不斷發展,并行計算技術的不斷推廣,使得并行計算成為解決傳統串行計算效率不高及內存受限的有效方法。其中最短路徑并行雙向搜索,大幅提升原有最短路徑串行搜索的效率。利用最短路徑并行雙向搜索的通信方法如圖1所示,最短路徑并行雙向搜索是開辟兩個進程,進程I和進程2均讀取所有的數據,包括網絡中所有的點的編號、點的經緯度坐標、點的標識以及各點之間的拓撲關系,構建出地理網絡;各點的標識的狀態分為永久標識和非永久標識,兩個進程分別設置數組Indexl、Index2來存儲所有點的標識的狀態,設定各點的標識的初始狀態為非永久標識;進程I和進程2分別以源點A和終點B為中心,每次進程I搜索到一個新的點(用a表示)、進程2搜索到一個新的點(用P表示),如圖1所示,進程I第一次搜索到的點為C和進程2第一次搜索到的點D,進程I根據點C的編號將點C在數組Indexl中的標識改為永久標識,并將點C的編號通過消息傳遞模式發送給進程2,同時接收進程2發送過來的點的編號,根據接收的這個點的編號在數組Indexl中查找該點的標識是否為永久標識,若為永久標識說明兩個進程搜索到交點(即公共點),此時進程I返回消息給進程2,兩個進程搜索可以終止,否則繼續搜索。同時,進程2根據點D的編號將點D在數組Index2中的標識改為永久標識,并將點D的編號通過消息傳遞模式發送給進程1,同時接收進程I發送過來的點的編號,根據接收的這個點的編號在數組Index2中查找該點的標識是否為永久標識,若為永久標識說明兩個進程搜索到交點(即公共點),此時進程2返回消息給進程1,兩個進程搜索可以終止,否則繼續搜索。由此可見,每次搜索之后都會進行一次通信,通信量為2個單位,進程間存在頻繁的信息交換,產生了大量的通信時間,成為提聞效率的主要瓶頸。最短路徑并行雙向搜索是以圓形擴展方式向外搜索,如圖2所示,進程I搜索的區域依次是圖2中以A為圓心的同心圓,搜索到的點依次為C、E、G、...,進程2搜索的區域依次是圖2中以B為圓心的同心圓,搜索到的點依次為D、F、H、...,在兩個圓形區域沒有重疊區域時,如圖2中兩個進程的前3個圓形區域,兩個進程肯定不會搜索到公共點,直到圖2中兩個進程的第四個圓形區域,此時可能存在公共點。由此可見,在搜索區域未相交時,通信內容對搜索本身沒有益處。但是由于并行技術的特點,仍然需要進行通信,判斷是否搜索到公共點,從而保證搜索正確繼續進行。從以上最短路徑并行雙向搜索算法的實現可知,存在通信次數過多,以及必須進行一些無益的通信,這些情況都制約算法效率的提升。
發明內容
本發明的目的是為克服已有技術的不足,提出一種基于大規模地理網絡的最短路徑并行雙向搜索算法的通信方法,該方法具有減少通信次數,以及減少無效通信量的特點,提升已有技術的效率。本發明提出的一種基于地理網絡的最短路徑并行雙向搜索通信方法,其特征在于,在源點開辟進程1、終點開辟進程2,兩個進程同時進行搜索及雙向通信;兩個進程分別讀取所有的數據,包括網絡中所有的點的編號、點的經緯度坐標、點的標識以及各點之間的拓撲關系,構建出地理網絡;設置通信粒度NUM為2以上的正整數;各點的標識的狀態分為永久標識和非永久標識,兩個進程分別設置數組Indexl、Index2存儲所有點的標識的狀態,設定各點的標識的初始狀態為非永久標識;設置兩個進程的通信數組分別為Messl、Mess2,兩個數組的大小均為NUM ;根據源點和終點的經緯度差值,選取差值大的經度或緯度來表示地理網絡中各點的地理屬性,并假設源點的地理屬性值小于終點的地理屬性值,進程I設置Messl中各點地理屬性值的最大值為參數Xmax、進程2設置Mess2中各點地理屬性值的最小值為參數Xmin,并設置參數Xmax、參數Xmin的初始值為0 ;對于進程I的通信,包括以下步驟步驟11 :進程I進行搜索,當搜索的次數小于NUM時,進程I將搜索到的NUM個點的編號保存在數組Messl中,同時根據點的編號在Indexl中將點的標識改為永久標識;步驟12 :進程I當搜索次數等于NUM時,將Messl中NUM個點的地理屬性值的最大值賦予Xmax ;進程I將參數Xmax發送給進程2,并接收進程2的參數Xmin ;步驟13 :進程I判斷參數Xmin是否小于參數Xmax (即判斷兩個圓形搜索區域是否相交),若Xmin>Xmax,說明沒有相交,清空Messl、Xmax,重復步驟1、步驟2 ;若Xmin〈Xmax,進行步驟14 ;步驟14 :進程I將Messl發送給進程2,并接收進程2的Mess2 ;進程I根據接收到的Mess2中各點的編號在Indexl中查找是否存在點的標識為永久標識,若存在,發送消息返回給進程2,搜索終止,進行步驟16 ;若不存在,則繼續搜索,進行步驟15 ;步驟15 :進程I繼續進行搜索,當搜索的次數小于NUM時,進程I將搜索到的NUM個點的編號保存在數組Messl中,同時根據點的編號在Indexl中將點的標識改為永久標識,當搜索次數等于NUM時,進行步驟14 ;步驟16 :結束通信,輸出最短路徑的結果;對于進程2的通信,包括以下步驟步驟21 :進程2進行搜索,當搜索的次數小于NUM時,進程2將搜索到的NUM個點的編號保存在數組Mess2中,同時根據點的編號在Index2中將點的標識改為永久標識;步驟22 :進程2當搜索次數等于NUM時,將Mess2中NUM個點的地理屬性值的最小值賦予Xmin ;進程2將參數Xmin發送給進程1,并接收進程I的參數Xmax ;
步驟23 :進程2判斷參數Xmin是否小于參數Xmax(即判斷兩個圓形搜索區域是否相交),若Xmin>Xmax,說明沒有相交,清空Mess2、Xmin,重復步驟21、步驟22 ;若Xmin〈Xmax,進行步驟 24 ;步驟24 :進程2將Mess2發送給進程1,并接收進程I的Messl ;進程2根據接收到的Messl中各點的編號在Index2中查找是否存在點的標識為永久標識,若存在,發送消息返回給進程1,搜索終止,進行步驟26 ;若不存在,則繼續搜索,進行步驟25 ; 步驟25 :進程2繼續進行搜索,當搜索的次數小于NUM時,進程2將搜索到的NUM個點的編號保存在數組Mess2中,同時根據點的編號在Index2中將點的標識改為永久標識,當搜索次數等于NUM時,進行步驟24 ;步驟26 :結束通信,輸出最短路徑的結果。本發明的技術特點及有益效果1、本發明將各進程多次搜索后找到的多個點作為一個集合進行一次通信操作,提高通信粒度,減少通信次數,降低通信時間,提高并行效率。2、本發明將網絡地理屬性作為判斷兩個進程搜索區域是否存在交集(即是否存在共同點),更快速求解最短路徑,降低通信量,進一步降低通信時間,提高并行效率。
圖1為已有的最短路徑并行雙向搜索的通信方法示意圖,其中,圖1 (a)為搜索結構示意圖;圖1 (b)為通信流程框圖。圖2為已有的最短路徑并行雙向搜索的搜索方式示意圖。圖3為本發明基于地理屬性多點合并I號進程的最短路徑并行雙向搜索的通信方法示意圖。圖4為本發明基于地理屬性多點合并2號進程的最短路徑并行雙向搜索的通信方法示意圖。
具體實施例方式本發明提出的基于地理網絡的最短路徑并行雙向搜索通信方法結合附圖及實施例詳細說明如下本發明以A為源點、B為終點進行雙向搜索,開辟兩個進程(進程I和進程2)進行通信,兩個進程分別讀取所有的數據,包括網絡中所有的點的編號、點的經緯度坐標、點的標識以及各點之間的拓撲關系,構建出地理網絡,如圖2所示;設置通信粒度NUM為2以上的正整數,本實施例中通信粒度設置為3 (通信粒度為多點通信的數量);各點的標識的狀態分為永久標識和非永久標識,兩個進程分別設置數組Indexl、Index2來存儲所有點的標識的狀態,設定各點的標識的初始狀態為非永久標識;設置兩個進程的通信數組分別為MeSSl、MeSS2,兩個數組的大小均為NUM ;根據源點A和終點B的經緯度差值,選取差值大的經度或緯度來表示地理網絡中各點的地理屬性,本實施例中如圖2所示,A、B兩點的經度差值大于A、B兩點的緯度差值,因此選取經度來表示地理屬性,從圖2中可以看出A點的經度值小于B點的經度值,即選擇進程I設置Messl中各點經度值最大值為參數Xmax、進程2設置Mess2中各點經度最小值為參數Xmin,并設置參數Xmax、參數Xmin的初始值為0 ;
本發明的具體實施方式
,對于進程I的通信如圖3所示,包括以下步驟步驟11 :進程I進行搜索,當搜索的次數小于NUM時,進程I將搜索到的NUM個點的編號保存在數組Messl中,同時根據點的編號在Indexl中將點的標識改為永久標識;步驟12 :當搜索次數等于NUM時,將Messl中NUM個點的經度值的最大值賦予Xmax ;如圖2所示,Messl中第一次存有C、E、G點的編號,Xmax等于G的經度值;進程I將參數Xmax發送給進程2,進程I接收進程2的參數Xmin ;步驟13 :進程I判斷參數Xmin是否小于參數Xmax(即判斷兩個圓形搜索區域是否相交),若Xmin>Xmax,說明沒有相交,清空Messl、Xmax,重復步驟11、步驟12 ;若Xmin〈Xmax,進行步驟 14 ;步驟14 :進程I將Messl發送給進程2,進程I接收進程2的Mess2 ;進程I根據接收到的Mess2中各點的編號在Indexl中查找是否存在點的標識為永久標識,若存在,發送消息返回給進程2,搜索終止,進行步驟16 ;若不存在,則繼續搜索,進行步驟15 ;步驟15 :進程I繼續進行搜索,當搜索的次數小于NUM時,進程I將搜索到的NUM個點的編號保存在數組Messl中,同時根據點的編號在Indexl中將點的標識改為永久標識,當搜索次數等于NUM時,進行步驟14 ;步驟16 :結束通信,輸出最短路徑的結果。對于進程2的通信如圖4所示,包括以下步驟步驟21 :進程2進行搜索,當搜索的次數小于NUM時,進程2將搜索到的NUM個點的編號保存在數組Mess2中,同時根據點的編號在Index2中將點的標識改為永久標識;步驟22 :當搜索次數等于NUM時,將Mess2中NUM個點的經度值的最小值賦予Xmin ;如圖2所示,Mess2中第一次存有D、F、H點的編號,Xmin等于H的經度值;進程2將參數Xmin發送給進程I,進程2接收進程I的參數Xmax ;步驟23 :進程2判斷參數Xmin是否小于參數Xmax(即判斷兩個圓形搜索區域是否相交),若Xmin>Xmax,說明沒有相交,清空Mess2、Xmin,重復步驟21、步驟22 ;若Xmin〈Xmax,進行步驟 24 ;步驟24 :進程2將Mess2發送給進程1,進程2接收進程I的Messl ;進程2根據接收到的Messl中各點的編號在Index2中查找是否存在點的標識為永久標識,若存在,發送消息返回給進程1,搜索終止,進行步驟26 ;若不存在,則繼續搜索,進行步驟25 ;步驟25 :進程2繼續進行搜索,當搜索的次數小于NUM時,進程2將搜索到的NUM個點的編號保存在數組Mess2中,同時根據點的編號在Index2中將點的標識改為永久標識,當搜索次數等于NUM時,進行步驟24 ;步驟26 :結束通信,輸出最短路徑的結果。
權利要求
1.一種基于地理網絡的最短路徑并行雙向搜索通信方法,其特征在于,在源點開辟進程1、終點開辟進程2,兩個進程同時進行搜索及雙向通信;兩個進程分別讀取所有的數據,包括網絡中所有的點的編號、點的經緯度坐標、點的標識以及各點之間的拓撲關系,構建出地理網絡;設置通信粒度NUM為2以上的正整數;各點的標識的狀態分為永久標識和非永久標識,兩個進程分別設置數組Indexl、Index2存儲所有點的標識的狀態,設定各點的標識的初始狀態為非永久標識;設置兩個進程的通信數組分別為Messl、Mess2,兩個數組的大小均為NUM ;根據源點和終點的經緯度差值,選取差值大的經度或緯度來表示地理網絡中各點的地理屬性,并假設源點的地理屬性值小于終點的地理屬性值,進程I設置Messl中各點地理屬性值的最大值為參數Xmax、進程2設置Mess2中各點地理屬性值的最小值為參數Xmin,并設置參數Xmax、參數Xmin的初始值為O ; 對于進程I的通信,包括以下步驟: 步驟11:進程I進行搜索,當搜索的次數小于NUM時,進程I將搜索到的NUM個點的編號保存在數組Messl中,同時根據點的編號在Indexl中將點的標識改為永久標識; 步驟12:進程I當搜索次數等于NUM時,將Messl中NUM個點的地理屬性值的最大值賦予Xmax ;進程I將參數Xmax發送給進程2,并接收進程2的參數Xmin ; 步驟13:進程I判斷參數Xmin是否小于參數Xmax,若Xmin>Xmax,說明沒有相交,清空Messl、Xmax,重復步驟1、步驟2 ;若Xmin〈Xmax,進行步驟14 ; 步驟14:進程I將Messl發送給進程2,并接收進程2的Mess2 ;進程I根據接收到的Mess2中各點的編號在Indexl中查找是否存在點的標識為永久標識,若存在,發送消息返回給進程2,搜索終止,進行步驟16 ;若不存在,則繼續搜索,進行步驟15 ; 步驟15:進程I繼續進行搜索,當搜索的次數小于NUM時,進程I將搜索到的NUM個點的編號保存在數組Messl中,同時根據點的編號在Indexl中將點的標識改為永久標識,當搜索次數等于NUM時,進行步驟14 ; 步驟16:結束通信,輸出最短路徑的結果; 對于進程2的通信,包括以下步驟: 步驟21:進程2進行搜索,當搜索的次數小于NUM時,進程2將搜索到的NUM個點的編號保存在數組Mess2中,同時根據點的編號在Index2中將點的標識改為永久標識; 步驟22:進程2當搜索次數等于NUM時,將Mess2中NUM個點的地理屬性值的最小值賦予Xmin ;進程2將參數Xmin發送給進程1,并接收進程I的參數Xmax ; 步驟23:進程2判斷參數Xmin是否小于參數Xmax,若Xmin>Xmax,說明沒有相交,清空Mess2、Xmin,重復步驟21、步驟22 ;若Xmin〈Xmax,進行步驟24 ; 步驟24:進程2將Mess2發送給進程1,并接收進程I的Messl ;進程2根據接收到的Messl中各點的編號在Index2中查找是否存在點的標識為永久標識,若存在,發送消息返回給進程1,搜索終止,進行步驟26 ;若不存在,則繼續搜索,進行步驟25 ; 步驟25:進程2繼續進行搜索,當搜索的次數小于NUM時,進程2將搜索到的NUM個點的編號保存在數組Mess2中,同時根據點的編號在Index2中將點的標識改為永久標識,當搜索次數等于NUM時,進行步驟24 ; 步驟26:結束通信,輸出最短路徑的結果。
全文摘要
本發明涉及基于地理網絡的最短路徑并行雙向搜索通信方法,屬于最短路徑并行雙向搜索通信技術領域;該方法包括在源點和終點開辟兩個進程進行雙向通信,兩個進程分別讀取所有的數據,構建出地理網絡;設置通信粒度NUM為2以上的正整數;兩個進程分別設置數組Index1、Index2來存儲所有點的標識狀態;兩個進程分別設置通信數組Mess1、Mess2;根據源點和終點的經緯度差值,選取差值大的經度或緯度來表示地理網絡中各點的地理屬性,兩個進程分別設置數組Mess1中各點地理屬性值最大值Xmax及數組Mess2中各點地理屬性值最小值Xmin;進行通信時,當搜索次數等于NUM時,兩個進程進行一次通信。該方法具有減少通信次數,以及減少無效通信量的特點,提升已有技術的效率。
文檔編號G06F17/30GK103077235SQ20131000653
公開日2013年5月1日 申請日期2013年1月8日 優先權日2013年1月8日
發明者孫文彬, 吳立新, 趙學勝, 譚正龍, 王江 申請人:中國礦業大學(北京)