に有限のディスクセットがあり、に対して最小のディスクを計算するとします。これを行うための標準的な方法は、基底見つけるためMatoušek、SharirとWelzl [1]のアルゴリズムを使用することであるの、およびlet含む最小のディスク。ディスク以来、事実用いて代数的に計算することができる基礎で、各ディスク接線である。 D⋃L⊆DBLD=⟨B⟩⋃B⟨B⟩BB⟨B⟩
(ある基準の場合最小となるように A単位は有する最も三つの要素で;におけるボールのための一般的に基礎最大で要素があります。)L B ⟨ B ⟩ = ⟨ L ⟩ のR dは D + 1
次のようなランダム化された再帰アルゴリズムです。(ただし、理解しやすい反復バージョンについては以下を参照してください。)
手順:入力:ディスク、有限セット、ここでは()基底です。
B B B
- 場合、返します。B
- それ以外の場合は、をランダムに選択します。
- LET 。
- もしそして返す。
- B " B " ∪ { X }
使用に基づき計算するために。L
最近、このアルゴリズムを実装する理由がありました。ランダムに生成された数百万のテストケースで結果が正しいことを確認した後、実装でエラーが発生したことに気付きました。最後のステップでは、ではなくを返していました。M S W (L 、B '')
このエラーにもかかわらず、アルゴリズムは正しい答えを与えていました。
私の質問:アルゴリズムのこの誤ったバージョンがここで明らかに正しい答えを与えるのはなぜですか?それは常に(おそらく)動作しますか?もしそうなら、それはより高い次元でも真実ですか?
追加:いくつかの誤解
何人かの人々は、修正されたアルゴリズムが自明に正しいという効果に対して誤った議論を提案しているので、ここでいくつかの誤解を未然に防ぐことは役に立つかもしれません。1つの一般的な虚偽の信念があることであるように思わ。以下はその主張の反例です。所与のディスク、B 、C 、D 、E(境界以下のよう⟨ 、B 、Eは⟩も赤色で示されています)。
我々が有することができる。ノートその電子∉ ⟨ C 、D ⟩:
これがどのように起こるかです。最初の観測は、です。
- M S W ({ c } 、{ a 、b 、e } )を計算したい
- X = cを選択
- LET
- ことを確認
- そうしましょうの基礎とB ' ∪ { X } = { 、B 、C 、E }
- その観察
- 返します。これは{ b 、c }です
ここで考えます。
- M S W ({ c 、d } 、{ a 、b 、e } )を計算したい
- X = dを選択
- LET
- ことを確認
- そうしましょうの基礎とB ' ∪ { X } = { B 、C 、D }
- その観察
- 返します。これは{ c 、d }
(定性のために、私たちはディスクがものとする、B 、C 、D 、Eすべての半径2を有し、に中心れる(30 、5 )、(30 、35 )、(10 、5 )、(60 、26 )、および(5 、26 )それぞれ)。
追加:反復プレゼンテーション
アルゴリズムの反復表示について考える方が簡単かもしれません。私は確かにその挙動を視覚化する方が簡単だと思います。
入力:ディスクのリスト出力:Lの基礎
- してみましょう。
- ランダムにシャッフルします。
- それぞれについて、におけるL:
- もし:
- LET の基礎であるB ∪ { X }。
- 手順2に戻ります。
- 返します。
その理由は、アルゴリズムは終了する、なお、常に半径増加させるステップ5で -との唯一の有限多くの可能な値が存在するBは。
変更されたバージョンは、私が見る限り、そのような単純な反復プレゼンテーションを持ちません。(私はこの投稿に以前の編集で1つを与えようとしましたが、それは間違っていました-そして不正確な結果を与えました。)
参照
[1] JiMatíMatoušek、Micha Sharir、およびEmo Welzl。線形計画法の部分指数限界。Algorithmica、16(4-5):498–516、1996。