일정한 시간에 해결할 수있는 사소한 문제?


14

일정한 시간은 절대적으로 낮은 시간의 복잡성입니다. 일정 시간에 계산할 수있는 사소한 것이 있습니까? 우리가 Turing machine 모델을 고수한다면, 입력의 더 긴 부분이 일정한 시간 내에 도달 할 수 없기 때문에 응답은 입력의 일정한 길이의 초기 세그먼트에만 의존 할 수 있기 때문에 많은 것을 할 수 없습니다.

반면에 O(logn) 비트 수 에 대한 기본 연산 이 단일 단계로 계산되는 다소 강력한 (보다 현실적인) 단위 비용 RAM 모델을 채택하면 사소한 문제를 해결할 수 있습니다. 일정한 시간에도 작업. 예를 들면 다음과 같습니다.

인스턴스 : 정수 n,k,l,d , 각각 O(logn) 비트에 의해 2 진 형식으로 제공됩니다 .

질문 : 꼭지점 연결이 k 이고, 가장자리 연결이 l 이고, 최소도가 d 가되도록 n vertex 그래프 가 있습니까?kld

정의에서 문제가 NP에 있다는 것은 분명하지 않습니다 . 그 이유는 자연 감시 (그래프)에 비트의 긴 설명 이 필요할 수 있고 입력은 O ( log n ) 비트 만으로 제공되기 때문 입니다. 한편, 다음 정리 ( B. Bollobas의 극단 그래프 이론 참조 )가 구출됩니다.Ω(n2)O(logn)

정리 : 하자 n,k,l,d 정수이어야. 다음 조건 중 하나가 충족되는 경우에만 정점 연결성 k , 간선 연결성 및 최소 차수 갖는 n 정점 그래프 가 있습니다 .kld

  • , 0kld<n/2
  • 12d+2nkl=d<n1
  • k=l=d=n1.

이러한 조건은 일정 시간 (단가 RAM 모델)으로 확인할 수 있기 때문에 정리는이 모델에서 일정한 시간 알고리즘으로 이어집니다.

질문 : 상수 시간 알고리즘의 다른 사소한 예는 무엇입니까?


6
확률 적으로 확인 가능한 증명을 확인합니까?
David Eppstein

6
귀하의 예가 시간 이라고 생각하지 마십시오 . 입력 길이는 m = O ( log n ) 이며,이 경우 일반적인 단어 RAM은 한 단계에서 O ( log m ) 비트 연산 만 허용 합니다. (대안은 입력 길이에 비례하여 단어 화를 허용하는 것이지만,이 경우 많은 "일정 시간"알고리즘의 이름을 지정할 수 있습니다 ...) 그 숫자 다음 에 길이가 n 인 문자열을 추가하려고 시도 할 수 있습니다. 해당 형식을 확인하는 방법이 O ( 1 )로 실행되는 것을 보지 못함O(1)m=O(logn)O(logm)nO(1)time : 총 문자열 길이가 실제로 해야합니다 ( log n 시간 필요 ) . Ω(logn)logn
Ryan Williams

4
David Eppstein의 제안은 무작위 O (1)-시간 알고리즘을 고려하는 더 흥미로운 방향을 가리킨다 고 생각 합니다. 이 경우 적어도 하나의 가능한 알고리즘 실행에서 모든 입력 비트에 액세스하기를 희망 할 수 있습니다.
Ryan Williams

4
무작위 O (1)-시간 알고리즘의 간단한 예는 근사 중앙값입니다 (입력을 대략 50-50으로 나눌 것이라는 점에서 대략적인 것입니다). 입력에서 무작위로 1000000 개의 요소를 무작위로 골라 중간 값을 계산하여 출력하면됩니다.
Jukka Suomela

5
나는 당신이 질문하는 것을 좋아하지만 당신의 예의 단점은 그것이 수학 정리에 의존한다는 것입니다. 이것을 당신이 말할 수있는 한계로 밀어 넣으십시오 : 인스턴스 양의 정수 . 질문 x n + y n = z n 과 같은 정수 n > 2 가 있습니까 (답은 True 또는 False입니다). 정답은 항상 거짓이기 때문에 실제로 일정한 시간 알고리즘이 있지만 이것은 분명히 원하는 종류의 예제가 아닙니다. 엑스,와이,n>2xn+yn=zn
J.-E.

답변:



5

조합 게임 이론에서 연구 된 게임의 많은 예가 있으며, 여기서 게임의 상태는 일정한 정수 값으로 설명 될 수 있습니다. 이들 중 일부의 경우 게임의 승리 전략을 일정한 시간에 계산할 수 있습니다. 그러나 그들은 또한 정확하게 계산 모델이 무엇인지에 대한 질문을 제기합니다.

가장 단순하고 가장 기본적인 조합 게임 중 하나는 nim입니다. 하나는 일정한 수의 콩 더미를 가지고 있으며 한 번의 움직임으로 승리 또는 잃어버린 한 규칙에서 원하는 수의 콩을 제거 할 수 있습니다 (규칙의 선택에 따라 다름) 마지막 콩을 가져 가면 비트 단위의 부울 xor 연산 (예 : C / C ++ / Java / etc와 같은 프로그래밍 언어의 ^ 연산자)을 허용하면 최적의 전략을 일정한 시간에 계산할 수 있습니다. 이것이 모델의 상수 시간 알고리즘입니까?

여기에는 일정한 시간의 정확한 결정 론적 알고리즘이 있다는 것이 알려져 있습니다 (비현실적으로 확장 된 계산 모델에서 일정한 시간에 숫자의 우선 순위를 테스트 할 수 있음). 그 알고리즘이 무엇인지는 알 수 없습니다. Sylver coinage 게임 에서 이기고 그것이이기는지 아닌지를 결정하십시오. 이 문제에 대한 순서도는 Berlecamp, Conway 및 Guy, Winning Ways 에 나와 있지만,이기는 움직임의 일반적인 특성에 대한 유한 한 예에 의존하며, 그 세트가 무엇인지 (또는 심지어는 빈).

조합 게임 이론의 또 다른 흥미로운 예는 Wythoff의 게임입니다. 각 게임 위치는 한 쌍의 정수 (즉, 계산 모델에서 일정한 공간)로 설명 할 수 있으며, 게임에서의 움직임은이 두 정수 중 하나를 더 작은 값으로 줄이는 것을 포함하며, 승리 전략은 위치로 이동하는 것을 포함합니다 이 두 정수 사이의 비율은 가능한 한 황금 비율에 가깝습니다. 그러나 많은 게임 위치에서 선택이 가능합니다. 두 정수 중 더 큰 정수를 황금비의 작은 배에 가깝거나 작은 정수를 황금비로 나눈 값으로 줄일 수 있습니다. 이 두 가지 선택 중 하나만이기는 것입니다. 따라서 최적의 전략은 일정한 수의 산술 연산으로 정의 할 수 있지만 이러한 연산에는 비합리적인 수인 황금비가 포함됩니다. 모델에서 일정한 시간 알고리즘입니까? 아마도 ( 로그 n 비트에정확한 황금비에 대한 근사)이지만 산술 연산 (제곱근 없음)과 고정 정수 상수 값을 사용하여 일정한 시간이 아닙니까?nlogn


감사합니다. 이들은 모두 흥미로운 예입니다. 그들은 또한 "일정한 시간"이라는 개념이 원래 생각했던 것보다 덜 명확하다는 사실을 밝게
비췄다

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