計算幾何入門 1.5:凸包構造算法下界

從極點法的O(n^4)複雜度,到極邊法的O(n^3),再到增量構造法和Jarvis March的O(n^2),我們經歷了將特定問題算法不斷優化、降低複雜度的過程。那麼還有比O(n^2)更高效的算法嗎?凸包構造算法的下界是什麼?推廣到一般情況,在計算模型固定的情況下特定問題的複雜度下界又是如何確定的?

 

在計算模型固定的情況下特定問題的複雜度下界(lower bound)是確定的。嚴謹考慮,在設計算法前應該先確定下界是多少。

 

對於某個問題的特定算法,我們當然能夠去評價這個算法的好壞,就是估算它的時間複雜度。算法能達到的下界也就是所謂問題的難度。當然這種評價通常是比較麻煩的,有時候甚至是不可行的。這就要引入新的的方式來衡量一個算法的好壞。

 

一、規約(reduction)

我們引入規約(reduction)的方法來間接衡量一個算法。規約簡單來講就是用一個“參照物”對比待評算法,得到算法的複雜度。規約的一般方法如圖:

左側是已知的問題A,已經明確它的難度,右側是待分析問題B,複雜度未知。我們在二者之間建立起一種基本reduction關係:linear-time reduction。linear-time reduction具體表述爲:任何一個A的輸入(input of A),都可以在O(n)複雜度轉化爲一個B的輸入(input of B),然後通過B的某種算法(any algorithm)計算出結果(output of B),而對於output of B又都可以在在O(n)複雜度轉化爲A問題的結果(output of A)。兩次轉換的複雜度不能超過線性,也就是linear-time。

 

能夠進行上述操作,就稱爲:A問題可以規約到B問題(problem A is linear-time reducible to problem B)。注意表述方式防止搞混A和B的位置。

 

可以通過曹衝稱象的故事來幫助理解規約的思想。要解決的問題是:沒有秤能直接稱量大象重量(問題B的難度無法直接衡量),解決方案是:利用船和石塊間接稱量。石頭塊的重量是可以直接稱量的(問題A的難度是已知的),利用船來轉換石頭和大象的重量是可操作的(規約的方法是可操作的)。

 

引入規約記號。problem A is linear-time reducible to problem B表示爲:

將問題A、B的難度分別表示爲|A|,|B|。規約記號的意思相當於|A|≤|B|,A的下界必然就是B的下界。規約的過程先將A的輸入轉化爲B的輸入,經過B的某種算法獲得解後又轉化爲A的解,也就是這個算法也是解決A問題的算法。已知A問題的下界,那麼這個算法必然不會低於A的這個下界。

 

二、構造凸包的下界

按照“曹衝稱象”的規約思想,分析問題的難度,最重要的在於找到“石頭”,而船就是規約這種方法。以二維凸包(2d-CH)來分析,首先將待解決的問題放到規約記號右邊,而左邊的“石頭”就是排序算法

排序是純粹的數值計算問題,而凸包是典型的幾何問題,二者是如何聯繫在一起的呢?前面增量構造法Jarvis March算法正是分別由兩種排序算法來類比引入的,可見排序和凸包之間有深刻的內在聯繫。二者之間的聯繫可以通過下圖表示:

首先清點要做的任務:

 

  • 可以在線性時間內,將排序問題的輸入轉化爲凸包問題的輸入
  • 可以在線性時間內,將凸包問題的結果轉化爲排序問題的結果

先看第一條。排序問題的輸入可以表示爲x軸上的一系列的點(圖中藍色點)。然後將這些點轉化爲凸包問題的輸入,就是將這些待排序的數轉化爲平面上的點。引入輔助線——一條拋物線,例如圖中藍色虛線。接下來要對藍色點做到拋物線上的映射(O(n)),映射在拋物線上的點用綠色標出。這樣就完成了將待排序數字轉化爲平面上點的操作。接下來就可以用某種算法將綠色點構造爲凸包,即圖中CH(P)。

 

 

再看第二條。凸包CH(P)就是問題問題B的解,如何將B的解轉化爲A的解?注意最左和最右邊兩點的連線,即圖中1和4的連線4→1。除去這條連線之外,其他首尾相接的連線:1→2,2→3和3→4都是“沿着x方向單調的”,遍歷這些首尾相連的邊(O(n))就能得到一系列的數值,並且已經是有序的了。這樣就將凸包問題的解——凸包CH(P)轉化爲了排序問題的解——有序數值序列。

 

兩次轉化說明規約是可行的,因此2d-CH問題的下界可由sorting的下界確定。一般而言,排序問題的難度是確定的:O(nlogn)。2d-CH問題的下界也就是

O(nlogn)

更高維的凸包問題下界也是如此。

 

增量構造法和Jarvis March的O(n^2)到O(nlogn)之間的鴻溝能否跨越呢?是否存在O(nlogn)複雜度的凸包構造算法?後續文章會有回答。

 

本文是學堂在線課程《計算幾何》的筆記,幫助理解和記錄思考過程,不夠嚴謹請見諒。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章