앨런 튜링이 1936년에 처음 제안한 계산 모형인 튜링 기계에 대해 알아보자. 가장 간단한 계산 모형인 유한 상태 기계와 유사하지만 그와 달리 제한 없는 메모리를 가진 튜링 기계는 범용 컴퓨터를 훨씬 더 정확하게 모사한다. 튜링 기계는 실제 컴퓨터가 할 수 있는 모든 작업을 수행할 수 있다. 그럼에도 불구하고 튜링 기계도 특정 문제를 해결할 수는 없다. 실제로 이러한 문제는 계산의 이론적 한계를 넘어서는 문제이다.
튜링 기계 모형은 무한 테이프를 무한 메모리로 사용한다. 그 테이프에 적힌 기호를 읽고 쓸 수 있고 테이프 위를 움직이며 다닐 수 있는 테이프 헤드가 있다. 처음에 테이프에는 입력 문자열만 들어 있고 다른 부분은 비어 있다. 기계가 정보를 저장해야 하는 경우 이 정보를 테이프에 기록할 수 있다. 기계가 쓴 정보를 읽기 위해 기계는 헤드를 그 정보 위로 되돌아 갈 수 있다. 기계는 출력을 생성하기로 결정할 때까지 계산을 계속한다. 인식 및 거부 출력은 지정된 인식 및 거부 상태에 진입하여 얻을 수 있다. 인식 또는 거부 상태에 들어가지 않으면 영원히 멈추지 않고 계속 진행된다. 1
유한 상태 기계와 튜링 기계 사이의 차이점은 다음과 같다.
- 튜링 기계는 테이프에 쓰기와 읽기가 모두 가능하다.
- 읽기-쓰기 헤드를 왼쪽과 오른쪽으로 모두 움직일 수 있다.
- 테이프가 무한하다.
- 거부 및 수락에 대한 특수 상태가 즉시 적용된다.
언어 #
로 구분된 두 문자열이 동일한지를 알아내야 한다. 문자열을 모두 외우기에는 입력이 너무 길지만, 당신은 입력 위를 앞뒤로 움직이며 그 위에 표식을 남기는 것은 허용된다. 뻔한 전략으로는 #
로 나눠진 두 부분을 번갈아 오가며 그들이 일치하는 지를 확인하는 것이다. 각 문자가 반대편의 어디에 대응되는 지는 표식을 남기며 확인하면 된다.
이런식으로 #
기호의 양쪽에 있는 문자 중 하나와 비교한다. 이미 검사된 문자를 파악하기 위해 검사한 기호를 지운다. 모든 기호를 지우면 모든 기호가 성공적으로 일치한다는 의미이며
- 테이프 위를 오고 가면서
#
기호 양쪽의 대응하는 위치로 이동하여 동일한 기호가 포함되어 있는지 확인한다. 그렇지 않거나#
이 발견되지 않으면 거부한다. 확인한 기호를 지우면서 다음에는 어떤 기호가 대응하는지 추적한다. - 왼쪽에 있는 기호를 모두 지웠으면
#
오른쪽에 남은 기호가 있는지 확인한다. 기호가 남아 있으면 거부하고, 그렇지 않으면 수락한다.”
다음 그림은 입력 011000#011000
에서 시작한
주
-
멈추지 않고 계속 진행된다는 것은 튜링의 정지 문제에서 비중있게 다루어진다. ↩