유한 한 원을 둘러싸고있는 가장 작은 원을 계산하지 않는 방법


17

우리는 유한 집합이 있다고 가정 L 의 디스크 R2 , 우리는 가장 작은 디스크 계산하고자하는 D 에 대한 LD . 이렇게하는 표준 방법은 기저 찾을 Matoušek, Sharir 및 Welzl [1]의 알고리즘을 사용하는 BL 하고하게 D=B , 작은 디스크 함유 B . 디스크 B 때문에, 사실하여 수학적 계산 될 수 B 기준 인, 각 디스크 B 에 접하는 B.

( BL A는 기준L 만약 B 최소가되도록 B=L 기준 많아야 세 요소를 가진다.에서 공에 대한 일반적인 Rd 기준이 최대 갖는 d+1 . 요소)

다음과 같이 무작위 재귀 알고리즘입니다. (그러나 이해하기 쉬운 반복 버전은 아래를 참조하십시오.)

절차 : MSW(L,B)
입력 : 유한 디스크 세트 L , B 여기서 B 는 ( B ) 기준 입니다.

  1. 만일 L= , 리턴 B .
  2. 그렇지 않으면 무작위로 XL 을 선택하십시오 .
  3. 하자 BMSW(L{X},B) .
  4. 경우 XB 후 반환 B .
  5. 그렇지 않으면 리턴하십시오 . 여기서 B B { X } 의 기초입니다 .MSW(L,B)BB{X}

쓰임 에 기초하여 계산하기 위해 L이 .MSW(L,)L

최근 에이 알고리즘을 구현해야했습니다. 무작위로 생성 된 수백만 개의 테스트 사례에서 결과가 올바른지 확인한 후 구현에 오류가 있음을 알았습니다. 마지막 단계에서 I는 반환 된 보다 M S W ( L , B를 " ) .MSW(L{X},B)MSW(L,B)

이 오류에도 불구하고 알고리즘은 정답을 제공했습니다.


내 질문 : 이 잘못된 버전의 알고리즘이 왜 여기에 올바른 답변을 제공합니까? 항상 (아마도) 작동합니까? 그렇다면 더 높은 차원에서도 마찬가지입니까?


추가 : 몇 가지 오해

몇몇 사람들은 수정 된 알고리즘이 사소하게 정확하다는 효과에 대한 잘못된 주장을 제안 했으므로 여기에서 약간의 오해를 포괄하는 것이 유용 할 수 있습니다. 하나의 인기있는 잘못된 믿음은 것으로 보인다 . 그 주장에 대한 반례가 있습니다. 디스크를 감안 , B , C , D , E (경계를 아래와 같이 , B는 , 예를 빨강에 도시되어있다) :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
  • 하자 B=MSW(,{a,b,e})={a,b,e}
  • 그 관찰 XB
  • 따라서 B { X } = { a , 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
  • 하자 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)는 , 전자 반경 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. L의 에 대해 :XL
  4.   만약 :XB
  5.     하자 의 기초가 될 B { X } .BB{X}
  6.     2 단계로 돌아가십시오.
  7. 반환 합니다.B

그 이유는이 알고리즘이 종료하면, 또한, 항상 반경이 증가 단계 5 - 그리고 단지 유한 한 다수의 가능한 값이있는 B는 .BB

수정 된 버전에는 내가 볼 수있는 한 간단한 반복 표현이 없습니다. (이 게시물의 이전 편집에서 하나를 제공하려고 시도했지만 잘못되어 잘못된 결과가 발생했습니다.)


참고

[1] Jiří Matoušek, Micha Sharir 및 Emo Welzl. 선형 프로그래밍을위한 부분 지수입니다. Algorithmica, 16 (4-5) : 498–516, 1996.


먼저, "Input : ..."라인에서 "(of B)"대신 "(of L)"을 원한다고 생각합니다. 두 번째로, MSW (L, B '') 대신 MSW (L- {X}, B '')를 반환 할 때 기본 B ''는 [B 'union {X}]의 기초로 정의되므로 X는 세트에서 제거한 경우에도 MSW (L- {X}, B '')가 여전히 적용됩니다.
JimN

아니요, 실제로 "(B)"를 의미하며 B는 재귀 호출에서 L의 하위 집합 일 필요는 없습니다. BL 요소가 반드시 이러한 실시 예에서와 같이, MSW (L, B)에 의해 커버되지 않는 bl.ocks.org/robinhouston/c4c9dffbe8bd069028cad8b8760f392c 여기서 B = { , B , E } (작은 화살표 버튼을 눌러 계산 단계를 진행하십시오.)L={a,b,c,d}B={a,b,e}
Robin Houston

답변:


1

재귀를 계속하기 전에 L 에서 를 제거하는이 단계는 기본 후보 풀에서 이미 추가 된 X 를 제거하기 때문에 실제로 알고리즘을 개선합니다 . 기존 알고리즘과 동일하기 때문에 항상 작동 할 가능성이 높으며 더 높은 차원에서도 작동합니다.XLX

알고리즘을 추적하십시오. 사용할 때 ,가 X LX B ' ' . 2 단계에서 다시 선택했다고 가정합니다. 3 단계의 결과에 관계없이 재귀 함수에는 불변 값 B M S W ( L , B ) 가 있기 때문에 B ' 는 항상 X를 갖습니다 .MSW(L,B)XLXBBXBMSW(L,B)

다시 말해, 가 선택된 부분에서 3 단계의 알고리즘 바로 가기가 개선 되었습니다.X


일반적으로 는 사실이 아닙니다 . 질문에 대한 내 의견에 연결된 예제를 살펴보십시오. BMSW(L,B)
Robin Houston

그 문제에 대해 일반적으로 that B ″도 사실이 아닙니다! 이것을 찾으 셨나요? X B " ? 나는 당신이 당신의 주장을 더 엄격하게 설명하려고 노력한다면, 그것이 효과가 없다는 것을 알게 될 것입니다. XBXB
Robin Houston

NB. 이는 일반적으로 사실에도 아니라고 . BMSW(L,B)
Robin Houston

BMSW(L,B)

1
B=BX
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.