우리는 유한 집합이 있다고 가정 의 디스크 , 우리는 가장 작은 디스크 계산하고자하는 에 대한 . 이렇게하는 표준 방법은 기저 찾을 Matoušek, Sharir 및 Welzl [1]의 알고리즘을 사용하는 의 하고하게 , 작은 디스크 함유 . 디스크 때문에, 사실하여 수학적 계산 될 수 기준 인, 각 디스크 에 접하는 .
( A는 기준 의 만약 최소가되도록 기준 많아야 세 요소를 가진다.에서 공에 대한 일반적인 기준이 최대 갖는 . 요소)
다음과 같이 무작위 재귀 알고리즘입니다. (그러나 이해하기 쉬운 반복 버전은 아래를 참조하십시오.)
절차 :
입력 : 유한 디스크 세트 , 여기서 는 ( ) 기준 입니다.
- 만일 , 리턴 .
- 그렇지 않으면 무작위로 을 선택하십시오 .
- 하자 .
- 경우 후 반환 .
- 그렇지 않으면 리턴하십시오 . 여기서 B ″ 는 B ′ ∪ { X } 의 기초입니다 .
쓰임 에 기초하여 계산하기 위해 L이 .
최근 에이 알고리즘을 구현해야했습니다. 무작위로 생성 된 수백만 개의 테스트 사례에서 결과가 올바른지 확인한 후 구현에 오류가 있음을 알았습니다. 마지막 단계에서 I는 반환 된 보다 M S W ( L , B를 " ) .
이 오류에도 불구하고 알고리즘은 정답을 제공했습니다.
내 질문 : 이 잘못된 버전의 알고리즘이 왜 여기에 올바른 답변을 제공합니까? 항상 (아마도) 작동합니까? 그렇다면 더 높은 차원에서도 마찬가지입니까?
추가 : 몇 가지 오해
몇몇 사람들은 수정 된 알고리즘이 사소하게 정확하다는 효과에 대한 잘못된 주장을 제안 했으므로 여기에서 약간의 오해를 포괄하는 것이 유용 할 수 있습니다. 하나의 인기있는 잘못된 믿음은 것으로 보인다 . 그 주장에 대한 반례가 있습니다. 디스크를 감안 , B , C , D , E (경계를 아래와 같이 ⟨ , B는 , 예를 ⟩ 빨강에 도시되어있다) :
우리는 ; 및 참고 예 ∉ ⟨ C , D ⟩ :
어떻게 이런 일이 일어날 수 있습니다. 첫 번째 관찰은 .
- 우리는 M S W ( { c } , { a , b , e } ) 를 계산하려고합니다
- X = c를 선택하십시오
- 하자
- 그 관찰
- 따라서 를 B ′ ∪ { X } = { a , b , c , e } 의 기초로 두십시오.
- 관찰
- 리턴 이며, { B , C }
이제 .
- 우리는 M S W ( { c , d } , { a , b , e } ) 를 계산하려고합니다
- X = d를 선택하십시오
- 하자
- 그 관찰
- 따라서 를 B ′ ∪ { X } = { b , c , d } 의 기초로 두십시오.
- 관찰
- 리턴 이며, { C , D }
(명확성을 위해, 우리는 디스크라고하자 , B는 , (C)는 , (D)는 , 전자 반경 2가 모두와 중심된다 ( 30 , 5 ) , ( 30 , 35 ) , ( 10 , 5 ) , ( 60 , 26 ) 및 ( 5 , 26 ) 각각.)
추가 : 반복 프리젠 테이션
알고리즘의 반복 표현에 대해 생각하는 것이 더 쉬울 수 있습니다. 분명히 그 행동을 시각화하는 것이 더 쉽다는 것을 알았습니다.
입력 : 디스크 목록 출력 : L 기준
- 보자 .
- 셔플 무작위로.
- L의 각 에 대해 :
- 만약 :
- 하자 의 기초가 될 B ∪ { X } .
- 2 단계로 돌아가십시오.
- 반환 합니다.
그 이유는이 알고리즘이 종료하면, 또한, 항상 반경이 증가 단계 5 - 그리고 단지 유한 한 다수의 가능한 값이있는 B는 .
수정 된 버전에는 내가 볼 수있는 한 간단한 반복 표현이 없습니다. (이 게시물의 이전 편집에서 하나를 제공하려고 시도했지만 잘못되어 잘못된 결과가 발생했습니다.)
참고
[1] Jiří Matoušek, Micha Sharir 및 Emo Welzl. 선형 프로그래밍을위한 부분 지수입니다. Algorithmica, 16 (4-5) : 498–516, 1996.