튜링 머신이 인기있는 계산 모델 인 이유는 무엇입니까?


68

저는 CS 학부생입니다. Turing이 자신의 추상 기계 (계산을 수행하는 사람을 모델링)를 생각해 냈지만 이해하기가 어색하고 우아하지 않은 것처럼 보입니다. 왜 우리는 "테이프"와 머신 헤드가 기호를 쓰고 상태를 바꾸고 테이프를 앞뒤로 이동시키는 것을 고려합니까?

근본적인 의미는 무엇입니까? DFA는 우아합니다. 일반 언어를 인식하는 데 필요한 것을 정확하게 캡처하는 것 같습니다. 그러나 튜링 기계는 초심자 판단으로는 어리석은 추상 장치입니다.

그것에 대해 생각한 후, 가장 이상적인 계산 모델은 입력 문자열에 해당하는 일부 물리적 시스템이 동작으로 설정된 후 정적 평형에 도달하여 해석시 형성되는 것과 동일한 정적 평형에 도달한다고 말하는 것입니다. 원래 문자열의 시스템은 올바른 출력 문자열에 해당합니다. 이것은 시스템이 원래 상태만을 기반으로 결정적으로 변하기 때문에 "자동화"개념을 포착합니다.

편집 :

몇 가지 답변을 읽은 후 튜링 머신에 대해 혼란스러워하는 것은 그것이 최소한으로 보이지 않는다는 것입니다. 정식 계산 모델이 계산 성의 본질을 분명히 전달해서는 안됩니까?

또한 명확하지 않은 경우 DFA가 완전한 계산 모델이 아니라는 것을 알고 있습니다.

답장을 보내 주셔서 감사합니다.


2
앞으로의 수업이 명확 해 지길 바랍니다.
Yuval Filmus

19
어쩌면 당신은 찾을 수 람다 미적분 계산의 자연적인 모델로한다. 기능적 프로그래밍의 기반이됩니다.
Bakuriu

4
실은 졸업하려고합니다. 오토마타 이론과 관련된 최고 수준의 과정은 튜링 머신에서 중단되었지만 다양한 계산 모델 간의 동등성을 언급했습니다. 저는 기본적으로 TM "프로그래밍"에 대한 공정한 공유를했습니다. 그러나 TM은 항상 나를 괴롭 혔습니다. "최소한"것 같지 않았다; 그것은 계산의 본질을 나에게 노출시키지 않았다.
Alex

4
" 입력 문자열에 해당하는 일부 물리적 시스템 "-해당 통신은 어떻게 생겼습니까? 튜링 머신은 그 와 같은 것을 위해 다소 단순하지만 강력한 공식 모델 입니다.
Bergi

2
튜링 기계는 원래 상태 (구성을 의미하는 경우)에만 기반하여 결정적으로 변경됩니다. 그래서 무엇이 잘못 되었나요?
user23013

답변:


72

DFA는 튜링 머신 일 뿐이며 오른쪽으로 만 이동할 수 있으며 입력 문자가 부족한 즉시 수락 또는 거부해야합니다. 따라서 DFA는 자연 스럽지만 튜링 머신은 그렇지 않다고 말할 수는 없습니다.

문제를 비판하는 것은 컴퓨터가 존재 하기 전에 튜링이 작동했다는 것을 기억하십시오 . 따라서 그는 전자 컴퓨터가하는 일을 체계화하려는 것이 아니라 일반적으로 계산을 시도했습니다. 부모님은 1930 년대에 컴퓨터를 "계산하는 사람"으로 정의한 사전을 가지고 있으며, 기본적으로 튜링이 시작된 곳입니다. 그런 사고 방식에서 종이 테이프에 기호를 다시 쓰는 것은 잘못된 추상화처럼 보이지 않습니다.

좋아, 좋아, 당신이 말하고 있지만 (나는 희망합니다!) 그러나 우리는 1930 년대에 더 이상 존재하지 않으므로 왜 이것을 계속 사용합니까? 여기에는 특별한 이유가 하나도 없다고 생각합니다. 튜링 기계의 장점은 기계가 상당히 단순하고 우리는 기계에 대한 것들을 잘 증명한다는 것입니다. 특정 작업을 수행하기 위해 튜링 머신 프로그램을 공식적으로 지정하는 것은 매우 지루하지만, 몇 번 수행 한 후에는 수행 할 수있는 작업에 대한 합리적인 직관력이 있으며 더 이상 공식 사양을 작성할 필요가 없습니다. 이 모델은 테이프에 대한 임의 접근과 같은 다른 자연 기능을 포함하도록 쉽게 확장됩니다. 그것들은 우리가 잘 이해하는 매우 유용한 모델이며 실제 컴퓨터와의 관계를 잘 이해하고 있습니다.

다른 모델을 사용할 수도 있지만 새 모델의 결과와 Turing 머신이 수행 할 수있는 작업에 대한 기존 작업의 방대한 양을 변환해야합니다. 아무도 좋은 아이디어처럼 보이게 할만큼 큰 장점을 가진 Turing 기계를 대체 할 사람이 없었습니다.


의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
Gilles

56

몇 가지 다른 질문을하고 있습니다. 하나씩 하나씩 대답 해 드리겠습니다.

튜링 머신 모델에서 무엇이 중요합니까?

계산 성 이론의 초기 단계 동안, 다양한 맥락에서 몇 가지 계산 모델이 제안되었다. 예를 들어, 불완전 성 정리가 적용되는 증거 시스템에 대해 이해하려고 노력했던 고델은 일반적인 재귀 함수 의 형식주의를 생각해 냈고 교회는 역설없는 수학 기초에 대한 시도로 미적분학을 생각 해냈다. 튜링 자신은 주어진 수학적 진술의 진실 가치를 결정하기위한 "순전히 기계적인 과정"을 요구 한 힐버트의 문제에 의해 동기를 부여 받았다.λ

그 당시 계산 가능성을 정의하려는 Turing의 시도는 가장 만족스러운 것으로 보였습니다. 결국 위에서 설명한 모든 계산 모델이 동일 하다는 것이 밝혀졌습니다. 모두 같은 계산 개념을 나타냅니다. 역사적으로 Turing의 모델은 계산 성을 정의하는 가장 표준적인 방법으로 나타났습니다. 이 모델은 위에 나열된 모델을 포함하여 다른 많은 모델과 비교할 때 매우 기초적이고 작업하기 쉽습니다.

일반적인 컴퓨터 과학은 튜링 머신에 계산 성의 정의를 가르치고이를 사용하여 복잡도 이론을 탐구합니다. 그러나 알고리즘은 RAM 머신으로 알려진보다 현실적인 모델과 관련하여 분석되지만,이 문제는 카펫 아래에서 cognoscenti의 비밀로 스윕됩니다.

DFA가 더 나은 모델이 아닙니까?

이것은 Rabin과 Scott의 유명한 논문 인 Finite automata와 그들의 결정 문제의 원동력이었습니다.

튜링 머신은 디지털 컴퓨터의 추상 프로토 타입으로 널리 알려져 있습니다. 그러나 현장 작업자들은 튜링 머신의 개념이 실제 컴퓨터의 정확한 모델로 사용하기에는 너무 일반적이라는 생각이 점점 더 많이 느껴졌습니다. 간단한 계산의 경우에도 튜링 머신이 주어진 계산에 필요한 테이프의 양에 대해 사전에 상한값을 부여하는 것이 불가능하다는 것은 잘 알려져 있습니다. Turing의 개념을 비현실적으로 만드는 것은 바로이 기능입니다.

지난 몇 년 동안 유한 오토 마톤에 대한 아이디어가 문헌에 나타났습니다. 이들은 메모리와 계산에 사용될 수있는 한정된 수의 내부 상태를 가진 머신입니다. 유한의 제한은 물리적 기계의 아이디어에 더 나은 근사치를 제공하는 것으로 보입니다. 물론 이러한 기계는 튜링 기계만큼 많은 기능을 수행 할 수 없지만, 임의의 일반적인 재귀 함수를 계산할 수 있다는 이점은 의문의 여지가 있습니다. 이러한 함수 중 일부는 실제 응용 분야에서 발생하기 때문입니다.

그러나 튜링 머신은 너무 강력하지만 DFA는 너무 약하다 는 것이 밝혀졌습니다 . 요즘 이론가들은 다항식 시간 계산 의 개념을 선호 하지만,이 개념에도 문제가 없습니다. 그러나 DFA와 NFA는 주로 어휘 분석에 사용되는 컴파일러와 매우 효율적인 필터링에 사용되는 네트워크 장치에서 여전히 사용됩니다.

튜링 머신 모델이 너무 제한적이지 않습니까?

교회 튜링의 논문은 튜링 기계는 계산 가능성의 물리적 개념을 캡처 상태. Yuri Gurevich는 추상적 상태 머신으로 알려진보다 일반적인 계산 장치 클래스를 구성 하고 튜링 머신과 동등한 성능을 제공함으로써이 논문을 증명하려는 시도를 이끌었습니다 . 아마도이 기계들은 당신의 이상적인 모델과 유사 할 것입니다.


17

근본적인 중요성은 Turing-equivalence의 아이디어에 관한 것입니다. Turing-equivalent 인 한 정확한 모델은 중요하지 않습니다. 그러나 더 간단한 모델을 사용하는 것이 더 낫기 때문에 다른 모델과의 동등성을 쉽게 입증 할 수 있습니다.

더 정확하게 말하면, 대부분의 고급 프로그래밍 언어는 튜링과 동일하고 (메모리 주소에 대한 특정 가정) 다른 모델을 시뮬레이션하는 데 사용될 수 있으므로 다른 모델에서이 모델을 더 쉽게 시뮬레이션하는 것이 좋습니다.

람다 미적분학 및 (문자열 재 작성) 문법과 같은 다른 모델이 있습니다. 그러나 튜링 머신에서 시간 및 공간 제약 조건을 정의하는 것이 더 쉽습니다. Brainfuck과 같은 프로그래밍 언어를 사용할 수도 있지만 때로는 논리적으로 사소한 수정을 위해 심볼을 재정의하는 등 불필요한 작업이 필요합니다.

따라서 모든 것에 대해 단일 모델을 배워야한다면 튜링 머신이 제게 적합한 것 같습니다. 그러나 어쨌든 여러 모델을 배우려고한다면 Turing-equivalence, 다른 모델을 증명하기위한 Brainfuck 및 Turing-equivalent 및 실용적인 프로그래밍 언어 (액세스 가능한 스택이 있고 숨겨진 변수가 없음)에 대한 람다 미적분학을 배우는 데 잘못이 없습니다. 시간 / 공간 제약으로 인해 튜링 머신은 이러한 방법을 찾는 데 귀찮은 사람이 없다면 이러한 것들을 동등한 것으로 입증하는 툴만 고려하십시오. 근본적인 이론을 먼저 배우기 시작하지 않았지만 유용하다고 생각했을 때만 그랬습니다.


1
본질적으로 모든 실제 최신 CPU는 RAM 이있는 레지스터 시스템 입니다. 어큐뮬레이터 레지스터가 하나만있는 마이크로 컨트롤러 또는 장난감 아키텍처조차도 일반적으로 순수한 어큐뮬레이터 머신이 아닌 포인터를로드 할 수있는 별도의 주소 레지스터가 있습니다. 그러나 실제 하드웨어에는 고정 크기 주소가 있으므로 Turing-complete가 아닙니다. 레지스터-머신 모델이 이론적 CS에서 많이 사용된다면 IDK이지만 실제 언어에서는 어셈블리 언어가 작동하는 방식이며 모든 것이 asm으로 컴파일되기 때문에 성능 분석을 이해하는 데 유용 할 수 있습니다.
Peter Cordes 1

14

편집에 추가 된 질문 의이 부분에 응답하고 싶습니다.

"정규적인 계산 모델이 계산의 본질을 분명히 전달하지 못했을까요?"

튜링이 그의 원래 논문에서했던 놀라운 일 중 하나 – 우리가 지금 "튜링 머신"이라고 부르는 것을 소개 한 것은 다른 모든 튜링 머신을 시뮬레이션 할 수 있는 단일 튜링 머신을 구성했다는 것입니다. 이 "유니버설 튜링 머신"이 만들어지면 두 개의 독립적 인 기능을 가진 입력 테이프를 만들어 작동합니다. 먼저 시뮬레이션하려는 튜링 머신 의 인코딩입니다 . 그런 다음 둘러싼 경우 튜링 머신 삽입 한 입력 테이프의 사본 . 반 현대 전문 용어 : 먼저, 범용 Turing 머신이 컴파일하는 프로그램을 삽입합니다. 그런 다음 컴파일 된 프로그램을 사용하여 범용 Turing 머신이 실행하는 입력을 삽입합니다.TTT

그것은 계산의 본질 중 하나입니다. 계산에 대한 일반적인 개념이 무엇이든간에 모든 것을 수행하는 단일 기계가 있어야합니다. 이것이 바로 범용 튜링 머신의 기능입니다. 또한 현대 컴퓨터가하는 일입니다 (무한한 메모리를 갖는 물리적으로 비현실적인 이상화에 따라).

튜링 머신이 최소가 아니라는 귀하의 우려를 직접 해결하는 또 다른 방법은 범용 머신이 존재하는 일반적인 계산 성 개념을 기술해야한다는 요건에 따라 가능한 한 최소한으로 사용하는 것입니다.


유니버설 머신에 대해 알려 주셔서 감사합니다. 이것이 어떻게 "완전한"계산을 의미하는지 봅니다.
Alex

5

튜링 기계는 문자 그대로 사용하기위한 것이 아닙니다. 그것들에서 프로그래밍하는 것은 그들이 어떻게 작동하는지 이해하기 위해 연습으로 한 번만 할 것입니다.

그들은 특별히 아무것도하지 않는다. 그들은 최소한 일 필요는 없으며, 작업하기에 편안 할 필요는 없습니다.

그것들은 단순히 여러분 만들 있는 기계의 모델입니다. 이것은 오늘날 우리가 아는 한 물리적 우주에서 만들 수있는 다른 기계들처럼 표현력 있고 강력 할 것입니다.

이러한 주요 이유 때문에 튜링에 의해 정의되었습니다.

  • 그것들이 우리가 생각할 수있는 모든 알고리즘 을 포함하고 있음을 증명할 수 있습니다 .
  • 중지 문제 / 결정 문제에 대한 작업.
  • 다른 기계 / 언어를이 기계로 줄일 수 있습니다.

다른 언어를 선택할 수 있었습니까? 확실히! 오늘날 우리가 알고있는 튜링 완전한 언어가 사용될 수 있습니다. 그러나 보다 복잡한 기계에서 이론적 토대를 구축하는 것이 훨씬 어려웠을 것 입니다.

나는 그들이 "인기의 계산 모델"도 아니라고 주장 할 것이다. 아무도 튜링 머신으로 아무것도 계산하지 않았습니다. 그것은 이론적 인 컴퓨터 과학자들에 의해 tcs를 위해 만들어진 이론적 인 개념입니다.


모든 사항에 동의하십시오. 인기는 아마도 Thue 기계 및 Lambda 미적분학 및 Emil Post와 같은 모호한 모델과 관련이 있습니다.
luser droog

죄송하지만 다른 언어가 심각하게 엉망이되었을 수있는 매우 중심적인 부분을 놓쳤습니다. 튜링 머신은 실제로 계산할 수있는 대상을 정의합니다. 다른 언어는 계산 방법에 대한 질문을 제한하므로 계산 가능한 것을 증명할 수 없을 것입니다.
벤트

튜링 기계가 다른 모델의 감소 목표가되어야한다면 왜 최소가 될 필요는 없습니까?
Bergi

@Bent, 나는 확실히 당신은 내가 함께 언급 한 것 이외에 말하려고하는 것을 얻을하지 인정 "하지만했을 훨씬 더 복잡한 시스템에 이론적 토대를 구축하기 힘들어." (즉, 우리가 알고 사용하는 실제 프로그래밍 언어).
AnoE

인기로, 이론 CS에서 사용되는 것을 의미했습니다. 다시, 그것은 내가 배운 유일한 모델이었습니다 (비록 내가 람다 미적분의 일부에 노출되었다고 생각하지만). 나는 아마도 교육 학적으로 왜 그것이 가장 먼저 가르쳐 지는지 궁금했습니다. 나는 그것의 실용성이 이것을 어떻게 보증하는지 봅니다.
Alex

5

왜 인기가 있을까요? 아마도 가장 인기 있을까요? 튜링은 전자 컴퓨터 이전에이 "기계"를 수년 전에 발생했음을 기억해야합니다. TM은 종이, 펜, 고무 및 마지막으로 인간의 두뇌로 작동됩니다. 따라서 모든 사람이이 컴퓨터로 "계산"을 실행할 수 있습니다. 모두는 컴퓨터를 배우지 않고 프로그래밍 언어를 배운 적이없는 사람을 의미합니다. 사용하기 간단합니다. 당신이 그것에 대해 생각할 때, 당신은 역설을 발견합니다.이 기계는 거의 아무것도 조립되지 않고 모든 것을 조작 할 수 있습니다. 제 생각에는 "거의 아무것도 / 비대 / 모든 것"의 역설이 인기가있는 이유입니다. TM은 재귀를 명시 적으로 설명하지 않으며 TM은 "점프"만 처리합니다. 이 기능 (명시 적으로 재귀에 관해 이야기하는 것)은 신인들에게 전조의 근원이 될 수 있습니다. 예를 들어 람다 미적분학에서 Y 조합기의 개념은 거의 이해할 수 없다. 더 정확하게 말하면, TM은 재귀 헤드 헤치가없는 "거의 없음 / 대 / 모두"의 역설 때문에 인기가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.