3
Douglas-Peucker line simplification algorithm的最壞情況時間複雜度爲O(n²)。然而,對於一個線實際上觸發這種最壞的情況下,兩件事情必須去「錯誤」的一次:爲Douglas-Peucker算法觸發最壞情況的行?
- 門檻必須每個遞歸步驟設置如此之低,最頂點保持
- ,與當前端點之間的直線偏離最大的頂點必須靠近其中一個端點(根據其在線上的索引,而不是歐幾里得位置)。 (如果相反,與線偏離最大的頂點的索引足夠接近當前端點之間的中間值,則該算法應導致深度爲
log(n)
的遞歸二進制細分,從而導致整體時間複雜度爲O(n log(n))
。)
雖然第一個標準很容易觸發(只需將公差閾值設置爲0.0),但我還沒有找到滿足第二個標準的線條。因此,是否存在導致最壞情況行爲的簡單示例行(最好是觸發最明顯的最差情況,即每個遞歸步驟中具有最高偏差的點直接連接到行的一個端點;但其他任何例子都很好)?
有些'之字形'會做。例如,考慮一些x位置爲[0,1,...,10]和y位置爲[0,10,-9,8,...,0]的點。繪製時看起來更容易;) –