유한 한 원을 둘러싸고있는 가장 작은 원을 계산하지 않는 방법 L\rangle 기준 많아야 세 요소를

우리는 유한 집합이 있다고 가정

L

의 디스크

R2

, 우리는 가장 작은 디스크 계산하고자하는

D

에 대한

⋃L⊆D

. 이렇게하는 표준 방법은 기저 찾을 Matoušek, Sharir 및 Welzl [1]의 알고리즘을 사용하는

B

L

하고하게

D=⟨B⟩

, 작은 디스크 함유

⋃B

. 디스크

⟨B⟩

때문에, 사실하여 수학적 계산 될 수

B

기준 인, 각 디스크

B

에 접하는

⟨B⟩

.

(

B⊆L

A는 기준

L

만약

B

최소가되도록

⟨B⟩=⟨L⟩

기준 많아야 세 요소를 가진다.에서 공에 대한 일반적인

Rd

기준이 최대 갖는

d+1

. 요소)

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

절차 :

MSW(L,B)


입력 : 유한 디스크 세트

L

,

B

여기서

B

는 (

B

) 기준 입니다.

  1. 만일
    L=∅

    , 리턴 B

    .
  2. 그렇지 않으면 무작위로
    X∈L

    을 선택하십시오 .
  3. 하자
    B′←MSW(L−{X},B)

    .
  4. 경우
    X⊆⟨B′⟩

    후 반환 B′

    .
  5. 그렇지 않으면 리턴하십시오 . 여기서 B B { X } 의 기초입니다 .
    MSW(L,B″)

    B″

    B′∪{X}

쓰임 에 기초하여 계산하기 위해 L이 .

MSW(L,∅)

L

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

MSW(L−{X},B″)

MSW(L,B″)

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


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


추가 : 몇 가지 오해

몇몇 사람들은 수정 된 알고리즘이 사소하게 정확하다는 효과에 대한 잘못된 주장을 제안 했으므로 여기에서 약간의 오해를 포괄하는 것이 유용 할 수 있습니다. 하나의 인기있는 잘못된 믿음은 것으로 보인다 . 그 주장에 대한 반례가 있습니다. 디스크를 감안 , B , C , D , E (경계를 아래와 같이 , B는 , 예를 빨강에 도시되어있다) :

B⊆⟨MSW(L,B)⟩

a,b,c,d,e

⟨a,b,e⟩

디스크 a, b, c, d, e

우리는 ; 및 참고 C , D :

MSW({c,d},{a,b,e})={c,d}

e∉⟨c,d⟩

어떻게 이런 일이 일어날 수 있습니다. 첫 번째 관찰은 .

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}

  • 그 관찰
    X∉⟨B′⟩

  • 따라서 B { X } = { a , b , c , e } 의 기초로 두십시오.
    B″

    B′∪{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}

  • 그 관찰
    X∉⟨B′⟩

  • 따라서 B { X } = { b , c , d } 의 기초로 두십시오.
    B″

    B′∪{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의 에 대해 :
    X

    L

  4.   만약 :
    X∉⟨B⟩

  5.     하자 의 기초가 될 B { X } .
    B

    B∪{X}

  6.     2 단계로 돌아가십시오.
  7. 반환 합니다.
    B

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

⟨B⟩

B

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


참고

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



답변

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

X

L

X

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

MSW(L,B′′)

X∈L

X∈B′′

B′

X

B⊆MSW(L,B)

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

X