강의 6

튜링 기계의 변형들과 처치-튜링 명제

테이프를 늘리고, 갈래를 치고, 결과만 토해내도 — 결국 우리는 같은 산에 오른다.

1. 변형이라는 유혹

지난 강의에서 정의한 단일 테이프 결정적 튜링 기계(deterministic Turing machine, DTM)는 분명 강력하지만, 그 위에서 알고리즘을 직접 짜본 사람이라면 누구나 한 번쯤은 이렇게 외친다: "테이프 하나로는 못 해 먹겠다." 입력은 그대로 두고 작업 공간은 따로 쓰고 싶고, 결과는 또 다른 곳에 적고 싶다. 갈래마다 다른 추측을 시도해보고 싶고, 때로는 입력을 받지 않고 그냥 모든 출력을 토해내는 기계가 더 자연스럽기도 하다.

이 강의의 결론은 한 문장으로 요약된다: 이 모든 변형은 표준 단일 테이프 TM과 동치이다. 표현력은 같지만 사고의 편의는 천양지차이므로, 우리는 앞으로 증명에서 가장 편한 모델을 골라 쓸 권리를 얻는다. 그리고 이 권리의 철학적 일반화가 바로 처치-튜링 명제(Church-Turing thesis)이다.

2. 다중 테이프 튜링 기계

정의 6.1 (다중 테이프 TM). k-테이프 튜링 기계는 k개의 양방향 무한 테이프와 각각 독립적으로 움직이는 k개의 헤드를 갖는다. 입력은 1번 테이프에 쓰여 있고 나머지 테이프는 빈 칸(␣)으로 시작한다. 전이 함수는

δ : Q × Γk → Q × Γk × {L, R, S}k

이며, 한 단계에서 k개의 헤드 아래 기호를 동시에 읽고, k개의 기호를 쓰고, 각 헤드를 독립적으로 좌(L)·우(R)·정지(S) 중 하나로 움직인다.

S(정지) 옵션이 등장했다고 당황할 필요는 없다. 우리는 곧 이 모델을 단일 테이프 모델로 시뮬레이션하면서 어차피 표현력이 같음을 보일 것이고, 실제로 단일 테이프 모델에서도 두 단계로 쪼개면 정지를 흉내 낼 수 있다.

정리 6.2. 모든 다중 테이프 TM은 어떤 단일 테이프 TM과 동치이다. 즉, 같은 언어를 인식한다.
증명 스케치. k-테이프 TM M이 주어졌을 때, 단일 테이프 TM S는 한 줄에 모든 정보를 압축한다. 핵심 아이디어는 두 가지다.
  1. 트랙 인터리빙. Sk개의 테이프 내용을 구분 기호 #로 잘라 한 줄에 늘어놓는다. 입력이 w1w2wn이라면 초기 테이프는
    #w1w2wn#␣#␣#…#
    형태가 된다. 각 # 사이의 구간이 M의 한 테이프에 대응한다.
  2. 헤드 위치 마커. M의 각 헤드 위치를 표시하기 위해 알파벳을 두 배로 늘려 "점이 찍힌" 버전 Γ̇를 도입한다. i번째 구간에서 단 하나의 칸에만 점을 찍어 헤드의 위치를 기록한다.
SM의 한 단계를 다음과 같이 흉내 낸다. 먼저 테이프를 처음부터 끝까지 한 번 훑어 k개의 점 찍힌 기호를 메모리(즉, 상태)에 기록한다. δ를 적용해 새 기호와 이동 방향을 결정한다. 다시 테이프를 훑으며 k개 위치에 새 기호를 쓰고 점을 옆 칸으로 옮긴다. 만약 어떤 점이 자신의 # 경계에 부딪히면, 그 구간 오른쪽 전체를 한 칸씩 밀어 새 빈 칸을 삽입한다 — 이것이 양방향 무한 테이프를 단일 테이프 위에서 흉내 내는 비용이다.

Mt(n)단계 동안 사용하는 공간은 O(t(n))이므로, S의 한 단계는 O(t(n))시간이 걸리고 전체적으로 O(t(n)2)시간이면 충분하다. 시간 복잡도는 제곱으로 늘지만, 인식되는 언어 자체는 한 글자도 바뀌지 않는다.
한 줄 메모. "여러 테이프 = 빠른 단일 테이프"이다. 알고리즘 설계 시에는 다중 테이프로 사고하고, 이론 증명 시에는 단일 테이프로 환원하는 것이 표준 워크플로우다.

3. 비결정적 튜링 기계

정의 6.3 (NTM). 비결정적 튜링 기계(nondeterministic TM, NTM)는 전이 함수가

δ : Q × Γ → 𝒫(Q × Γ × {L, R})

인 점만 다르다. 한 구성에서 가능한 다음 구성이 여럿일 수 있고, NTM N적어도 하나의 계산 분기가 수락 상태에 도달하면 입력을 수락한다. NTM의 계산은 트리이다 — 뿌리는 시작 구성이고 각 노드의 자식은 그 구성에서 가능한 다음 구성들이다.
정리 6.4. 모든 NTM은 어떤 결정적 TM과 동치이다.
증명 스케치. NTM N이 주어지면 3-테이프 결정적 TM D를 만든다. 1번 테이프는 입력을 그대로 보존하고, 2번 테이프는 현재 시뮬레이션 중인 분기의 작업 공간이며, 3번 테이프는 분기 주소(address)를 담는다.

각 분기 주소는 어떤 정수의 수열 b1b2bm로, "1단계에서 b1번째 선택지, 2단계에서 b2번째 선택지, …"라는 의미다. D는 다음을 반복한다.
  1. 3번 테이프에 적힌 주소를 따라 N을 시뮬레이션한다. 도중에 주소가 가리키는 선택지가 존재하지 않으면(δ가 그만큼의 갈래를 갖지 않음) 이 분기를 포기하고 다음 주소로 넘어간다.
  2. 그 분기가 수락 구성에 도달하면 D도 수락한다.
  3. 그렇지 않으면 3번 테이프의 주소를 사전식 다음(lexicographically next) 문자열로 갱신한다.
이것은 본질적으로 계산 트리에 대한 너비 우선 탐색(breadth-first search, BFS)이다. 깊이 우선 탐색(DFS)은 왜 안 되는가? 어떤 분기가 무한 루프에 빠지면 영영 돌아오지 못해, 옆 가지에 있을지 모를 수락 분기를 발견하지 못하기 때문이다. BFS는 모든 깊이 d의 노드를 깊이 d+1로 넘어가기 전에 다 방문하므로, 수락 분기가 어딘가에 있다면 유한 시간 안에 반드시 만난다.

마지막으로 정리 6.2를 적용하면 3-테이프 결정적 TM은 단일 테이프 결정적 TM으로 환원된다. 결국 NTM ≡ DTM.
한 줄 메모. 시간으로 환산하면 결정적 시뮬레이션은 분기 수에 대해 지수적으로 비용을 치른다. P vs NP의 진앙지는 바로 여기다.

4. 열거기와 인식 가능성의 또 다른 얼굴

정의 6.5 (열거기). 열거기(enumerator) E는 입력 없이 작동하는 튜링 기계 변형으로, 작업 테이프와 별개의 출력 테이프를 가진다. E는 작동 도중 임의의 시점에 출력 테이프에 쓴 문자열을 특수 표시 #로 끝내며 "출력했다"고 선언한다. E가 열거하는 언어는 E가 언젠가 출력하는 모든 문자열의 집합이다(중복은 허용되며, 순서도 임의다).
정리 6.6. 언어 A가 튜링 인식 가능(Turing-recognizable)인 것과 A가 어떤 열거기에 의해 열거되는 것은 동치이다.
증명 스케치.

(⇐) EA를 열거한다고 하자. TM M은 입력 w에 대해 E를 시뮬레이션하면서 E가 새 문자열을 출력할 때마다 그것을 w와 비교한다. 같으면 수락하고, 아니면 계속 시뮬레이션한다. wA면 언젠가 Ew를 출력하므로 M은 수락한다. wAM은 영원히 멈추지 않는다 — 인식의 정의에 부합한다.

(⇒) TM MA를 인식한다고 하자. 입력 알파벳을 사전식으로 정렬해 s1, s2, … 로 두고, 열거기 E는 다음과 같이 동작한다.

i = 1, 2, 3, … 에 대해, Ms1, …, si 각각에 대해 i단계까지 시뮬레이션한다. 그동안 i단계 안에 수락하는 입력이 있으면 출력한다.

이른바 대각선식 시간 분배(dovetailing)다. Mwk단계에 수락한다면, i ≥ max(k, |w|+1)인 모든 라운드에서 w가 출력된다. 따라서 E는 정확히 A를 열거한다. 단순히 "s1에 대해 M을 끝까지 돌리고, 다음에 s2로…"라는 순진한 방법은 M이 첫 입력에서 멈추지 않으면 영원히 갇히기 때문에 통하지 않는다.
예제 6.7. 모든 짝수 길이 이진 회문(palindrome)의 집합을 인식하는 TM은 쉽게 만들 수 있다. 같은 집합을 열거하는 열거기도 쉽다 — 길이순으로 모든 이진 문자열을 생성하면서 회문인 것만 출력한다. 두 모델 사이의 환원이 무엇처럼 느껴지는지 직관을 갖자.

5. 처치-튜링 명제

지금까지 살펴본 변형은 빙산의 일각이다. 사람들은 "현실적인 계산 모델"이라 부를 만한 거의 모든 것을 정의해보았다.

놀랍게도 이 모든 모델은 정확히 같은 함수 클래스 — 부분 회귀 함수, 곧 튜링 계산 가능 함수 — 를 정의한다. 1936년 처치와 튜링은 이 사실을 다음 명제로 결정화했다.

처치-튜링 명제. "직관적 의미에서 알고리즘으로 계산 가능한 함수"의 클래스는 정확히 튜링 기계가 계산하는 부분 함수의 클래스와 같다.

이것은 정리가 아니다. 좌변의 "직관적"이라는 말 때문에 수학적으로 증명할 대상이 아니라, 직관적 개념과 형식적 개념을 동일시하자는 명제이자 약속이다. 그러나 90년이 지난 지금도 어떤 반례도 발견되지 않았고, 위에서 본 다양한 모델들의 등가성이 강력한 경험적 증거를 제공한다. 우리는 이제 "어떤 알고리즘이 존재한다"는 진술을 "어떤 튜링 기계가 존재한다"로 자유로이 바꿔 쓸 수 있는 면허를 갖게 된다.

한 줄 메모. 양자 컴퓨터도 처치-튜링 명제를 깨지 않는다. 양자 회로는 — 비효율적이긴 해도 — 고전 TM으로 시뮬레이션 가능하다. 무엇이 깨질지 모를 후보는 "효율적" 처치-튜링 명제(다항식 시간 버전), 곧 강처치-튜링 명제뿐이다.

6. 모델은 옷이고 알고리즘은 사람이다

강의를 마치며 한 가지만 기억하자. 단일 테이프든, 다중 테이프든, 비결정적이든, 람다 항이든, 우리가 "이것은 알고리즘이다"라고 부를 수 있는 것은 어떤 모델에서 표현해도 같은 함수를 계산한다. 모델은 알고리즘에 입히는 옷이다. 옷이 다양해도 사람은 한 명이다.

이것이 이론적으로 의미하는 바는 분명하다. 다음 강의부터 우리는 "결정 가능"과 "결정 불가능"을 자유롭게 말할 것인데, 이 개념들은 어떤 모델을 골라도 변하지 않는다. 다음 강의에서는 이 자유를 활용해 정규 언어와 문맥 자유 언어에 대한 수많은 결정 문제를 — 의외로 평이하게 — 알고리즘으로 풀어낼 것이다. 이후 강의 8에서 비로소 결정 불가능의 첫 풍경을 만나게 된다.