복잡성 가설 숫자 처리 문제 해결
본문 바로가기
지식공유방

복잡성 가설 숫자 처리 문제 해결

by 아네모네 2021. 9. 16.
반응형

복잡성 가설 숫자 처리 문제 해결

목표 기준에 따라 계산의 복잡성 가설은 불, 바퀴, 처리 가능성 가설과 함께 인류가 가장 잘 배운 업적 중 하나로 자리 잡았습니다.
우리는 이 과정에서 우리가 할 다른 모든 일에 대해 복잡한 가설을 절대적으로 요구할 것입니다.
그래서 우리가 뛰어들기 전에, 우리는 다시 모험을 하고 우리가 어디로 가고 있는지에 대해 확신을 가져야 합니다.
제가 하려고 했던 것은 양자 역학이 등장하기 전에 계산된 우주의 토대를 보여드리는 것입니다.
양자 역학의 놀라운 점은 더러운 실험적 계시에도 불구하고 기반의 일부를 변경한다는 것입니다.
다른 사람들은 변하지 않고, 다른 사람들은 그것이 그들을 변화시키는지 실제로 분명하지 않습니다.
어쨌든 양자 역학에 의해 사물이 어떻게 변하는지 논의할 필요가 있다고 가정하면, 그 시점에서 양자 역학 이전에 그것들이 어떻게 닮아가는지 알아내는 것이 좋습니다.
복잡한 가설을 연대순으로 나누는 것이 도움이 됩니다.

1950년대: Turingzoic 후기
1960년대: Asymptotic Age
1971: The Cook-Levin Space rock;
1970년대 중반 디아고 날로 사우르스의 멸종 :
1978: 초기 Cryptozoic
1980년대: 임의의 시간
1993: Razborudich 산의 방출; Combinataurs
1994의 종료 : Quantodactyls의 침입
1990년대 중반 소개: Derandomaceous Period
이 강연은 "고 복잡성"에 관한 것입니다: Diagonalosaurs가 지구를 관리했던 P, NP 및 NP 실현 이전 시대의 복잡성입니다.
현재 우리는 진짜 숫자에 대한 주장이 주어졌다고 가정해야 합니다.
예를 들어 For all real x, y, (x +y) 2=x2+2xy+y2
이것이 유효한지 가짜인지 알아야 합니다.
이 상황에 대해 선택 기술이 있는 것으로 보입니다.
이는 기본적으로 주장에 확장, 증가, 검사, 상수 0과 1, 광범위하고 실존적 수량자(지수 또는 삼각법 없음)가 포함되어 있을 때 기본적으로 1930년대 Tarski에 의해 입증되었습니다.
본능적으로, 우리의 모든 요인이 숫자가 아닌 실제 숫자에 걸쳐 있다는 우연한 기회에 모든 것이 매끄럽고 일정해야 하며 "이 문장은 증명할 수 없습니다"와 같은 괴델 문장을 개발하는 것은 절대 불가능합니다.
우리가 극적 능력을 던질 기회에, 분명히 괴델 문장을 인코딩하는 것은 기본적으로 불가능하며, 조사에서 난해한 문제입니다.
그럴 수도 있습니다.
우리가 극적 능력을 던져 진짜 숫자에서 변경하는 경우 복소수로 변환한 다음 그 시점에서 다시 괴델 문장을 인코딩할 준비가 되었습니다.
그리고 가설은 결정할 수 없는 상태로 돌아갑니다! 숫자 n은 1에 접근하기 위해 e2πin이 필요하다고 말함으로써 숫자가 됩니다.
그래서 우리는 그 지점에서 정수로 되돌아간 것입니다.
불편한 점은 n개의 이미지가 있는 문장의 실제를 선택하기 위해 계산이 수행한 단계 수를 계산한 후 엄청난 지수 더미처럼 발전했다는 것입니다.
그래서 1950년대에 실제 PC가 등장했을 때 누구나 생각했던 가장 중요한 일 중 하나는 진짜 숫자에 대한 선언을 선택하는 Tarski의 계산을 실행하는 것이라고 해서 Tarski에 대한 설명을 살펴보고 있었습니다.
따라서 오늘날 우리는 복잡성에 대해 이야기합니다.
또는 우리 중 대다수가 그렇게 할 수도 있습니다.
생각하는 것은 PC가 활용할 수 있는 일부 자산의 양에 대한 상한선을 강요한다는 것입니다.
가장 명확한 자산은 (1) 시간 측정 및 (2) 기억 측정이지만 다른 많은 자산도 특성화할 수 있습니다.
(확실히, Intricacy Zoo를 방문하게 되면 몇 백 개를 추적하게 될 것입니다.)
지식의 첫 번째 비트 중 하나는 1000만 단계 또는 200억 개의 메모리에서 처리할 수 있는 양을 묻는 경우 아무 데도 가지 않는다는 것입니다.
기본 모델에 대한 재량적인 결정을 내리기 전에는 구상에 대한 귀하의 가설이 무력할 것입니다.
따라서 여러분은 상상의 여지없이 가상의 소프트웨어 엔지니어링을 수행하지 않을 것입니다.
우리의 주제는 아니지만 그 자체로 매우 흥미롭고 불길하지 않으며 지칠 줄 모르는 주제인 디자인을 수행하게 됩니다.
모든 것이 동일하다면 보다 느슨한 질문을 제기해야 합니다.
문제 크기에 따라 직선(또는 2차 또는 로그)으로 전개되는 시간 측정에서 처리할 수 있는 금액은 얼마입니까? 이런 종류의 질문을 하면 일관된 변수를 간과할 수 있습니다.
이러한 라인을 따라, 우리는 TIME(f(n))을 일정한 경우 f( N). 유사하게, SPACE(f(n))는 일정한 경우 f(n)처럼 발전하는 공간 측정(즉, 메모리 조각)을 사용하여 실현 가능한 문제의 클래스입니다.
더 이상 말할 필요가 없습니다.
실제로 각 용량 f(n)에 대해 TIME(f(n))은 SPACE(f(n))에 포함됩니다.
Turing 기계는 모든 시간 단계에 대해 하나의 메모리 영역으로 간주되는 모든 것에 액세스 할 수 있기 때문입니다.
아마도 TIME(n2)이 TIME(n3)에 포함되어 있다는 데 동의할 것입니다.
대체로 n2 시간보다 n3 시간에 더 많은 문제를 처리할 수 있습니까?
여기서 예제 3과 2의 결정은 분명히 기본적입니다. n3 시간보다 n4 시간에 더 많은 문제를 해결할 수 있는지 알아내는 것은 정말 힘든 일입니다.
실제로 우연히도 n2 시간보다 n3 시간에 더 많은 문제를 해결할 수 있습니다.
이것은 1960년대에 Hartmanis와 Stearns에 의해 입증되었고 나중에 Turing Grant로 보상을 받은 Time Chain of command Hypothesis라는 주요 결과의 결과입니다.
우리는 증거가 어떻게 진행되는지 인식해야 합니다.
우리는 n2시간이 아닌 n3시간 안에 해결할 수 있는 문제를 발견해야 합니다.
그것은 우리가 상상할 수 있는 가장 쉬운 일이지만 Turing의 중단 문제의 단순한 기간 제한입니다.
튜링 머신 M이 주어지면 n2.5 단계로 간주되는 모든 것에서 M이 정지합니까? (여기서 n2.5는 n2와 n3 범위의 일부 용량일 뿐입니다.)
분명히 우리는 n2.5 단계에 대해 M을 재생성하고 중지되는지 확인하여 n3 벤처에서 위의 문제를 처리할 수 있습니다.
의심할 여지없이, 우리는 n2.5 log n 단계와 같은 것으로 문제를 처리할 수 있습니다.
일반적으로 재생산을 실행할 때 약간의 오버헤드가 필요하지만 오버헤드는 작게 만들 수 있습니다.
그러나 현재 P 프로그램이 있다고 가정합니다.
n2 단계에서 문제를 처리합니다.
우리는 불일치를 결정할 것입니다.
P를 서브루틴으로 활용함으로써 분명히 우리는 수반되는 행위와 함께 또 다른 프로그램 P'를 전달할 수 있습니다. 프로그램 M이 정보로 주어지면 P'는 M이 n2.5 단계로 간주되는 모든 것에서 멈추면 자신의 코드가 정보로 주어지면 영구적으로 실행됩니다.
M이 n2.5단계 이상 실행되면 자체 코드가 정보로 주어지면 n2.5단계에서 끝납니다.
게다가, P'는 최대 n2.5 단계에서 이 모든 작업을 수행합니다.
우리는 P'의 코드를 정보로 제공합니다.
이것은 P가 어떤 경우에도 결코 존재할 수 없다는 것을 암시하는 불일치를 제공합니다.
우리는 n17 대 n16, 3n 대 2n 등으로 대체할 수 있습니다.
하지만 여기에 정말 흥미로운 질문이 있습니다.
f와 g를 f가 근본적으로 g보다 빠르게 발전한다는 최종 목표로 대체할 수 있습니까?
놀라운 대답은 '아니오'입니다.
용량 g는 시간 구성성(time-constructibility)이라는 속성이 필요합니다.
이는 (기본적으로) 정보로 n이 주어진 g(n) 단계에서 중지하는 일부 프로그램이 있음을 의미합니다.
이 속성이 없으면 프로그램 P'는 M을 모방할 단계 수를 인식하지 못하고 경합이 진행되지 않습니다.
현재 일반 시민의 삶에서 경험하게 될 모든 능력은 시간을 두고 구성할 수 있습니다.
그러나 1970년대 중반에 복잡한 학자들은 그렇지 않은 일부 독특하고 빠르게 발전하는 능력을 구성했습니다.
게다가, 이러한 용량의 경우 복잡한 쪼개기 순서에서 임의로 거대한 구멍을 얻을 수 있습니다.
예를 들어 TIME(f(n))=TIME(2f(n))과 같은 정도의 용량 f가 있습니다.
어쨌든 n2개의 메모리로 실현할 수 없는 n3개의 메모리를 가지고 시간 진행 가설과 완전히 구별되지 않는 것은 명령의 공간 사슬 가설이며 합리적인 문제가 있다고 말합니다.
소프트웨어 엔지니어링에서 우리는 일반적으로 주어진 문제를 처리하기 위해 가장 빠른 계산을 원합니다.
어쨌든 모든 문제에 가장 빠른 계산이 있는 것은 틀림없습니까?
또는 모든 계산이 마지막 계산보다 빠르지만 다른 계산보다 느린 계산의 무한한 연속을 허용하는 문제가 다시 있을 수 있습니까?
두 개의 nxn 격자를 증가시키는 문제에 대해 생각해 보십시오.
눈에 띄는 계산은 O(n3) 시간이 걸립니다.
1968년 Strassen은 O(n2.78) 시간이 걸리는 보다 복잡한 계산을 했습니다.
업그레이드가 뒤따랐고 Coppersmith와 Winograd의 O(n2.376) 계산에서 완전한 원을 이루었습니다.
그러나 그것이 어디까지입니까?
n2 시간에 네트워크를 늘리는 계산이 있습니까?
여기에 더 특이한 기회가 있습니다.
각 ε>0에 대해 시간 O(n2+ε)에 nxn 프레임워크를 증가시키는 계산이 있을 수 있지만 ε이 0에 가까워지면 이러한 계산이 점점 더 복잡해집니다.

 

 

반응형

댓글