RAM과 튜링 머신의 복잡성 간 격차


9

P의 문제만을 고려한다면, 가장 빠른 알려진 워드 -RAM 알고리즘과 특정 문제에 대한 가장 빠른 알려진 Turing machine 알고리즘 사이에 큰 차이가 있습니까? 나는 일반적인 관심의 자연 문제에 대해 넓은 차이가 있다면 특히 관심이 있습니다.


6
RAM 시스템은 런타임시 오버 헤드가 Turing 시스템으로 시뮬레이션 할 수 있습니다 . 따라서 큰 차이는 없습니다. O(nlogn)
Shaull

@Shaull 자연 / 인기 문제에 대해 해당 크기의 차이가 있습니까?
Lembik

3
Palindrome은 단일 테이프 TM에서 시간 이 걸립니다 RAM의 경우 입니다). eecs.yorku.ca/course_archive/2008-09/W/6115/palindrome.pdfΩ(n2)O(n)
SamM

6
Shaull의 의견은 내가 아는 한 비 결정적 기계 및 2 테이프 TM 설정에서만 적용됩니다. 인용, 숄?
Ryan Williams

1
@ qbt937-와우, 과거의 폭발 :) 나는 인용이 없었기 때문에 인용을 제공하지 않았다고 생각합니다 (지금은 없습니다). Ryan Williams가 맞을 수도 있습니다.
Shaull

답변:


6

시간에 RAM 시스템에서 계산할 수있는 모든 문제는 시간 내에 Turing Machine에서 수행 할 수있는 것으로 알려져 있습니다 . 당신이 사용하는 메모리의 전체 크기가보다 더 할 수 없음을 통지 할 필요가 그건 당신이보다 더 쓰기 작업을했다는 것을 의미하기 때문에, 는 RAM 메모리, 튜링에서 뭔가를 가져올 때마다 그래서, 기계는 최악의 경우 시간이 소요되어 테이프에서 원하는 요소를 순차적으로 찾습니다. 메모리 액세스 외에도 나머지 작업에는 거의 시간이 걸립니다. 따라서 당신은 결박을 얻습니다.T(n)T(n)2T(n)T(n)T(n)


2
RAM은 입력 시간 (및 길이의 당사자)을 로그 시간으로 계산할 수 있지만 기본 Turing Machine은 해당 패리티를 계산하기 위해 선형 시간이 필요합니다.

1

아래 예는 워드 램의 문제를 해결하기 위해 을 사용 하는 알고리즘 가 1 테이프 튜링 머신 (TM 에서 을 필요로 할 수 있음을 증명합니다 )는 표시된 모든 계산을 정확하게 실행합니다 . 나는 질문이 1 테이프 TM과 관련이 있다는 것을 이해하고, 나는 이것의 응답에서만 이것을 사용합니다. Emil Jeřábek의 발언을 수정하기위한 편집입니다.AO(nlog(n))O(n2log(n)3)A

우리는 다음과 같은 더 일반적인 결론을 찾을 것 입니다. TM이 에서 RAM 의 알고리즘 에 의해 에서 해결 된 문제를 해결할 수 있음을 증명하기 위해 TM에서 를 실행 것만으로 는 충분 하지 않습니다 . 영리한 알고리즘이 필요할 수 있습니다. 오버 헤드 를 증명하려는 경우에도 동일하게 적용됩니다 . 필요할 때마다 영리한 알고리즘의 존재를 입증하는 것은 즉각적으로 멀리 떨어져있는 것처럼 보입니다. 이것은 기본적으로 TM에 대해 ( 알고리즘 ) 모든 RAM 계산 을 시뮬레이션 / 실행하여 TM 과 같은 TM 복잡성을 발표하는 다른 응답과 일치 하지 않습니다 .O(T(n)2)O(T(n))AAO(nlog(n))AO(T(n)2) 또는 입니다.O(T(n)nlog(n))

문제 : 각각 비트 에 저장된 정수 의 배열 / 테이블 이 제공 됩니다 . 위치를 가진 두 번째 배열 가 주어지며 , 각각은 비트를 기록합니다 . 임의의 경우 , 우리는 정의 의 경우 MOD MOD . 그렇지 않으면 입니다. 출력 . 입력이 테이프로 제공되는 것으로 간주합니다tabn=2klog(n)dlog(n)log(n)t[0..log(n)1]Xt=1tab[i]d[t]=tab[n/2+i]d[t] i[0..n/21]Xt=0t=0log(n)1Xtnlog(n)+log(n)log(n) Emil Jeřábek의 의견을 해결하기 위해 이진수.

알고리즘 RAM의A 워드 크기의 RAM 필요 = 바이너리 스트링 입력을 읽어 데이터. 그러나 데이터를 읽은 후에는 크기의 단어 만 사용할 수 있습니다 . 알고리즘 모든 을 통해 조건을 테스트하여 모든 를 계산합니다 . 의 메인 루프 는 FOR : 계산 . 총 복잡도는 (데이터 읽기) +w=log(n)O(nlog(n)+log(n)2)O(nlog(n))log(n)AXtO(n)i[0..n/21]At=0,1,2,log(n)1XtO(nlog(n))O(nlog(n))(계산 수행), 는 RAM의 에서 모두 할 수 있습니다 .AO(nlog(n))

1 테이프 TM의 알고리즘 : 1 테이프 TMA 은 고정 시간이 필요하다고 주장합니다 . TM의 관점에서, 결정 것은 길이가 인 2 개의 이진 문자열의 동등성을 테스트하는 것과 같습니다 . 예를 들어, MOD 작업 MOD 는 의 비트 을 제거하는 것과 같습니다 . 이러한 경우 결정 하는 것은 길이 비트 문자열에 대한 동등성 테스트와 같습니다 . 길이가 인 두 스트링의 동등성을 테스트하는 것이 잘 알려져 있습니다.O(n2log(n)2)tAtO(nlog(n))tab[i]d[t]0tab[i]Atn(log(n)1)/2m1 테이프 TM에서 가 필요 하지만 지금은 실제로 참조를 찾을 수 없습니다. 그러나 나는 ps에 증거를 제공합니다. TM 이 의 메인 루프 를 실행하는 경우, 각각에 대해 이상을 소비 해야합니다. 입니다.O(m2)AO((nlogn)2)t=0,1,2,log(n)1O(n2log(n)3)


추신. I 함께 비트 열을 해당 어떤지 테스트 표시 비트 수 없다 와 문자열에 palyndrome는 테스팅보다 더 빠를 수 (palyndrome가 적어도 취할 알려진 비트 시간). 우리는 동일성 테스트를 위해 TM 알고리즘을 수정하여 회문을 해결할 수 있습니다. 동등성 테스트 TM이 두 개의 정수로 시작한다고 가정합니다. 하나는 헤드 왼쪽에, 다른 하나는 오른쪽에 있습니다 (이것은 TM에 대한 가장 간단한 입력 양식입니다). 왼쪽 위치로의 각 이동은 오른쪽 위치로 미러링 (반사) 될 수 있습니다. 초기 TM이 (왼쪽) 위치에있을 때마다 미러링 된 TM은 (오른쪽) 위치에 있습니다. TM이 미만에서 동등성 테스트를 해결 한 경우mmO(m2)x<0xO(m2)이 수정 된 미러 TM은 미만의 회문을 해결 합니다.O(m2)

또한 일부 평등 테스트 TM 알고리즘이 있으며 지그재그가 필요하기 때문에 2 차 시간이 필요합니다. 예를 들어 course.cs.washington.edu/courses/cse431/14sp/scribes/ 에서 Turing Machine Example 2를 참조하십시오. lec3.pdf


회 문의 하한은 부 자연스러운 단일 테이프 모델에만 적용됩니다. 선형 시간으로 TM에서 두 스트링의 동등성을 테스트하는 것은 간단합니다. 더 긴 엔트리의 두 시퀀스의 동일성을 유지한다. 또한 질문이 전혀 이해가 되려면 두 기계 모델의 입력이 동일해야합니다. 즉 유한 알파벳 위에 문자열로 쓰여야합니다. 따라서 RAM은 각 항목을 읽고 단어로 변환하는 데 시간 O (log n)가 필요하므로이 작업은 의미가 없습니다.
Emil Jeřábek

@Emil Jeřábek, 나는 1 테이프 TM에 대해서만 생각한다는 것을 나타 내기 위해 답장을 편집 할 것입니다. TM이 선형 시간에서 평등을 테스트 할 수 있다고 말하면 2- 테이프 TM이라고 생각합니다. 그러나 전체 질문은 약 1 테이프 TM이라는 것을 이해했습니다. 입력 양식과 관련하여, 나는 적어도 일부 워드 RAM에 대해 당신이 옳을 수도 있다고 고백해야합니다. 그러나 내가 아는 한 C ++ int 배열은 일련의 비트를 함께 저장하는 것처럼 구분 기호없이 정수를 차례로 저장합니다. 16 비트의 10 ints는 정확히 160 비트를 차지합니다. 그렇지 않더라도 이런 식으로 작동하는 기계를 만들 수 있습니다.
Daniel Porumbel

3
복잡한 이론의 표준 Turing 기계 모델은 다중 테이프입니다. 여기서 C ++이 어떤 관련이 있는지는 알 수 없습니다. C ++에 대해서는 다루지 않고 RAM 모델에 대해서도 다루겠습니다. 이 모델에서 개별 메모리 위치는 길이 숫자를 보유 할 수 있지만 한 번에 하나 (또는 ) 메모리 위치 에서만 작동 할 수 있습니다 . 특히, 한 번에 한 위치에만 입력에 액세스 할 수 있습니다 . 일정한 시간에 " 입력 위치를 읽고 단일 단어로 결합 "할 수있는 작업이 없습니다 . O(logn)O(1)logn
Emil Jeřábek

두 가지 가능성이 있습니다. (1) 입력 위치 [0]은 첫 번째 숫자의 첫 번째 비트를 포함하고, 위치 [1]은 첫 번째 숫자의 두 번째 비트를 포함합니다. 그런 다음 튜링 머신처럼 RAM에서 읽는 데 시간이 필요합니다. 따라서 단일 테이프 TM을 사용하더라도 2 차 속도 만 향상됩니다. (2) 입력 위치 [0]에는 첫 번째 숫자, 위치 [1] 두 번째 숫자 등이 포함됩니다. 그러면 TM에서 문제가 의미가 없습니다.이 형식의 입력을 처리 할 수 ​​없기 때문입니다. 따라서 속도가 전혀 향상되지 않지만 머신 모델 중 하나에서만 표현할 수있는 문제입니다. O(nlogn)
Emil Jeřábek

@Emil Jeřábek, 귀하의 의견에 따라 문제를 제안하고 을 사용하여 테이프에서 데이터를 읽는 RAM 알고리즘을 제안했습니다 . 더 이상 관련이없는 의견을 제거했습니다. 이것이 당신이 지적한 문제를 해결하기를 바랍니다. O(nlog(n))
Daniel Porumbel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.