本發(fā)明涉及一種查詢最大競爭力位置的動態(tài)監(jiān)控方法及系統(tǒng)。
背景技術(shù):
在過去幾年中,有很多工作研究一類在存在客戶點集合的情況下的“設(shè)施放置問題”(參見文獻(xiàn)8:Farahani,R.Z.,Hekmatfar,M.:FacilityLocation:Concepts,Models,AlgorithmsandCaseStudies,1stedn.Physica-VerlagHD(2009),文獻(xiàn)15:Nickel,S.,Puerto,J.:LocationTheory:AUnifiedApproach,1stedn.Springer(2005))。在最普遍的情況下,問題包含:(1)一個客戶點的集合C和一個設(shè)施點候選集合P,并(2)在P中查詢k個新設(shè)施點的位置從而滿足一個事先定義的最佳條件。這類問題在k是常數(shù)的情況下存在多項式時間內(nèi)的算法,在k是一般變量的情況下是NP-hard問題(參見文獻(xiàn)8和15),已經(jīng)存在的工作主要研究其近似算法。最佳位置查詢問題可以被看做設(shè)施放置問題的一個變種,首先P是一個無限集合;然后通常k=1,也就是說只需要為新建一個設(shè)施點來選取位置;最后通常事先已經(jīng)擁有了一個設(shè)施點集合F。以上這些是最佳位置查詢問題相對于一般的“設(shè)施放置問題”的不同點。之前的最佳位置查詢問題的研究工作(參見文獻(xiàn)2:Cabello,S.,J.M.,Langerman,S.,Seara,C.,Ventura,I.:Reversefacilitylocationproblems.In:CCCG,pp.68–71(2005),文獻(xiàn)6:Du,Y.,Zhang,D.,Xia,T.:Theoptimal-locationquery.In:SSTD,pp.163–180(2005),文獻(xiàn)21:Wong,R.C.W.,¨Ozsu,T.,Yu,P.S.,Fu,A.W.C.,Liu,L.:Efficientmethodformaximizingbichromaticreversenearestneighbor.PVLDB2(1),1126–1137(2009),文獻(xiàn)24:Zhang,D.,Du,Y.,Xia,T.,Tao,Y.:Progressivecomputationofthemin-distoptimal-locationquery.In:VLDB,pp.643–654(2006))中考慮的是設(shè)施點和客戶點之間在Lp空間中的距離。其中Cabello等人(參見文獻(xiàn)2)和Wong等人(參見文獻(xiàn)21)的研究是基于L2空間的,而Du等人(參見文獻(xiàn)6)和Zhang等人(參見文獻(xiàn)24)的研究是基于L1空間的。這些工作并沒有研究最佳位置查詢問題在路網(wǎng)中的情況?,F(xiàn)有的研究工作中包括另外兩種與設(shè)施點的位置選取有關(guān)的問題:單設(shè)施點查詢問題(參見文獻(xiàn)8和15)以及設(shè)施點實時建立問題(參見文獻(xiàn)9:Fotakis,D.:Incrementalalgorithmsforfacilitylocationandkmedian.Theor.Comput.Sci.361(2-3),275–313(2006),文獻(xiàn)13:Meyerson,A.:Onlinefacilitylocation.In:FOCS,pp.426–431(2001)),這兩種問題研究內(nèi)容與最佳位置查詢問題類似但是有所不同。單設(shè)施點查詢問題研究的是,給定一個客戶點的集合,尋找一個設(shè)施建立點從而滿足一個最佳條件,在這個問題里,輸入數(shù)據(jù)中沒有已經(jīng)建立的設(shè)施點集合,然而在最佳位置查詢問題里,需要考慮一個已有的設(shè)施點的集合。設(shè)施點實時建立問題研究的是,隨著客戶點的不斷增加,實時選取位置建立新的設(shè)施點來滿足一個給定的優(yōu)化條件,與最佳位置查詢問題相似的是,這類問題在尋找新的設(shè)施點時,也考慮已有的設(shè)施點集合,然而[9]和[13]所采用的方法并不能解決最佳位置查詢問題,這是因為在設(shè)施點實時建立問題中,建立新設(shè)施點的候選地點是一個有限的集合,但是在最佳位置查詢問題中,建立新設(shè)施點的候選地點是一個無限的集合,例如Lp空間中的所有地點或是路網(wǎng)中的所有邊上的所有地點的集合。在我們之前的研究工作中我們提出了靜態(tài)一次查詢路網(wǎng)中最佳位置的方法(參見文獻(xiàn)22:Xiao,X.,Yao,B.,Li,F.:Optimallocationqueriesinroadnetworkdatabases.In:ICDE,pp.804–815(2011)),與那篇文章相比,我們的發(fā)明提出了新的動態(tài)維護(hù)路網(wǎng)中最佳位置的解決方案,并為三個不同的最佳位置查詢問題設(shè)計了具體的實現(xiàn)方法。最后,現(xiàn)有的研究工作中存在著很多關(guān)于路網(wǎng)數(shù)據(jù)庫中查詢方法的研究(參見3:Chen,Z.,Shen,H.T.,Zhou,X.,Yu,J.X.:Monitoringpathnearestneighborinroadnetworks.In:SIGMOD,pp.591–602(2009),文獻(xiàn)4:Deng,K.,Zhou,X.,Shen,H.T.,Sadiq,S.,Li,X.:Instanceoptimalqueryprocessinginspatialnetworks.VLDBJ18(3),675–693(2009),文獻(xiàn)11:Jensen,C.S.,Kol′aˇrvr,J.,Pedersen,T.B.,Timko,I.:Nearestneighborqueriesinroadnetworks.In:GIS,pp.1–8(2003),文獻(xiàn)12:Kolahdouzan,M.R.,Shahabi,C.:Voronoi-basedk-nearestneighborsearchforspatialnetworkdatabases.In:VLDB,pp.840–851(2004),文獻(xiàn)14:Mouratidis,K.,Yiu,M.L.,Papadias,D.,Mamoulis,N.:Continuousnearestneighbormonitoringinroadnetworks.In:VLDB,pp.43–54(2006),文獻(xiàn)16:Papadias,D.,Zhang,J.,Mamoulis,N.,Tao,Y.:Queryprocessinginspatialnetworkdatabases.In:VLDB,pp.802–813(2003),文獻(xiàn)17:Samet,H.,Sankaranarayanan,J.,Alborzi,H.:Scalablenetworkdistancebrowsinginspatialdatabases.In:SIGMOD,pp.43–54(2008),文獻(xiàn)18:Sankaranarayanan,J.,Samet,H.:Distanceoraclesforspatialnetworks.In:ICDE,pp.652–663(2009),文獻(xiàn)19:Sankaranarayanan,J.,Samet,H.,Alborzi,H.:Pathoraclesforspatialnetworks.PVLDB2(1),1210–1221(2009),文獻(xiàn)23:Yiu,M.L.,Mamoulis,N.,Papadias,D.:Aggregatenearestneighborqueriesinroadnetworks.TKDE17(6),820–833(2005))。然而這些研究工作都是關(guān)注路網(wǎng)數(shù)據(jù)庫中最近點的查詢(參見文獻(xiàn)12、16和17)及其變種:最近點近似查詢(參見文獻(xiàn)18和19)、聚合查詢(參見文獻(xiàn)23),連續(xù)最近點查詢(參見文獻(xiàn)14),路徑最近點查詢(參見文獻(xiàn)3)等等。這些研究工作中的技術(shù)并不能解決最佳位置查詢問題,因為最近點查詢問題與最佳位置查詢問題在本質(zhì)上是有所不同的。另外,本發(fā)明相關(guān)的參考文獻(xiàn)還包括如下:文獻(xiàn)1:deBerg,M.,Cheong,O.,vanKreveld,M.,Overmars,M.:ComputationalGeometry:AlgorithmsandApplications,3rdedn.Springer-Verlag(2008);文獻(xiàn)5:Dijkstra,E.W.:Anoteontwoproblemsinconnexionwithgraphs.NumerischeMathematik1,269–271(1959);文獻(xiàn)7:Erwig,M.,Hagen,F.:Thegraphvoronoidiagramwithapplications.Networks36,156–163(2000);文獻(xiàn)10:Hershberger,J.:Findingtheupperenvelopeofnlinesegmentsino(nlogn)time.Inf.Process.Lett.33(4),169–174(1989);文獻(xiàn)20:Shekhar,S.,Liu,D.R.:CCAM:Aconnectivity-clusteredaccessmethodfornetworksandnetworkcomputations.TKDE9(1),102–119(1997)。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種查詢最大競爭力位置的動態(tài)監(jiān)控方法及系統(tǒng),能夠快速和動態(tài)地查詢最大競爭力位置。為解決上述問題,本發(fā)明提供一種查詢最大競爭力位置的動態(tài)監(jiān)控方法,包括:給定一個客戶點的集合C和一個設(shè)施點的集合F,以及一個候選位置集合P,最大競爭力位置為其中w(c)是客戶點c的權(quán)重,如果客戶點c和設(shè)施點f在道路網(wǎng)絡(luò)中的距離d(c,f)是c和F中的點的極小值,則定義f是c的吸引者,c被f吸引,a(c)=d(c,f)為c的吸引距離,Cp是所有能被p吸引的客戶點,即根據(jù)路網(wǎng)中初始的設(shè)施點集合F和客戶點集合C獲取p;根據(jù)路網(wǎng)中設(shè)施點集合F或客戶點集合C發(fā)生的更新隨時動態(tài)監(jiān)控p。進(jìn)一步的,在上述方法中,根據(jù)路網(wǎng)中初始的設(shè)施點集合F和客戶點集合C獲取p的步驟包括:通過向表示路網(wǎng)的無向連通圖Go=(Vo,Eo)插入所有的設(shè)施點f和客戶點c來將Eo中的邊劃分成新的邊,對于每一個點ρ∈C∪F,先考慮ρ所在的邊e∈Eo,令e的兩個端點為vl和vr,然后將e分為兩部分即從vl到ρ和從ρ到vr,以使ρ成為無向連通圖的一個新頂點,加入所有的新頂點以生成了一個新的無向連通圖G=(V,E),且V=Vo∪C∪F;對于每一條邊e∈Ec初始化計算其局部最佳位置I以及對應(yīng)的收益值m,其中,Ec為包含候選位置集合P中所有點的邊的集合,某個位置的收益值m為該位置能夠吸引到的所有客戶點的權(quán)重之和,局部最佳位置I為邊e上所有具有最大收益值的點集合;根據(jù)所有邊上的局部最佳位置I選出對應(yīng)的收益值m最大的作為最大競爭力位置p。進(jìn)一步的,在上述方法中,對于每一條邊e∈Ec初始化計算其局部最佳位置I以及對應(yīng)的收益值m的步驟包括:通過Erwig和Hagen的算法來計算G中每一個頂點v的最近設(shè)施點f以及距離d(v,f);分別計算e的兩個端點vl和vr的吸引集合A(vl)和A(vr),其中,給定一個頂點v,A(v)是包含v能吸引到的所有客戶點c以及對應(yīng)距離d(c,v)的集合;根據(jù)已經(jīng)計算出的A(vl)和A(vr)計算e的局部最佳位置I以及對應(yīng)的收益值m。進(jìn)一步的,在上述方法中,已知一個頂點v,A(v)通過如下步驟獲?。撼跏蓟疉(v)為空集;用Dijkstra算法按照到v的距離升序遍歷G中所有頂點;對于每一個遍歷到的頂點v′,令a(v′)為v′到其最近的設(shè)施點f的距離,如果d(v,v′)≤a(v′),并且v′是一個客戶點,則將把<v′,d(v′,v)>加入頂點v吸引集合A(v)后;如果d(v,v′)>a(v′),則忽略所有以v′為端點的邊。進(jìn)一步的,在上述方法中,根據(jù)已經(jīng)計算出的A(vl)和A(vr)計算e的局部最佳位置I以及對應(yīng)的收益值m的步驟包括:建立一個一維平面R;對于每個在A(vl)中出現(xiàn)但是沒有在A(vr)中出現(xiàn)的客戶點c,在R中創(chuàng)建一條線段[0,a(c)-d(c,vl)],對這條線段賦予權(quán)重w(c);對于每個在A(vr)中出現(xiàn)但是沒有在A(vl)中出現(xiàn)的客戶點c,在R中創(chuàng)建一條線段[l-a(c)+d(c,vr),l],并賦予權(quán)重w(c),l表示待計算的邊e的長度;對于每個在A(vl)和A(vr)中都出現(xiàn)的客戶點c,如果l≤2·a(c)-d(c,vl)-d(c,vr),則在R中創(chuàng)建一條線段[0,l],并賦予權(quán)重w(c);否則,在R中創(chuàng)建兩條線段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l],并賦予權(quán)重w(c);計算點集合I,I是整條邊[0,l]的子集,使得R中所有覆蓋I的線段的權(quán)重之和最大化;返回點集合I為邊e上的局部最佳位置,對應(yīng)的收益值m為R中所有覆蓋I的線段的權(quán)重之和。進(jìn)一步的,在上述方法中,根據(jù)路網(wǎng)中設(shè)施點集合F或客戶點集合C發(fā)生的更新隨時動態(tài)監(jiān)控p的步驟包括:路網(wǎng)中設(shè)施點和客戶點的更新歸結(jié)為增加一個客戶點AddC(c),減少一個客戶點DelC(c),增加一個設(shè)施點AddF(f),減少一個設(shè)施點DelF(f)共四種基本操作;當(dāng)一個更新操作到來的時候,首先計算吸引距離會被更新所影響的客戶點的集合Vc,如果操作是AddC(c)或DelC(c),則Vc={c};如果操作是AddF(f)或DelF(f),則Vc={c|<c,d(c,v)>∈A(f)};對于每一個客戶點c∈Vc,找出該客戶點之前的吸引距離a0(c)和新的吸引距離a'(c),并建立兩個集合和對于每一個客戶點c∈Vc,根據(jù)a0(c),a'(c),來更新每一條邊e的局部最佳位置I以及對應(yīng)的收益值m,令更新前的局部最佳位置以及對應(yīng)的收益值分別為I0和m0;根據(jù)所有邊上的局部最佳位置I選出對應(yīng)的收益值m最大的作為最大競爭力位置p。進(jìn)一步的,在上述方法中,已知更新前的局部最佳位置以及對應(yīng)的收益值分別為I0和m0,根據(jù)a0(c),a'(c),來更新每一條邊e的局部最佳位置I以及對應(yīng)的收益值m的步驟包括:步驟一:初始化一個空的邊集E1;步驟二:對于E中的每條邊e(vl,vr),如果<vl,d(c,vl)>和<vr,d(c,vr)>者至少有一個存在于UC+和UC-的并集中,則把e加入邊集E1;步驟三:對于邊集E1中的每一條邊e(vl,vr)執(zhí)行如下步驟:初始化兩個空的點集I+和I-,如果<vl,d(c,vl)>存在于中,但是<vr,d(c,vr)>不存在于中,則向I-中加入一條線段[0,a0(c)-d(c,vl)];如果<vl,d(c,vl)>不存在于中,但是<vr,d(c,vr)>存在于中,則向I-中加入一條線段[l-a0(c)-d(c,vr),l];如果<vl,d(c,vl)>和<vr,d(c,vr)>都存在于中,則如果l≤2a0(c)-d(c,vl)-d(c,vr),則向I-中加入一條線段[0,l],l>2a0(c)-d(c,vl)-d(c,vr),向I-中加入兩條線段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l];與獲取I-一樣的方式,將換成a0(c)換成a′(c),類似地計算出I+;如果a0(c)<a′(c),則將一個臨時的flag設(shè)為ADD,計算I′=I+-I-,否則,將flag設(shè)為DEL,計算I′=I--I+;如果I′為空集,則跳出本循環(huán),訪問邊集E1中的下一條邊e;如果flag為ADD,則計算I=I0∩I′,如果I是空集,則重新初始化計算e上的I和m;否則,令m=m0+w(c);如果flag為DEL,則如果I′=[0,l],則I=I0,m=m0-w(c);否則,計算I=I0-I′,如果I是空集,則重新初始化計算e上的I和m,如果I不是空集,令m=m0;令I(lǐng)和m為邊e上新的局部最佳位置和對應(yīng)的收益值。根據(jù)本發(fā)明的另一面,提供一種查詢最大競爭力位置的動態(tài)監(jiān)控系統(tǒng),包括:定義模塊,用于給定一個客戶點的集合C和一個設(shè)施點的集合F,以及一個候選位置集合P,最大競爭力位置為其中w(c)是客戶點c的權(quán)重,如果客戶點c和設(shè)施點f在道路網(wǎng)絡(luò)中的距離d(c,f)是c和F中的點的極小值,則定義f是c的吸引者,c被f吸引,a(c)=d(c,f)為c的吸引距離,Cp是所有能被p吸引的客戶點,即獲取模塊,用于根據(jù)路網(wǎng)中初始的設(shè)施點集合F和客戶點集合C獲取p;動態(tài)監(jiān)控模塊,用于根據(jù)路網(wǎng)中設(shè)施點集合F或客戶點集合C發(fā)生的更新隨時動態(tài)監(jiān)控p。進(jìn)一步的,在上述系統(tǒng)中,所述獲取模塊包括:無向連通圖模塊,用于向表示路網(wǎng)的無向連通圖Go=(Vo,Eo)插入所有的設(shè)施點f和客戶點c來將Eo中的邊劃分成新的邊,對于每一個點ρ∈C∪F,先考慮ρ所在的邊e∈Eo,令e的兩個端點為vl和vr,然后將e分為兩部分即從vl到ρ和從ρ到vr,以使ρ成為無向連通圖的一個新頂點,加入所有的新頂點以生成了一個新的無向連通圖G=(V,E),且V=Vo∪C∪F;局部最佳位置和收益值模塊,用于對于每一條邊e∈Ec初始化計算其局部最佳位置I以及對應(yīng)的收益值m,其中,Ec為包含候選位置集合P中所有點的邊的集合,某個位置的收益值m為該位置能夠吸引到的所有客戶點的權(quán)重之和,局部最佳位置I為邊e上所有具有最大收益值的點集合;最大競爭力位置模塊,用于根據(jù)所有邊上的局部最佳位置I選出對應(yīng)的收益值m最大的作為最大競爭力位置p。進(jìn)一步的,在上述系統(tǒng)中,所述局部最佳位置和收益值模塊,用于通過Erwig和Hagen的算法來計算G中每一個頂點v的最近設(shè)施點f以及距離d(v,f);分別計算e的兩個端點vl和vr的吸引集合A(vl)和A(vr),其中,給定一個頂點v,A(v)是包含v能吸引到的所有客戶點c以及對應(yīng)距離d(c,v)的集合;根據(jù)已經(jīng)計算出的A(vl)和A(vr)計算e的局部最佳位置I以及對應(yīng)的收益值m。進(jìn)一步的,在上述系統(tǒng)中,已知一個頂點v,所述局部最佳位置和收益值模塊用于獲取A(v),具體包括:初始化A(v)為空集;用Dijkstra算法按照到v的距離升序遍歷G中所有頂點;對于每一個遍歷到的頂點v′,令a(v′)為v′到其最近的設(shè)施點f的距離,如果d(v,v′)≤a(v′),并且v′是一個客戶點,則將把<v′,d(v′,v)>加入頂點v吸引集合A(v)后;如果d(v,v′)>a(v′),則忽略所有以v′為端點的邊。進(jìn)一步的,在上述系統(tǒng)中,所述局部最佳位置和收益值模塊用于:建立一個一維平面R;對于每個在A(vl)中出現(xiàn)但是沒有在A(vr)中出現(xiàn)的客戶點c,在R中創(chuàng)建一條線段[0,a(c)-d(c,vl)],對這條線段賦予權(quán)重w(c);對于每個在A(vr)中出現(xiàn)但是沒有在A(vl)中出現(xiàn)的客戶點c,在R中創(chuàng)建一條線段[l-a(c)+d(c,vr),l],并賦予權(quán)重w(c),l表示待計算的邊e的長度;對于每個在A(vl)和A(vr)中都出現(xiàn)的客戶點c,如果l≤2·a(c)-d(c,vl)-d(c,vr),則在R中創(chuàng)建一條線段[0,l],并賦予權(quán)重w(c);否則,在R中創(chuàng)建兩條線段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l],并賦予權(quán)重w(c);計算點集合I,I是整條邊[0,l]的子集,使得R中所有覆蓋I的線段的權(quán)重之和最大化;返回點集合I為邊e上的局部最佳位置,對應(yīng)的收益值m為R中所有覆蓋I的線段的權(quán)重之和。進(jìn)一步的,在上述系統(tǒng)中,動態(tài)監(jiān)控模塊包括:分類模塊,用于將路網(wǎng)中設(shè)施點和客戶點的更新歸結(jié)為增加一個客戶點AddC(c),減少一個客戶點DelC(c),增加一個設(shè)施點AddF(f)和減少一個設(shè)施點DelF(f)共四種基本操作;第一獲取模塊,用于當(dāng)一個更新操作到來的時候,首先計算吸引距離會被更新所影響的客戶點的集合Vc,如果操作是AddC(c)或DelC(c),則Vc={c};如果操作是AddF(f)或DelF(f),則Vc={c|<c,d(c,v)>∈A(f)};第二獲取模塊,用于對于每一個客戶點c∈Vc,找出該客戶點之前的吸引距離a0(c)和新的吸引距離a'(c),并建立兩個集合和更新模塊,用于對于每一個客戶點c∈Vc,根據(jù)a0(c),a'(c),來更新每一條邊e的局部最佳位置I以及對應(yīng)的收益值m,令更新前的局部最佳位置以及對應(yīng)的收益值分別為I0和m0;結(jié)果模塊,用于根據(jù)所有邊上的局部最佳位置I選出對應(yīng)的收益值m最大的作為最大競爭力位置p。進(jìn)一步的,在上述系統(tǒng)中,所述更新模塊包括:初始化單元,用于初始化一個空的邊集E1;加入單元,用于對于E中的每條邊e(vl,vr),如果<vl,d(c,vl)>和<vr,d(c,vr)>者至少有一個存在于UC+和UC-的并集中,則把e加入邊集E1;更新單元,用于對于邊集E1中的每一條邊e(vl,vr)執(zhí)行如下過程:初始化兩個空的點集I+和I-,如果<vl,d(c,vl)>存在于中,但是<vr,d(c,vr)>不存在于中,則向I-中加入一條線段[0,a0(c)-d(c,vl)];如果<vl,d(c,vl)>不存在于中,但是<vr,d(c,vr)>存在于中,則向I-中加入一條線段[l-a0(c)-d(c,vr),l];如果<vl,d(c,vl)>和<vr,d(c,vr)>都存在于中,則如果l≤2a0(c)-d(c,vl)-d(c,vr),則向I-中加入一條線段[0,l],l>2a0(c)-d(c,vl)-d(c,vr),向I-中加入兩條線段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l];與獲取I-一樣的方式,將換成a0(c)換成a′(c),類似地計算出I+;如果a0(c)<a′(c),則將一個臨時的flag設(shè)為ADD,計算I′=I+-I-,否則,將flag設(shè)為DEL,計算I′=I--I+;如果I′為空集,則跳出本循環(huán),訪問邊集E1中的下一條邊e;如果flag為ADD,則計算I=I0∩I′,如果I是空集,則重新初始化計算e上的I和m;否則,令m=m0+w(c);如果flag為DEL,則如果I′=[0,l],則I=I0,m=m0-w(c);否則,計算I=I0-I′,如果I是空集,則重新初始化計算e上的I和m,如果I不是空集,令m=m0;令I(lǐng)和m為邊e上新的局部最佳位置和對應(yīng)的收益值。與現(xiàn)有技術(shù)相比,本發(fā)明通過給定一個客戶點的集合C和一個設(shè)施點的集合F,以及一個候選位置集合P,最大競爭力位置為其中w(c)是客戶點c的權(quán)重,如果客戶點c和設(shè)施點f在道路網(wǎng)絡(luò)中的距離d(c,f)是c和F中的點的極小值,則定義f是c的吸引者,c被f吸引,a(c)=d(c,f)為c的吸引距離,Cp是所有能被p吸引的客戶點,即根據(jù)路網(wǎng)中初始的設(shè)施點集合F和客戶點集合C獲取p;根據(jù)路網(wǎng)中設(shè)施點集合F或客戶點集合C發(fā)生的更新隨時動態(tài)監(jiān)控p,能夠快速和動態(tài)地查詢最大競爭力位置。附圖說明圖1是本發(fā)明一實施例的查詢最大競爭力位置的動態(tài)監(jiān)控方法的流程圖。具體實施方式為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式對本發(fā)明作進(jìn)一步詳細(xì)的說明。實施例一如圖1所示,本發(fā)明提供一種查詢最大競爭力位置的動態(tài)監(jiān)控方法,包括步驟S1至步驟S3。步驟S1,給定一個客戶點的集合C和一個設(shè)施點的集合F,以及一個候選位置集合P,最大競爭力位置為其中w(c)是客戶點c的權(quán)重,如果客戶點c和設(shè)施點f在道路網(wǎng)絡(luò)中的距離d(c,f)是c和F中的點的極小值,則定義f是c的吸引者,c被f吸引,a(c)=d(c,f)為c的吸引距離,Cp是所有能被p吸引的客戶點,即步驟S2,根據(jù)路網(wǎng)中初始的設(shè)施點集合F和客戶點集合C獲取p;進(jìn)一步的,步驟S2包括步驟S21至步驟S23。步驟S21,通過向表示路網(wǎng)的無向連通圖Go=(Vo,Eo)插入所有的設(shè)施點f和客戶點c來將Eo中的邊劃分成新的邊,對于每一個點ρ∈C∪F,先考慮ρ所在的邊e∈Eo,令e的兩個端點為vl和vr,然后將e分為兩部分即從vl到ρ和從ρ到vr,以使ρ成為無向連通圖的一個新頂點,加入所有的新頂點以生成了一個新的無向連通圖G=(V,E),且V=Vo∪C∪F;步驟S22,對于每一條邊e∈Ec初始化計算其局部最佳位置I以及對應(yīng)的收益值m,其中,Ec為包含候選位置集合P中所有點的邊的集合,某個位置的收益值m為該位置能夠吸引到的所有客戶點的權(quán)重之和,局部最佳位置I為邊e上所有具有最大收益值的點集合;優(yōu)選的,本步驟包括:通過Erwig和Hagen的算法來計算G中每一個頂點v的最近設(shè)施點f以及距離d(v,f);分別計算e的兩個端點vl和vr的吸引集合A(vl)和A(vr)。其中,給定一個頂點v,A(v)是包含v能吸引到的所有客戶點c以及對應(yīng)距離d(c,v)的集合;根據(jù)已經(jīng)計算出的A(vl)和A(vr)計算e的局部最佳位置I以及對應(yīng)的收益值m。其中,已知一個頂點v,A(v)通過如下步驟獲?。撼跏蓟疉(v)為空集;用Dijkstra算法按照到v的距離升序遍歷G中所有頂點;對于每一個遍歷到的頂點v′,令a(v′)為v′到其最近的設(shè)施點f的距離,如果d(v,v′)≤a(v′),并且v′是一個客戶點,則將把<v′,d(v′,v)>加入頂點v吸引集合A(v)后;如果d(v,v′)>a(v′),則忽略所有以v′為端點的邊。其中,根據(jù)已經(jīng)計算出的A(vl)和A(vr)計算e的局部最佳位置I以及對應(yīng)的收益值m的步驟包括:建立一個一維平面R;對于每個在A(vl)中出現(xiàn)但是沒有在A(vr)中出現(xiàn)的客戶點c,在R中創(chuàng)建一條線段[0,a(c)-d(c,vl)],對這條線段賦予權(quán)重w(c);對于每個在A(vr)中出現(xiàn)但是沒有在A(vl)中出現(xiàn)的客戶點c,在R中創(chuàng)建一條線段[l-a(c)+d(c,vr),l],并賦予權(quán)重w(c),l表示待計算的邊e的長度;對于每個在A(vl)和A(vr)中都出現(xiàn)的客戶點c,如果l≤2·a(c)-d(c,vl)-d(c,vr),則在R中創(chuàng)建一條線段[0,l],并賦予權(quán)重w(c);否則,在R中創(chuàng)建兩條線段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l],并賦予權(quán)重w(c);計算點集合I,I是整條邊[0,l]的子集,使得R中所有覆蓋I的線段的權(quán)重之和最大化;返回點集合I為邊e上的局部最佳位置,對應(yīng)的收益值m為R中所有覆蓋I的線段的權(quán)重之和。步驟S23,根據(jù)所有邊上的局部最佳位置I選出對應(yīng)的收益值m最大的作為最大競爭力位置p。步驟S3,根據(jù)路網(wǎng)中設(shè)施點集合F或客戶點集合C發(fā)生的更新隨時動態(tài)監(jiān)控p。優(yōu)選的,步驟S3包括步驟S31至步驟S35:步驟S31,路網(wǎng)中設(shè)施點和客戶點的更新歸結(jié)為增加一個客戶點(AddC(c)),減少一個客戶點(DelC(c)),增加一個設(shè)施點(AddF(f)),減少一個設(shè)施點(DelF(f))共四種基本操作;步驟S32,當(dāng)一個更新操作到來的時候,首先計算吸引距離會被更新所影響的客戶點的集合Vc,如果操作是AddC(c)或DelC(c),則Vc={c};如果操作是AddF(f)或DelF(f),則Vc={c|<c,d(c,v)>∈A(f)};步驟S33,對于每一個客戶點c∈Vc,找出該客戶點之前的吸引距離a0(c)和新的吸引距離a'(c),并建立兩個集合和步驟S34,對于每一個客戶點c∈Vc,根據(jù)a0(c),a'(c),來更新每一條邊e的局部最佳位置I以及對應(yīng)的收益值m,令更新前的局部最佳位置以及對應(yīng)的收益值分別為I0和m0;其中,已知更新前的局部最佳位置以及對應(yīng)的收益值分別為I0和m0,根據(jù)a0(c),a'(c),來更新每一條邊e的局部最佳位置I以及對應(yīng)的收益值m的步驟包括步驟一至步驟三:步驟一:初始化一個空的邊集E1;步驟二:對于E1中的每條邊e(vl,vr),如果<vl,d(c,vl)>和<vr,d(c,vr)>者至少有一個存在于UC+和UC-的并集中,則把e加入邊集E1;步驟三:對于邊集E1中的每一條邊e(vl,vr)執(zhí)行如下步驟三一至步驟三七:步驟三一:初始化兩個空的點集I+和I-,如果<vl,d(c,vl)>存在于中,但是<vr,d(c,vr)>不存在于中,則向I-中加入一條線段[0,a0(c)-d(c,vl)];如果<vl,d(c,vl)>不存在于中,但是<vr,d(c,vr)>存在于中,則向I-中加入一條線段[l-a0(c)-d(c,vr),l];如果<vl,d(c,vl)>和<vr,d(c,vr)>都存在于中,則如果l≤2a0(c)-d(c,vl)-d(c,vr),則向I-中加入一條線段[0,l],l>2a0(c)-d(c,vl)-d(c,vr),向I-中加入兩條線段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l];步驟三二:與獲取I-一樣的方式,將換成,a0(c)換成a′(c),類似地計算出I+;步驟三三:如果a0(c)<a′(c),則將一個臨時的flag設(shè)為ADD,計算I′=I+-I-,否則,將flag設(shè)為DEL,計算I′=I--I+;步驟三四:如果I′為空集,則跳出本循環(huán),訪問邊集E1中的下一條邊e;步驟三五:如果flag為ADD,則計算I=I0∩I′,如果I是空集,則重新初始化計算e上的I和m;否則,令m=m0+w(c);步驟三六:如果flag為DEL,則如果I′=[0,l],則I=I0,m=m0-w(c);否則,計算I=I0-I′,如果I是空集,則重新初始化計算e上的I和m,如果I不是空集,令m=m0;步驟三七:令I(lǐng)和m為邊e上新的局部最佳位置和對應(yīng)的收益值。步驟S35根據(jù)所有邊上的局部最佳位置I選出對應(yīng)的收益值m最大的作為最大競爭力位置p。實施例二本發(fā)明還提供另一種查詢最大競爭力位置的動態(tài)監(jiān)控系統(tǒng),包括:定義模塊,用于給定一個客戶點的集合C和一個設(shè)施點的集合F,以及一個候選位置集合P,最大競爭力位置為其中w(c)是客戶點c的權(quán)重,如果客戶點c和設(shè)施點f在道路網(wǎng)絡(luò)中的距離d(c,f)是c和F中的點的極小值,則定義f是c的吸引者,c被f吸引,a(c)=d(c,f)為c的吸引距離,Cp是所有能被p吸引的客戶點,即獲取模塊,用于根據(jù)路網(wǎng)中初始的設(shè)施點集合F和客戶點集合C獲取p;動態(tài)監(jiān)控模塊,用于根據(jù)路網(wǎng)中設(shè)施點集合F或客戶點集合C發(fā)生的更新隨時動態(tài)監(jiān)控p。進(jìn)一步的,在上述系統(tǒng)中,所述獲取模塊包括:無向連通圖模塊,用于向表示路網(wǎng)的無向連通圖Go=(Vo,Eo)插入所有的設(shè)施點f和客戶點c來將Eo中的邊劃分成新的邊,對于每一個點ρ∈C∪F,先考慮ρ所在的邊e∈Eo,令e的兩個端點為vl和vr,然后將e分為兩部分即從vl到ρ和從ρ到vr,以使ρ成為無向連通圖的一個新頂點,加入所有的新頂點以生成了一個新的無向連通圖G=(V,E),且V=Vo∪C∪F;局部最佳位置和收益值模塊,用于對于每一條邊e∈Ec初始化計算其局部最佳位置I以及對應(yīng)的收益值m,其中,Ec為包含候選位置集合P中所有點的邊的集合,某個位置的收益值m為該位置能夠吸引到的所有客戶點的權(quán)重之和,局部最佳位置I為邊e上所有具有最大收益值的點集合;最大競爭力位置模塊,用于根據(jù)所有邊上的局部最佳位置I選出對應(yīng)的收益值m最大的作為最大競爭力位置p。進(jìn)一步的,在上述系統(tǒng)中,所述局部最佳位置和收益值模塊,用于通過Erwig和Hagen的算法來計算G中每一個頂點v的最近設(shè)施點f以及距離d(v,f);分別計算e的兩個端點vl和vr的吸引集合A(vl)和A(vr),其中,給定一個頂點v,A(v)是包含v能吸引到的所有客戶點c以及對應(yīng)距離d(c,v)的集合;根據(jù)已經(jīng)計算出的A(vl)和A(vr)計算e的局部最佳位置I以及對應(yīng)的收益值m。進(jìn)一步的,在上述系統(tǒng)中,已知一個頂點v,所述局部最佳位置和收益值模塊用于獲取A(v),具體包括:初始化A(v)為空集;用Dijkstra算法按照到v的距離升序遍歷G中所有頂點;對于每一個遍歷到的頂點v′,令a(v′)為v′到其最近的設(shè)施點f的距離,如果d(v,v′)≤a(v′),并且v′是一個客戶點,則將把<v′,d(v′,v)>加入頂點v吸引集合A(v)后;如果d(v,v′)>a(v′),則忽略所有以v′為端點的邊。進(jìn)一步的,在上述系統(tǒng)中,所述局部最佳位置和收益值模塊用于:建立一個一維平面R;對于每個在A(vl)中出現(xiàn)但是沒有在A(vr)中出現(xiàn)的客戶點c,在R中創(chuàng)建一條線段[0,a(c)-d(c,vl)],對這條線段賦予權(quán)重w(c);對于每個在A(vr)中出現(xiàn)但是沒有在A(vl)中出現(xiàn)的客戶點c,在R中創(chuàng)建一條線段[l-a(c)+d(c,vr),l],并賦予權(quán)重w(c),l表示待計算的邊e的長度;對于每個在A(vl)和A(vr)中都出現(xiàn)的客戶點c,如果l≤2·a(c)-d(c,vl)-d(c,vr),則在R中創(chuàng)建一條線段[0,l],并賦予權(quán)重w(c);否則,在R中創(chuàng)建兩條線段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l],并賦予權(quán)重w(c);計算點集合I,I是整條邊[0,l]的子集,使得R中所有覆蓋I的線段的權(quán)重之和最大化;返回點集合I為邊e上的局部最佳位置,對應(yīng)的收益值m為R中所有覆蓋I的線段的權(quán)重之和。進(jìn)一步的,在上述系統(tǒng)中,動態(tài)監(jiān)控模塊包括:分類模塊,用于將路網(wǎng)中設(shè)施點和客戶點的更新歸結(jié)為增加一個客戶點AddC(c),減少一個客戶點DelC(c),增加一個設(shè)施點AddF(f)和減少一個設(shè)施點DelF(f)共四種基本操作;第一獲取模塊,用于當(dāng)一個更新操作到來的時候,首先計算吸引距離會被更新所影響的客戶點的集合Vc,如果操作是AddC(c)或DelC(c),則Vc={c};如果操作是AddF(f)或DelF(f),則Vc={c|<c,d(c,v)>∈A(f)};第二獲取模塊,用于對于每一個客戶點c∈Vc,找出該客戶點之前的吸引距離a0(c)和新的吸引距離a'(c),并建立兩個集合和更新模塊,用于對于每一個客戶點c∈Vc,根據(jù)a0(c),a'(c),來更新每一條邊e的局部最佳位置I以及對應(yīng)的收益值m,令更新前的局部最佳位置以及對應(yīng)的收益值分別為I0和m0;結(jié)果模塊,用于根據(jù)所有邊上的局部最佳位置I選出對應(yīng)的收益值m最大的作為最大競爭力位置p。進(jìn)一步的,在上述系統(tǒng)中,所述更新模塊包括:初始化單元,用于初始化一個空的邊集E1;加入單元,用于對于E中的每條邊e(vl,vr),如果<vl,d(c,vl)>和<vr,d(c,vr)>者至少有一個存在于UC+和UC-的并集中,則把e加入邊集E1;更新單元,用于對于邊集E1中的每一條邊e(vl,vr)執(zhí)行如下過程:初始化兩個空的點集I+和I-,如果<vl,d(c,vl)>存在于中,但是<vr,d(c,vr)>不存在于中,則向I-中加入一條線段[0,a0(c)-d(c,vl)];如果<vl,d(c,vl)>不存在于中,但是<vr,d(c,vr)>存在于中,則向I-中加入一條線段[l-a0(c)-d(c,vr),l];如果<vl,d(c,vl)>和<vr,d(c,vr)>都存在于中,則如果l≤2a0(c)-d(c,vl)-d(c,vr),則向I-中加入一條線段[0,l],l>2a0(c)-d(c,vl)-d(c,vr),向I-中加入兩條線段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l];與獲取I-一樣的方式,將換成,a0(c)換成a′(c),類似地計算出I+;如果a0(c)<a′(c),則將一個臨時的flag設(shè)為ADD,計算I′=I+-I-,否則,將flag設(shè)為DEL,計算I′=I--I+;如果I′為空集,則跳出本循環(huán),訪問邊集E1中的下一條邊e;如果flag為ADD,則計算I=I0∩I′,如果I是空集,則重新初始化計算e上的I和m;否則,令m=m0+w(c);如果flag為DEL,則如果I′=[0,l],則I=I0,m=m0-w(c);否則,計算I=I0-I′,如果I是空集,則重新初始化計算e上的I和m,如果I不是空集,令m=m0;令I(lǐng)和m為邊e上新的局部最佳位置和對應(yīng)的收益值。實施例二的其它詳細(xì)內(nèi)容具體可參見實施例一,在此不再贅述。本發(fā)明通過給定一個客戶點的集合C和一個設(shè)施點的集合F,以及一個候選位置集合P,最大競爭力位置為其中w(c)是客戶點c的權(quán)重,如果客戶點c和設(shè)施點f在道路網(wǎng)絡(luò)中的距離d(c,f)是c和F中的點的極小值,則定義f是c的吸引者,c被f吸引,a(c)=d(c,f)為c的吸引距離,Cp是所有能被p吸引的客戶點,即根據(jù)路網(wǎng)中初始的設(shè)施點集合F和客戶點集合C獲取p;根據(jù)路網(wǎng)中設(shè)施點集合F或客戶點集合C發(fā)生的更新隨時動態(tài)監(jiān)控p,能夠快速和動態(tài)地查詢最大競爭力位置。本說明書中各個實施例采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的系統(tǒng)而言,由于與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。專業(yè)人員還可以進(jìn)一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。顯然,本領(lǐng)域的技術(shù)人員可以對發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包括這些改動和變型在內(nèi)。