核心概念
本文提出了一種簡單的隨機化快速凸包算法,其期望運行時間為O(n log h),其中h是凸包上的點數。該算法保持了原始快速凸包算法的簡單性,並且更接近於著名的隨機化快速排序算法。
摘要
本文提出了一種名為"射線快速凸包"的簡單隨機化算法,用於構建平面上一組n個點的凸包。該算法的期望運行時間為O(n log h),其中h是凸包上的點數。
該算法與著名的隨機化快速排序算法精神相似,即反復選擇一個隨機"樞紐"點,並根據該樞紐點將子問題分割。算法的關鍵步驟是使用射線查詢操作來確定樞紐點將點集分割的方式。我們提供了一種簡單的隨機增量射線查詢算法,其期望執行的方向測試次數最多為2n。
與原始的確定性快速凸包算法不同,該隨機化算法的期望運行時間與輸入點分布無關,並且可以與更複雜的算法相媲美或優於它們。例如,我們證明了該隨機化算法在n個點均勻分布於有界凸區域的情況下,其期望運行時間為O(n),與確定性快速凸包算法相同。我們還提供了實驗分析,顯示該隨機化算法在實踐中與確定性快速凸包算法相當或更快。
統計資料
在有界凸區域內均勻分布的n個點,該隨機化快速凸包算法的期望運行時間為O(n)。