하한을 증명할 수 있습니까?


24

계산상의 문제가 있다면, 그러한 계산에 대한 하한을 찾는 작업이 실제로 가능합니까? 단일 계산 단계가 어떻게 정의되고 증명에 어떤 모델을 사용하는지에 달려 있지만 일반적으로 하한을 일반적으로 증명합니까? 내가 의미하는 바는 "문제 가 시간 보다 더 빨리 해결할 수 없음 "과 같은 문제를 증명할 수 있다는 것 입니다.t ( X ) X엑스(엑스)엑스 에서 해결 될 수 시간이나 빨리"를?(엑스)

나는 하한과 그에 대한 증거에 대해 구체적으로 정보를 찾으려고 노력했지만 주제에 관한 책 / 신문 / 웹 사이트에 대한 권장 사항을 실제로 찾을 수 없습니까?

답변:


19

우리는 그런 것들을 절대적으로 증명할 수 있습니다.

(어떻게 든 정렬 / 구조화되지 않은) 숫자 집합의 최소값을 찾는 데 최소한 Ω ( n ) 시간 이 걸리는 등 많은 문제가 사소한 하한을 가지고 있습니다 . 이에 대한 증거는 간단합니다. o ( n ) 시간에 실행되는 가상 알고리즘 은 입력의 모든 숫자를 검사 할 수 없습니다. 따라서 일부 입력에서 알고리즘을 실행하면 입력의 특정 요소를 검사하지 않았 음을 알 수 있습니다. 해당 요소를 최소로 변경하면 알고리즘이 실패 할 수 있습니다.Ω()영형()

사소한 하한 은 비교 기반 모델에서 정렬하기위한 하한입니다. 그에 대한 증거는 다음과 같은 라인을 따라 간다 :의 입력 주어진 n 개의 번호가 N ! 가능한 출력 (입력은 정렬 된 목록의 순열 일 수 있으므로 출력도 입력의 순열 일 수 있음). 비교만으로 제한된다면, 우리의 알고리즘 (평균) 은 n 을 줄 수 있으려면 최소한 log 2 ( n ! ) = Ω ( n log n ) 비교를 수행해야합니다.Ω(로그)!로그2(!)=Ω(로그)다른 출력.!

하한은 더 강할 수 있습니다. 지수 하한 이있는 몇 가지 문제 (특히 하드 문제)가 있습니다. 이 클래스의 문제에는 (일반화 된) 체스, 체커 및 이동과 같은 게임을위한 최적의 전략을 계산하는 것이 포함됩니다. 이것의 증거는 시간 계층 정리 를 통해 이루어 지며 ( f의 일부 제한 사항에 따라 ) :이자형엑스나는이자형에프

함수 주어지면, 시간 O ( f ( n ) ) 에서 해결할 수 있지만 시간 o ( f ( n ) 에서 해결할 수없는 계산 문제가 있습니다.에프O(f(n)).o(f(n)logn)

기본적으로 함수 f를 생각할 수 있다면f 해결하는 데 많은 시간이 필요한 문제가 있습니다.

마지막으로, 반드시 시간 하한을 반드시 증명할 필요는 없지만 더 강한 무언가가 문제의 결정 불가능 성을 나타냅니다 (예 : 중지, 사후 대응).


입력 또는 출력의 크기가 가장 일반적인 하한입니다.
Raphael

14

네 가능합니다. 전형적인 예는 모든 비교 기반 정렬 알고리즘이 길이 n 의 목록을 정렬하기 위해 비교가 필요하다는 사실입니다 .Ω(nlogn)n

그러나 하한은 상한보다 증명하기가 훨씬 어려운 것 같습니다. 비교 가 필요한 정렬 알고리즘이 있음을 증명하려면 이러한 알고리즘 (병합 정렬 – voila !) 만 표시하면됩니다. 그러나 하한의 경우 어떻게 든 특정 클래스의 알고리즘으로 문제를 해결할 수 없음을 보여줄 필요가 있습니다. 이를 수행하는 데 어려움은 LN LPN PP S P A C EO(nlogn) 우리가 그 함유 물 중 적어도 하나는 (엄격한 것을 알면서도 LP S P C E 공간 계층 구조 정리에 의한)은 대부분의 사람들이 생각하는모든엄격한.

LNLPNPPSPACE,
LPSPACE

반면에, 라이언 윌리엄스라는 (내가 몇 번 들었어요과 이야기) 멋진 종이가 알고리즘에 대한 회로와 회로에 대한 알고리즘 그는 하한을 발견하고 찾는 알고리즘이 근본적으로 모든 아니라는 것을 주장하는을, 다른. 예를 들어, 하한 문제의 결정 불가능 성을 증명하는 알고리즘 (범용 튜링 머신)의 예를 들어 하한을 결정하는 데 정확히 사용됩니다 (비결정 불가).


나는 이것이 내가 ".. 당신은 어떻게 든 특정 클래스의 어떤 알고리즘도 당신의 문제를 해결할 수 없다는 것을 보여줄 필요가있다"고 생각합니다. 일반적으로 그런 것. @Tom van der Zanden이 내가 이해하는 최소값을 설명했지만 그 접근법은 일반적입니까? 증거를 만들 때 그런 종류의 논쟁을 갖는 것과 같은 일반적인 의미입니까? 링크도 감사합니다.
hsalin

1
@ user1288420 당신은 혼자가 아닙니다. 누구나 특정 클래스의 어떤 알고리즘도 어떤 문제를 해결할 수 없다는 것을 직관적으로 증명할 수 있다면 더 낮은 하한 결과를 얻을 수 있습니다! 일반적으로 클래스의 모든 알고리즘에있는 속성을 찾아야하며 해당 속성으로 인해 일부 문제가 해결되지 않음을 보여줍니다. 예를 들어, 서브 리니어 시간으로 실행되는 모든 Turing 머신은 모든 입력을 읽을 수없는 속성을 갖습니다. 그것은 대부분의 문제를 해결할 수 없다는 것을 의미합니다. 사소한 일입니다. 불행히도, 더 흥미로운 경우는 매우 어려운 것 같습니다.
David Richerby

3

간단한 예를 들어, 당신은 의 집합에서 가장 큰 숫자를 찾을 수 없습니다 선형 시간이 필요한 모든 숫자를 확인하지 않고 숫자 . 큰 증거가 없습니다. 그러나 항상 모든 데이터를 읽을 필요는없는 알고리즘이 있습니다. 좋은 예는 문자열에서 패턴의 모든 발생을 검색하는 것으로 전체 문자열을 읽을 필요가 없습니다 (Boyer-Moore 알고리즘). 그러나 이미 대답 한 것을 반복하지 말아야 할 것입니다.

그러나, 질문에는 하한 (또는 일반적으로 복잡성 한계)에 대해 더 많은 언급이 필요하다는 점이 있습니다.

계산 단계가 일정한 상한 (및 하한)을 갖는 것으로 간주 될 수있는 한, 단일 계산 단계 인 것을 선택하는 것은 무의미하다. 복잡성 결과는 상수까지 정의되므로 동일합니다. 단위 작업으로 또는 단일 작업으로 3 번의 비교를 수행해도 차이가 없습니다.

계산 비용을 평가하기위한 기준이되는 데이터의 크기에 대해서도 마찬가지입니다. 단일 정수 또는 두 개의 정수를 크기 단위로 사용하면 차이가 없습니다.

그러나 두 선택은 서로 관련이 있어야합니다.

로그영형(로그)

작업이 단위 비용을 갖는 것으로 간주 될 수 있는지 여부는 데이터가 단위 크기를 갖는 것으로 간주 될 수있는 것과 밀접한 관련이 있습니다. 그리고 이것은 계산 모델에 대해 선택한 추상화 수준에 따라 다릅니다.


문자열에서 패턴의 모든 어커런스를 찾으려면 전체 문자열을 읽어야합니다. 패턴이 "a"인 경우 문자열의 모든 단일 문자를 확인하지 않고 모든 어커런스를 찾을 수 없습니다.
David Richerby 2012

1
@DavidRicherby 실제로 항상 그런 것은 아닙니다. Boyer-Moore 알고리즘은 패턴의 끝에서 시작하여 문자열에서 점프합니다. 시도한 일치가 실패하면 문자열의 시작 부분을 읽을 필요가 없습니다. 또한 Knuth-Morris-Pratt 알고리즘과 유사한 최적화를 통해 패턴 구조로 인해 실패 할 것으로 예상되는 시도를 건너 뜁니다. 물론 전체 문자열을 읽어야하는 패턴이 있습니다.
babou

@DavidRicherby 왜 물어 보셨나요?
babou

나는 당신의 두 번째 의견을 이해하지 못합니다. 원래 답변에 잘못된 주장이 포함되어 있습니다. 물론 나는 그것이 틀렸다는 것을 알고 있었다. 그것이 내가 지적 할 수 있었던 방법이다! 다른 사람들은 그것이 틀렸다는 것을 알지 못했을 것이므로 답을 그대로 두는 것이 혼란 스러웠을 것입니다.
David Richerby 2012

1
@DavidRicherby 내 요점은 내가 무슨 뜻인지 이해했다는 것입니다. 내가 말한해야 하지 않을 수 보다는 하지 않습니다 . 독자들이 내가 말도 안되는 말을하게하는 코멘트 스타일을 요구하지는 않았다. 그렇게하는 동안, 당신은 정확히 같은 부주의 한 실수를했다 "진술에 의해 전체 문자열을 읽는 필요 하찮게 문자열에서 패턴의 모든 항목을 찾기 당신이 말한해야 할 때", " 문자열에서 패턴의 모든 발생을 찾는 것은 할 수있다 필요 전체 문자열을 읽습니다 . 필자는 이전 예제를 완화하기 위해 입력을 읽는 것이 항상 필요한 것은 아니라고 말하고 싶었습니다.
babou
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.