1
如何不计算包含有限的一组圆的最小圆
假设我们有一个有限集LLL中的磁盘R2R2\mathbb{R}^2,我们希望计算最小磁盘DDD为其⋃L⊆D⋃L⊆D\bigcup L\subseteq D。做到这一点的标准方法是使用Matoušek,Sharir和Welzl [1]的算法找到了基础BBB的LLL,并让D=⟨B⟩D=⟨B⟩D=\langle B\rangle,最小的盘片容纳⋃B⋃B\bigcup B。磁盘⟨B⟩⟨B⟩\langle B\rangle可以使用代数的事实是,由于计算BBB为基础,在每个磁盘BBB相切⟨B⟩⟨B⟩\langle B\rangle。 (B⊆LB⊆LB\subseteq L为基础的LLL如果BBB是最小的,使得⟨B⟩=⟨L⟩⟨B⟩=⟨L⟩\langle B\rangle=\langle L\rangle甲基础具有至多三个元件;在一般用于在球RdRd\mathbb{R}^d的基础具有至多d+1d+1d+1。元素) 它是如下的随机递归算法。(但请参见下面的迭代版本,这可能更易于理解。) 过程:MSW(L,B)MSW(L,B)MSW(L, B) 输入:有限的磁盘LLL,BBB,其中BBB是(BBB)的基础。 如果L=∅L=∅L=\varnothing,返回BBB。 否则选择X∈LX∈LX\in L随意。 让B′←MSW(L−{X},B)B′←MSW(L−{X},B)B'\leftarrow MSW(L-\{X\}, B)。 如果X⊆⟨B′⟩X⊆⟨B′⟩X\subseteq\langle B'\rangle然后返回B′B′B'。 否则返回,其中乙”是的基乙' ∪ { X }。MSW(L,B′′)MSW(L,B″)MSW(L, B'')B′′B″B''B′∪{X}B′∪{X}B'\cup\{X\} 用作以计算L的基础。MSW(L,∅)MSW(L,∅)MSW(L, \varnothing)LLL 最近,我有理由实现此算法。在验证了数百万个随机生成的测试用例中的结果正确之后,我注意到我在实现中犯了一个错误。在最后的步骤我被返回,而不是中号小号w ^ (大号,乙”)。MSW(L−{X},B′′)MSW(L−{X},B″)MSW(L-\{X\}, B'')MSW(L,B′′)MSW(L,B″)MSW(L, B'') 尽管存在此错误,该算法仍给出正确的答案。 我的问题:为什么这种算法的错误版本在这里显然给出正确的答案?它总是(证明)有效吗?如果是这样,那么在更高维度上也是如此吗? 补充:一些误解 几个人提出了不正确的论据,以至于修改后的算法是完全正确的,因此在这里避免一些误解可能很有用。一个普遍的错误信念似乎是。这是该主张的反例。鉴于磁盘一个,b ,c ^ ,d ,È如下面(的边界⟨ 一个,b ,ê ⟩也以红色显示):B⊆⟨MSW(L,B)⟩B⊆⟨MSW(L,B)⟩B\subseteq\langle MSW(L, B)\ranglea,b,c,d,ea,b,c,d,ea,b,c,d,e⟨a,b,e⟩⟨a,b,e⟩\langle …