999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

離散點集最小包圍圓算法分析與改進

2012-07-07 03:37:06李紅軍張曉鵬
圖學學報 2012年2期
關鍵詞:定義實驗

李紅軍 , 張曉鵬

(1. 北京林業大學理學院,北京 100083;2. 中國科學院自動化研究所模式識別國家重點實驗室&中法聯合實驗室,北京 100190)

平面點集的最小包圍圓(smallest enclosing disk)問題的提出至少可以追溯至1857年[1]。只是隨著計算機技術的快速發展,點集的最小包圍圓應用越來越廣泛,比如在工業機器人的設計、碰撞檢測、機器學習、計算機圖形學等領域中都有應用,研究成果也越來越多。僅就這個問題的算法設計而言,國內外也有不少文獻。本文對這些現有的典型算法給予簡單的介紹并進行分析和比較。為了避免重述,早期的研究結果可以參考Emo Welzl的有關工作[2]。1991年,Welzl在這篇文章中對早期的一些研究方法和結果進行了簡要評述并提出了新方法。Welzl用隨機增量算法求解平面點集的最小包圍圓或橢圓( smallest enclosing ellipse ),并把這個算法推廣到高維空間的最小包圍球(smallest enclosing ball )、最小包圍橢球(smallest enclosing ellipsoid )。后來的Mark de Berg等作了進一步的改進[3],我們稱之為改進的隨機增量算法。2005年,Frank Nielsen等也提出了一個基于對偶決策的、快速的、確定性算法[1],這里稱之為對偶決策算法。2000年復旦大學汪衛等提出了一個離散點集最小包圍圓的快速算法,我們稱之為最遠點優先漸近算法[4]。這3種算法思路清晰,不失為有代表性的經典算法。本文將對這3種算法進行分析、比較。

1 離散點集最小包圍圓和典型算法

1.1 最小包圍圓問題

問題:對于給定的平面上n個點所組成的一個集合P,求出P的最小包圍圓,即包含P中所有點、半徑最小的那個圓。也就是求出這個最小包圍圓的圓心位置和半徑。

對于這樣的問題,為了便于理解各種算法,需要了解一些有關最小包圍圓的性質:

性質 1 有限點集P的最小包圍圓是唯一的。

這里約定,若P中只有一個點v,則最小包圍圓是退化的,其半徑為 0,圓心為點v。這個定理的詳細證明參見文獻[2]。

性質 2 非退化最小包圍圓可以由 2個或者3個邊界點定義。

顯然,最小包圍圓的構成有兩種情況:第1種是距離最遠的2個邊界點定義了最小包圍圓的直徑。如圖 1(a)所示,直徑AB定義了這個最小包圍圓,其余的點都是包含在這個圓的內部。這意味著不能僅僅通過求最大三角形的外接圓來計算最小包圍圓。第2種情況是最小包圍圓的邊界上有3個以上的點,則任意3個邊界點為三角形頂點所定義的外接圓確定了這個點集的最小包圍圓。如圖 1(b) 所示,這個最小包圍圓由邊界點 A、B、C所形成的三角形的外接圓定義。需要注意的是,邊界線上可以有3個以上的點,只是任意3個邊界點定義的外接圓是相同的。因此,求點集P的最小包圍圓等價于求這些邊界點的最小包圍圓。

圖1 最小包圍圓由2個或3個邊界點確定

性質 3 點集P中,距離最大的2個點A、B不一定都在邊界上,但是必有,這里d為點集P的最小包圍圓的長度。

如圖2所示,點集P的最小包圍圓由等邊三角形ABC所定義,但是線段AD卻是最大的邊。顯然,線段AD為直徑的圓小于點集P的最小包圍圓。

證明見文獻[3]。

圖2 最長線段不一定是最小包圍圓直徑

性質 4 直角三角形或鈍角三角形的3個頂點的最小包圍圓是以最長邊為直徑的圓;銳角三角形3個頂點的最小包圍圓是三角形的外接圓。

證明:(1)設直角三角形或鈍角三角形ABC的最大邊為AB,則A、B兩點確定的最小包圍圓是以AB為直徑的圓,則點C在圓上或者圓內,如圖3(a)所示。根據引理1的前一部分知,A、B、C 3點確定的最小包圍圓還是以AB為直徑的圓。

(2)對于銳角三角形ABC,由于點C不屬于以AB為直徑的圓,因此,根據引理1的后一部分知點C在A、B、C三點確定的最小包圍圓DABC的邊界上;同理B和C也在最小包圍圓DABC的邊界上。不共線3點確定1個圓,所以DABC是A、B、C的外接圓,見圖3(b)。

上述性質對于理解、構造或者實現最小包圍圓算法有一定幫助。下面對幾個常用的、經典的算法思想進行簡要介紹和分析。

圖3 不共線三點確定的最小包圍圓

1.2 改進的隨機增量算法

Mark de Berg曾給出一種比較典型易于理解的隨機增量算法(randomized incremental algorithm, 簡記為 RIA)[3]。 其主要思想是:第一,隨機打亂點集中所有點的順序;第二,以序列中前2個點構造最小包圍圓D;第三,依次搜索其余的點,若某個點v在D外,則重新構造最小包圍圓D',使D'飽含D中的所有點且以v為邊界點。重復執行第3步,直到求出最小包圍圓。

這個算法的關鍵在于第3步,以v作為邊界點構造最小包圍圓,從而增加了構造約束,減少了自由度。該算法的內存耗用少,速度快。在隨機點集的條件下,期望運行時間為O(n)。但是,若原始輸入序列是有序的,則打亂點集的順序也是需要耗費時間的。

1.3 最遠點優先漸近算法

2000年汪衛等提出一種準確且快速的點集最小包圍圓算法[4],即最遠點優先漸近算法,簡記為DFAA。該算法的主要步驟是:第一,在點集中任取3個點:A、B、C;第二,以這3個點構造最小包圍圓D;第三,在點集P中查詢距離D的圓心最遠的點v;若v在D內則算法終止;否則,第四,在{A,B,C,v}中選取3個點,構造包含這4個點的最小包圍圓D',轉第二步驟,其中選取的這3個點盡可能是邊界上的點。

該算法實際上是一個確定性算法。主要的困難和時間耗費在第四步。事實上,根據引理1,這一步是可以改進的,因為新加入的點v必定是新的最小圓的邊界點。于是這一步可以修改為:

以 v為邊界點,并在{ A,B,C }中選取 2個點,構造包含這4個點的最小包圍圓D',轉第二步驟,其中選取的這3個點盡可能是邊界上的點。

修改后的算法判斷會減少,從而加快運行時間。第 3節的數值實驗以修改后的算法(記為DFAA+)作為對比。該算法的時間復雜度為中R是所求的最小圓的半徑,d為點集中不在圓周上但距圓周最近的點到圓周的距離。實際應用中,該算法時間復雜度是線性級的。

1.4 對偶決策算法

2005年Frank Nielsen提出一個快速近似的最小包圍圓算法[1],這個算法通過求解一系列的對偶決策問題(dual piercing Decision Problems)來實現,簡記為DPs。該算法的主要思想是:第一,計算所有點在x軸上的投影區間[min x, max x];第二,計算所有點到第1個點的距離最大值d1;第三,以4為初始半徑,以 ε =8為誤差控制,搜索區間為[maxx- r, minx+r]構造對偶決策,并進行迭代求解。其中,ε0為用戶指定的誤差控制閾值。

該算法優點是不但能夠求出平面上點集的最小包圍圓,也能求出圓盤集的最小包圍圓。算法時間復雜度為,其中ε為最小包圍圓的誤差控制閾值,即該算法是一個近似算法。該算法的速度較快,也屬于線性階的,此外,算法基本屬于確定性算法,其最壞時間復雜性比平均時間復雜性略差。但是該算法設計比較復雜,內存耗用比上述兩種算法大。

上面這3個常用算法以隨機增量算法影響比較大,我們的算法主要是對這個隨機增量算法進行改進,使其成為確定性算法,并加快求解時間。

2 較遠點對定義初始包圍圓的增量算法

文獻[3]介紹的隨機增量算法試圖通過生成點集的隨機順序來避免最壞時間復雜性,從而優化求解過程。事實上,這個目的可以通過調整距離較遠的 2個點作為輸入的前 2個點而得以解決。之所以不用相距最遠的2個點,是因為求解相距最遠的點對比較耗時。我們改進算法的主要步驟是:

Step 1 計算點集P的軸定向包圍盒,并記錄分別屬于不同邊的4個邊界點,設為,,如圖4所示。軸定向包圍盒的邊界點或許超過4個,為了減少算法比較和內存耗用,每條邊記錄1個邊界點。

圖4 計算點集的包圍盒信息

Step 2 計算這個軸定向包圍盒的寬(Bw)和高(Bh)。

Step 4 構造包含p1,p2的最小圓。之后的步驟用第1.2節介紹的改進的隨機增量算法。

根據性質3易知,p1,p2確定的最小包圍圓是整個點集的最小包圍圓的子集。從這 4步 可以看出,本文的改進算法是對改進的隨機增量算法的初始包圍圓進行了特定的初始化,使得初始包圍圓比較大,而計算這種軸定向包圍盒的時間復雜度是O(n)的,因而迭代次數減少,計算時間減少。更重要的是,這樣可以避免點集的最壞輸入順序,也不需要對輸入點集生成隨機順序。我們把這個算法稱為較遠點對定義初始包圍圓的增量算法, 簡記為FIIA。

3 實 驗

數值驗證實驗是在個人臺式電腦上進行。電腦的主要配置是:Intel(R) Core(TM)2 Extreme,CPU X9650@3.0GHz, 內存為3.0G。

為了對比本文分析的3個經典算法和本文的改進算法,設計了4組數據:矩形域隨機點集、圓域隨機點集、共線隨機點集和共線有序點集。其中,前2個數據為二維區域隨機點集。

矩形域隨機點集的采樣區域為

采樣點選取為此區域內的服從均勻分布的隨機數對。

圓域的隨機點集采樣區域為

共線隨機點集和共線有序點集都是來自于直線上的點,直線方程為

其中,本次實驗的參數k=0.4。這2個點集的差別在于共線隨機點集的點序是隨機的,而共線有序點集是按照x坐標遞增采樣。相鄰2個采樣點之間的間隔引入隨機數。這4個數據的采樣點個數和求取最小包圍圓的平均實驗時間列在表1。其中平均實驗時間為實驗重復進行 50次的平均運行時間。表1中的RIA表示改進的隨機增量算法(見第1.2節), DFAA+為改進第四步后的最遠點優先漸進算法(見第1.3節),DPs表示對偶決策近似算法(見第1.4節), FIIA為本文提出的較遠點對定義初始包圍圓的增量算法(見第2節)。表

1中各個數據的最優時間用加粗的字表示。從表1可以看出,在本文羅列的3種經典算法中,在對偶決策近似算法(DPs)時間開銷最大。最遠點優先漸進算法(DFAA+)最好。本文較遠點對定義初始包圍圓的增量算法(FIIA)是對隨機增量算法(RIA)的改進,時間效率大大提高,尤其是點集為共線的情況下,效果更加顯著。

表1 實驗數據信息和平均運行時間

實驗數據的截圖如圖5所示,因為4個算法算出的圓心和半徑相同,故實驗結果的截圖相同,因而也說明各個算法的正確性。

圖5 實驗數據及其最小包圍圓

實驗中最小包圍圓的空間擴展過程也可以顯示不同方法的收斂速度。這里我們把RIA算法和我們的FIIA算法進行對比,如圖6所示。圖6中的實驗包含 50個隨機點,每個子圖下方的數字表示前k個點確定的最小包圍圓。圖6中的第1行3個圖顯示RIA算法的最小包圍圓的動態擴展過程,第2行是我們的FIIA算法的運行結果。

圖6 RIA和FIIA算法前k個點確定的最小包圍圓, (a)-(c)為RIA算法結果;(d)-(e)為FIIA算法結果。

對比2行的k值可以看出,RIA算法在前41個點時可以求得最小包圍圓。而我們的 FIIA算法,由于預處理中選取了距離較大的2個點作為前2個輸入點,因此收斂速度快很多,算法在計算到前 22個點時就求得了最小包圍圓。可見,我們的改進算法在收斂速度方面有明顯的優勢。

4 結 論

關于離散點集的最小包圍圓問題,本文首先概述了點集最小包圍圓的幾個主要性質,這對于理解或構造最小包圍圓算法有直接的影響。接著本文對隨機增量算法、最遠點優先漸近算法、對偶決策算法等當前比較常用、比較典型的算法進行分析和對比實驗,結果表明過去的這3種算法中,汪衛等 2000年構造的最遠點優先漸近算法在時間效率方面最高。其間我們對最遠點優先漸近算法進行了細微的改進,減少了枚舉次數。

本文主要對隨機增量算法改進,即用軸定向包圍盒邊界上的較遠點對,作為隨機點集序列的前兩個元素,實現隨機增量算法的輸入點順序的優化。基于這一改進,本文提出的這個算法稱為較遠點對定義初始包圍圓的增量算法(FIIA)。我們的這個新算法是確定性算法,不再需要對點集的順序進行隨機化處理,并且求取最小包圍圓的速度顯著提高。在工程實踐中,點集的軸向包圍盒往往在讀入數據時就已經算好,因此,其結果能直接取代本算法的前兩步驟而獲得更好的時間性能。

[1]Frank N, Richard N. A fast deterministic smallest enclosing disk approximation algorithm [J].Information Processing Letters, 2005, 93(6): 263-268.

[2]Emo W. Smallest enclosing disks (balls and ellipsoids)[C]// Maurer H. (Ed.), New Results and New Trends in Computer Science, Lecture Notes in Computer Science, Heidelberg: Springer-Verlag,1991: 359-37.

[3][荷蘭]Mark de Berg, Marc van Kreveld, Mark Overmars, et al. 計算幾何: 算法與應用(第2版)[M].鄧俊輝譯. 北京: 清華大學出版社, 2005: 99-103.

[4]汪 衛, 王文平, 汪嘉業. 求一個包含點集所有點的最小圓的算法[J]. 軟件學報, 2000, 11(9):1237-1240.

猜你喜歡
定義實驗
記一次有趣的實驗
微型實驗里看“燃燒”
永遠不要用“起點”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
定義“風格”
做個怪怪長實驗
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
山的定義
公務員文萃(2013年5期)2013-03-11 16:08:37
主站蜘蛛池模板: 91欧美亚洲国产五月天| 国产一区在线视频观看| 91色爱欧美精品www| 美女国产在线| 日本三区视频| 国产一区二区三区在线观看免费| 国产成人久久综合777777麻豆| 福利姬国产精品一区在线| 欧美日韩精品一区二区在线线| 在线免费观看AV| 国产福利拍拍拍| 亚洲精品视频在线观看视频| 亚洲无码A视频在线| 国产第一页第二页| 高清免费毛片| 伊人蕉久影院| 亚洲热线99精品视频| 亚洲有无码中文网| 伊人色在线视频| 国产乱子伦手机在线| 中文字幕2区| 欧美成人第一页| 丝袜亚洲综合| 日本日韩欧美| 中文字幕调教一区二区视频| 欧美人人干| 国产va在线观看| 亚洲精品日产AⅤ| 免费观看精品视频999| 中文字幕佐山爱一区二区免费| 波多野结衣久久精品| 亚洲成人一区二区三区| 亚洲无限乱码一二三四区| 永久免费AⅤ无码网站在线观看| 无码视频国产精品一区二区| 国产人成乱码视频免费观看| 亚洲人妖在线| 国产欧美精品专区一区二区| 综合天天色| 国产亚洲精品资源在线26u| 中美日韩在线网免费毛片视频| 精品久久久久久成人AV| 无码高清专区| 欧美笫一页| 91精品国产91久久久久久三级| 在线中文字幕网| av天堂最新版在线| 呦女亚洲一区精品| 国产精品美女网站| 亚洲欧美日韩中文字幕在线一区| 91黄视频在线观看| 国产激情在线视频| 久久精品国产精品一区二区| 亚州AV秘 一区二区三区 | 永久天堂网Av| 国产美女叼嘿视频免费看| 国产欧美性爱网| 久久a级片| 国产正在播放| 欧美日韩精品综合在线一区| 色综合网址| 欧美亚洲国产精品第一页| 拍国产真实乱人偷精品| 91久久精品国产| 国产亚洲欧美日韩在线观看一区二区| 91精品福利自产拍在线观看| 亚洲无码熟妇人妻AV在线| 2020极品精品国产| www.狠狠| 亚洲一区二区三区香蕉| 亚洲日本一本dvd高清| 国产情精品嫩草影院88av| 欧美a在线看| 无码又爽又刺激的高潮视频| 久久亚洲精少妇毛片午夜无码| 一区二区三区在线不卡免费| 亚洲精品无码人妻无码| 亚洲自拍另类| 欧美午夜在线观看| 大陆精大陆国产国语精品1024| 国产香蕉在线视频| 国产乱人伦偷精品视频AAA|