4

Douglas-Peucker ライン単純化アルゴリズムの最悪の場合の時間計算量は O(n²) です。ただし、この最悪のケースを実際にトリガーする行については、次の 2 つのことが同時に「うまくいかない」必要があります。

  • ほとんどの頂点が保持されるように、しきい値を非常に低く設定する必要があります
  • 各再帰ステップで、現在の端点間の線からの偏差が最大の頂点は、端点の 1 つに (ユークリッド位置ではなく、線上のインデックスの点で) 近くなければなりません。(代わりに、線からの最大の偏差を持つ頂点のインデックスが現在の端点の中間に十分近い場合、アルゴリズムは深さ の再帰的なバイナリ細分割を引き起こしlog(n)、全体的な時間の複雑さは になりO(n log(n))ます。)

最初の基準は簡単にトリガーできますが (許容しきい値を 0.0 に設定するだけです)、2 番目の基準を満たす線はまだ見つかりません。

したがって、最悪のケースの動作をもたらす簡単な例の行があります(できれば、各再帰ステップで最大の偏差を持つポイントが行のエンドポイントの1つに直接接続されるという明らかな最悪のケースをトリガーするものです;しかし、他の例も大丈夫です)?

4

1 に答える 1

5

したがって、Vincent van der Weele は正しいようです。振幅が増加する単純なジグザグ線は、Douglas-Peucker アルゴリズムの O(n²) 最悪のケースをトリガーします。

ここに画像の説明を入力

この場合、2 つの端点を結ぶ線からの距離が最も長い頂点は、常に右側の端点に直接隣接する頂点になります。したがって、ここで Douglas-Peucker アルゴリズムは O(n) の細分割ステップを必要とします。各ステップは右端の頂点を削るだけなので、残りの O(n) 個の頂点を反復処理して最長距離の頂点を見つける必要があります。総時間計算量 O(n²)

于 2015-07-22T14:27:32.690 に答える