円の有限集合を囲む最小の円を計算しない方法


17

に有限のディスクセットLがあり、に対して最小のディスクを計算するとします。これを行うための標準的な方法は、基底見つけるためMatoušek、SharirとWelzl [1]のアルゴリズムを使用することであるの、およびlet含む最小のディスク。ディスク以来、事実用いて代数的に計算することができる基礎で、各ディスク接線である。 DLDBLD=BBBBBBR2DLDBLD=BBBBBB

(ある基準の場合最小となるように A単位は有する最も三つの要素で;におけるボールのための一般的に基礎最大で要素があります。)L B B = L のR dは D + 1BLLBB=LRdd+1

次のようなランダム化された再帰アルゴリズムです。(ただし、理解しやすい反復バージョンについては以下を参照してください。)

手順入力:ディスク、有限セット、ここでは()基底です。MSW(L,B)
B B BLBBB

  1. 場合、返します。BL=B
  2. それ以外の場合は、をランダムに選択します。XL
  3. LET BMSW(L{X},B)
  4. もしXBそして返すB
  5. B " B "{ X }MSW(L,B)BB{X}

使用に基づき計算するために。LMSW(L,)L

最近、このアルゴリズムを実装する理由がありました。ランダムに生成された数百万のテストケースで結果が正しいことを確認した後、実装でエラーが発生したことに気付きました。最後のステップでは、ではなくを返していました。M S W L B ''MSW(L{X},B)MSW(L,B)

このエラーにもかかわらず、アルゴリズムは正しい答えを与えていました。


私の質問:アルゴリズムのこの誤ったバージョンがここで明らかに正しい答えを与えるのはなぜですか?それは常に(おそらく)動作しますか?もしそうなら、それはより高い次元でも真実ですか?


追加:いくつかの誤解

何人かの人々は、修正されたアルゴリズムが自明に正しいという効果に対して誤った議論を提案しているので、ここでいくつかの誤解を未然に防ぐことは役に立つかもしれません。1つの一般的な虚偽の信念があることであるように思わ。以下はその主張の反例です。所与のディスクB C D E(境界以下のようB Eはも赤色で示されています)。BMSW(L,B)a,b,c,d,ea,b,e

ディスクa、b、c、d、e

我々が有することができる。ノートその電子C D MSW({c,d},{a,b,e})={c,d}ec,d

cとdを囲む最小の円にeが含まれていない

これがどのように起こるかです。最初の観測は、です。MSW({c},{a,b,e})={b,c}

  • M S W { c } { a b e } を計算したいMSW({c},{a,b,e})
  • X = cを選択X=c
  • LET B=MSW(,{a,b,e})={a,b,e}
  • ことを確認XB
  • そうしましょうの基礎とB '{ X } = { B C E }BB{X}={a,b,c,e}
  • その観察B={b,c}
  • 返しますこれは{ b c }ですMSW({c},{b,c}){b,c}

ここで考えます。MSW({c,d},{a,b,e})

  • M S W { c d } { a b e } を計算したいMSW({c,d},{a,b,e})
  • X = dを選択X=d
  • LET B=MSW({c},{a,b,e})={b,c}
  • ことを確認XB
  • そうしましょうの基礎とB '{ X } = { B C D }BB{X}={b,c,d}
  • その観察B={c,d}
  • 返します。これは{ c d }MSW({c,d},{c,d}){c,d}

(定性のために、私たちはディスクがものとするB C D Eすべての半径2を有し、に中心れる30 5 30 35 10 5 60 26 、および5 26 それぞれ)。a,b,c,d,e(30,5)(30,35)(10,5)(60,26)(5,26)


追加:反復プレゼンテーション

アルゴリズムの反復表示について考える方が簡単かもしれません。私は確かにその挙動を視覚化する方が簡単だと思います。

入力:ディスクのリスト出力Lの基礎L
L

  1. してみましょうB
  2. ランダムにシャッフルします。L
  3. それぞれについて、におけるLXL
  4.   もしXB
  5.     LET の基礎であるB { X }BB{X}
  6.     手順2に戻ります。
  7. 返します。B

その理由は、アルゴリズムは終了する、なお、常に半径増加させるステップ5で -との唯一の有限多くの可能な値が存在するBはBB

変更されたバージョンは、私が見る限り、そのような単純な反復プレゼンテーションを持ちません。(私はこの投稿に以前の編集で1つを与えようとしましたが、それは間違っていました-そして不正確な結果を与えました。)


参照

[1] JiMatíMatoušek、Micha Sharir、およびEmo Welzl。線形計画法の部分指数限界。Algorithmica、16(4-5):498–516、1996。


まず、「入力:...」という行で、「(of B)」ではなく「(of L)」が必要だと思います。第二に、MSW(L、B '')の代わりにMSW(L- {X}、B '')を返す場合、基底B ''は[B 'union {X}]の基底になるように定義されているため、Xはセットから削除しても、MSW(L- {X}、B '')でカバーされていることが保証されます。
JimN

いいえ、私は本当に「(of of B)」を意味し、Bは必ずしも再帰呼び出しのLのサブセットではありません。BLの要素は必ずしもこの例のように、MSW(L、B)によって覆われていないbl.ocks.org/robinhouston/c4c9dffbe8bd069028cad8b8760f392cここでB = { B E }(計算を進めるには、小さな矢印ボタンを押してください。)L={a,b,c,d}B={a,b,e}
ロビンヒューストン

回答:


1

再帰を続行する前にLからを削除するこのステップは、基底候補のプールから既に追加されたXを削除するため、実際にアルゴリズムを改善します。既存のアルゴリズムと同等であるため、常に機能することが証明されています。また、より高い次元でも機能します。XLX

アルゴリズムをトレースします。あなたが使用した場合があり、X LX B " "。我々は関係なく、ステップ3の結果を、ステップ2で再びそれを選んだと仮定Bが常に持つことになりますXを再帰関数は不変持っているので、B M S W L BをMSW(L,B)XLXBBXBMSW(L,B)

言い換えれば、が選択されている部分のステップ3へのアルゴリズムショートカットの改善。X


それが真実ではないという一般的です。質問に対する私のコメントにリンクされている例を見てください。BMSW(L,B)
ロビンヒューストン

どちらもそれはその一般的には該当しないそのことについては、!もしかしてX B ?議論をより厳密に説明しようとすると、うまくいかないことがわかります。XBXB
ロビンヒューストン

NB。その一般的にも当てはまらないBMSW(L,B)
ロビンヒューストン

BMSW(L,B)

1
B=BX
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.