2

入力のすべての点が凸包上にある場合、quickhull アルゴリズムでパフォーマンスの低下を回避するにはどうすればよいですか?

4

2 に答える 2

2

QuickHull のパフォーマンスは、主に、各再帰呼び出し (または反復) で入力の一部を破棄できることに起因します。残念ながら、すべての点が円上にある場合、これは起こりません。この場合でも、再帰呼び出しごとに分割ステップがかなりバランスの取れたパーティションを提供する場合、O(nlog n)最悪の場合のパフォーマンスを得ることが可能です。2 次実行時間になる最悪のケースは、各呼び出しで分割のバランスが著しく不均衡になった場合 (たとえば、1 つの分割が常に空になる場合) です。これはデータセットに大きく依存するため、できることはあまりありません。

代わりに、 Graham の scan の Andrew のバリアントMergeHullなど、他のアルゴリズムを試してみることをお勧めします。両方とも、 O(nlog n)の最悪の場合の時間計算量が保証されています。

于 2012-05-05T07:32:26.810 に答える
0

いくつかのアルゴリズム実装の比較については、次のような多くの 2D アルゴリズムのパフォーマンスを比較する、高速で改善された 2D 凸包アルゴリズムと O(n log h) での実装に関する記事を参照することをお勧めします。

  • モノトーンチェーン
  • グラハムスキャン
  • ドロネー/ボロノイ
  • ちゃん
  • リューとチェン
  • ウエレット(私のもの)
于 2018-01-26T04:43:47.660 に答える