專利名稱:一種凸包的搜索方法
技術領域:
本發明涉及一種搜索方法,具體涉及一種針對分散目標點的凸包的搜索方法。
背景技術:
在工程技術中,需要對電路板中的焊點實施焊接,對于焊點數量很大的情況,常需要對焊接工具的移動路徑做特殊設置,根據電路板中焊點的位置數據規劃出一條經過所有焊點的閉合路徑,使得該路徑的總長度最小,以減少焊接工具在移動過程中的能量消耗和器件磨損。尋找焊接工具移動路徑的過程就是要解決“焊點自動檢查的路徑優化問題”。在車輛路由領域,也存在類似于“焊點自動檢查的路徑優化問題”的問題。當目的地數量較多且分散度較大時,對運輸工具的行駛路徑進行規劃是必要的,需要找出一條恰經過每個目的地一次且總行程最短的閉合路徑。按照該路徑行駛,運行的距離最短,運行的時間最短,可大幅降低運輸成本,提高運輸效率,節約能源消耗。在實際中,路徑的優化問題在許多領域都具有重要的應用價值,如計算機配線,通信網絡頻率分配以及電網布線等等,常見的路徑優化方法有“最近鄰方法”和“插入法”等。 “最近鄰方法”是以任意一個目標點作為路徑的起點,在路徑的末端后面總是選擇與其距離最近的一個目標點加入路徑中,重復這種搜索模式,直到將全部目標點都納入到路徑中,該路徑是一條優化路徑。“插入法”是在選擇下一個目的地時,選擇插入代價(dik+dw-du)最小的目的地。盡管“最近鄰方法”和“插入法”優化了路徑選擇,但是,它們在選擇下一個目的地時都未考慮與上一選擇步驟之間的關聯,因此具有一定的盲目性。為消除這種盲目性,應尋找一種能夠將所有目標點關聯起來的優化方法。針對由分散目標點形成的點集,存在一種凸包理論,其就是要將選擇各個目標點的步驟關聯起來,以確定點集的最外圍閉合環。因此,利用凸包理論能夠為解決路徑的優化問題提供新思路,消除現有方法中的盲目性。因此,為了解決路徑優化方法中的缺陷,需要利用凸包理論,確定目標點集的凸包。凸包,是指包含了目標點集中的所有點的最小凸多邊形。關于如何確定一個目標點集的凸包,R. L Graham提出了一種Graham掃描算法,該算法首先對有限點集排序,假設首先發現了一個內部點,以其為中心依據極角與極半徑依次對其余點進行排序,能夠確定該點集的凸包。Graham算法的優點在于在任何情況下,尤其在最壞情況下(所有的目標點都是凸包的頂點),計算點集的凸包有一個最優的時間復雜度。此外,一種較為簡便的方法是“包裹法”(Gift-Wrapping),其將縱坐標最小的點作為凸包的第一個頂點A,將與水平線的交叉積為正且夾角最小的點作為凸包的第二個頂點B,將與線段AB的交叉積為正且夾角最小的點作為凸包的第三個頂點C,依此類推,直至找到凸包的所有頂點。然而,盡管人們對凸包的搜索方法進行了大量研究,但運算過程都較為復雜,且耗時長,主要的問題在于對一些不可能屬于凸包的點反復搜索檢查,不僅浪費了大量的運算時間,還增加了運算成本。多年來,人們一直在尋找確定凸包的更優算法。
發明內容
所謂凸包,就是不考慮目標點集的中間部分,僅選擇目標點集邊緣處的點,令其形成凸包。根據凸包的含義,本發明提出一種簡單高效的凸包搜索方法,能夠將目標點集中不需要考慮的點自動移除。具體地,本發明提供了一種用于確定由分散放置的目標點形成的目標點集的凸包的搜索方法,其特征在于所述方法包含確定位于目標點集的最左側、最下側、最右側和最上側的目標點,分別記為第一頂點、第二頂點、第三頂點和第四頂點;確定第一點集,其包含以第一頂點、第二頂點、第三頂點和第四頂點為頂點的四邊形的內部的目標點;確定第二點集,其包含從目標點集中除去第一點集后剩余的目標點;在第二點集中搜索凸包頂點,將搜索到的凸包頂點依次連接形成目標點集的凸包。采用本發明所提出的方法搜索凸包,其效率是目前被公認為最好的 Jarvis' smarch方法的η/%倍,可大幅縮短運算時間,提高搜索效率,降低運算成本。
圖1是目標點集的多層凸包。圖2是確定新的凸包頂點后構建三角形的示意圖。圖3是確定新的凸包頂點后形成向量的示意圖。圖4是按照本發明的方法搜索到的凸包的示意圖。
具體實施例方式本發明提供一種確定由分散放置的目標點形成的點集的凸包的搜索方法,研究對象可以是任意元素,例如電路板上的焊點,多個目標旅游城市,計算機配線網絡中的多臺計算機等等,確定這些元素的凸包,就是要尋找由這些分散放置的目標點構成的點集中處在最邊緣的點。根據本發明的方法,首先確定位于這些分散的目標點形成的點集中位于最左側、 最下側、最右側和最上側的四個頂點,連接這四個點,形成一個不規則四邊形,被該四邊形所包圍的點必然不屬于凸包。于是,將四邊形所包圍的點從整個點集中移除出去,僅關心剩余的點,剩余點集的凸包就是原始目標點集的凸包。可以采用多種方法確定該剩余點集的凸包,如“Graham掃描算法”、“包裹法”,等等。如圖1實施例,將電路板上的焊點視為目標點,用ν表示,大量的焊點構成了一個目標點集,可以確定位于目標點集最左側、最下側、最右側和最上側的四個頂點分別為V1, V2, V3和V4 ;做一平行四邊形AB⑶,使得邊DA經過點V1,邊AB經過點V2,邊BC經過點v3,邊 ⑶經過點V4 ;其中,點A為坐標原點,邊AB沿χ軸,邊AD沿y軸。明顯地,目標點集中的全部點被包圍在平行四邊形AB⑶內部。另一方面,順次連接頂點Vl,V2, V3和V4,形成一個不規則四邊形V1V2V3V4,在其上,頂點V1, v2, V3和V4位于點集的最邊緣,必然屬于凸包,而對于點V6,V7, V21和V23等位于四邊形V1V2V3V4內部的點,則必然不屬于凸包。因此,從平行四邊形AB⑶中移除四邊形V1V2V3V4,僅考慮“剩余的”目標點,如V11, v17, V10等等。這表明,四邊形V1V2V3V4內部的目標點必然不是凸包頂點,在實施搜索時無需檢查這部分點,凸包頂點只可能存在于四邊形V1V2V3V4的外部,在確定由這些剩余目標點組成的剩余點集的凸包時,可利用“Graham掃描算法”、“包裹法”或其他搜索方法,剩余點集的凸包就是原始目標點集的凸包。利用上述方法搜索凸包頂點,可首先排除一部分必然不屬于凸包的目標點,僅關心那些有可能的目標點。在實際中,能夠大幅減少重復搜索,提高搜索效率,節約成本。該方法稱為“移除四邊形方法”。對于搜索剩余點集的凸包,不同于現有的“Graham掃描算法”、“包裹法”等搜索方法,本發明的“移除四邊形方法”優選地通過以下步驟來確定剩余點集中的凸包頂點以最左側、最下側、最右側和最上側的四個頂點中任一個為起點,以對應的剩余點集為搜索范圍,搜索一個新的目標點,經過起點和所述新的目標點的直線能使該剩余點集中的所有目標點位于該直線的同一側,且在該直線上,所述新的目標點與起點的距離最遠,則所述新的目標點就是凸包頂點。如圖2實施例,在“移除四邊形”之后,平行四邊形ABCD內剩余的目標點分布在四個不相交的區域內,這四個區域分別是三角形V1AV2、V2BV3、V3CV4和V4DVl。為了確定剩余點集的凸包,需要分別確定分布于這四個三角形區域內的凸包頂點。具體地,以vi,v2,v3* V4中的任一個為起點,例如首先以V1為起點,以與其對應的三角形V1Av2為搜索范圍,搜索到的點包括v24、V25, V11和v12。如果將這四個點分別與V1連接起來,那么相比線段V1VpV1V12和V1V25,線段V1^4與邊V1V2的夾角最大。也就是說,剩余點集中的所有點都位于線段V1E的右側(點E是線段V1R4的延長線與邊AB的交點)。那么,認為V24是凸包頂點。特別地,當線段V1E上存在多個目標點時,選擇距離V1最遠的點為凸包頂點。可優選地利用以下步驟進行判斷
權利要求
1.一種凸包的搜索方法,其特征在于包含確定位于目標點集的最左側、最下側、最右側和最上側的目標點,分別記為第一頂點、 第二頂點、第三頂點和第四頂點;確定第一點集,其包含以第一頂點、第二頂點、第三頂點和第四頂點為頂點的四邊形的內部的目標點;確定第二點集,其包含從目標點集中除去第一點集后剩余的目標點;在第二點集中搜索凸包頂點,將搜索到的凸包頂點依次連接形成目標點集的凸包。
2.根據權利要求1所述的方法,其特征在于,所述在第二點集中搜索凸包頂點包含構建一平行四邊形,其四條邊分別經過第一頂點、第二頂點、第三頂點和第四頂點,且覆蓋目標點集中的全部目標點;其中所述平行四邊形的四條邊和所述四邊形的四條邊構成四個三角形區域,每個三角形區域各自包圍第二點集中的一部分目標點;分別確定每個三角形區域中的凸包頂點;所確定的各三角形區域的凸包頂點構成第二點集的凸包頂點。
3.根據權利要求2所述的方法,其特征在于,其中確定三角形區域中的凸包頂點的步驟包含①將所述第一頂點、第二頂點、第三頂點和第四頂點確定為已知凸包頂點;②以本三角形區域中其中一個已知凸包頂點A為當前起點,以本三角形區域為搜索范圍,搜索當前第五頂點,以使第二點集位于經過當前起點和當前第五頂點的直線的一側或直線上,且在該直線上當前第五頂點與當前起點的距離最遠;③構建第五三角形,其三個頂點依次為當前起點、當前第五頂點和本三角形區域中未作為起點的已知凸包頂點B;④將第五三角形內部的目標點從本三角形區域中排除,并且將當前第五頂點作為凸包頂點;⑤判斷目標點更新后的本三角形區域中是否包含除凸包頂點之外的目標點,如果是, 則執行步驟⑥;否則結束本三角形區域中凸包頂點的確定過程;⑥以當前第五頂點為新的起點,以目標點更新后的本三角形區域為搜索范圍,搜索新的第五頂點;返回步驟③。
4.根據權利要求3所述的方法,其特征在于,所述搜索當前第五頂點,以使第二點集位于經過當前起點和當前第五頂點的直線的一側或直線上的步驟為判斷當前起點至本三角形區域中任一目標點的連線與當前起點至已知凸包頂點B的連線所成的角度,選擇角度最大的目標點作為搜索到的當前第五頂點。
5.根據權利要求3所述的方法,其特征在于,所述將第五三角形內部的目標點從本三角形區域中排除的步驟為以本三角形區域為搜索范圍,搜索任意一個目標點X,以當前第五頂點指向該目標點的向量為第一向量,以當前第五頂點指向已知凸包頂點B的向量為第二向量;計算第一向量與第二向量的叉積,當該叉積為負時,將目標點X從本三角形區域中排
全文摘要
本發明提供了一種凸包的搜索方法,用于確定由分散放置的目標點形成的目標點集的凸包,通過確定位于目標點集的最左側、最下側、最右側和最上側的目標點來排除一部分必然不屬于凸包的目標點,僅搜索那些有可能是凸包頂點的目標點。以n表示目標點的總數,以n0表示有可能是凸包頂點的目標點的數目,采用本發明所提出的方法搜索凸包,其效率至少是目前被公認為最好的Jarvis’s march方法的n/n0倍。
文檔編號G06F17/30GK102270233SQ201110214998
公開日2011年12月7日 申請日期2011年7月29日 優先權日2011年7月29日
發明者安凱, 辛明瑞 申請人:中國航天科技集團公司第五研究院第五一三研究所