튜링이 완료되었다는 것은 무엇을 의미합니까?


33

Turing-complete가 무엇인지에 대한 대부분의 정의는 어느 정도 팽팽한 것으로 보입니다. 예를 들어 Google에서 "Turing complete의 의미는 무엇입니까?"

컴퓨터가 튜링 기계가 할 수있는 문제를 해결할 수 있다면 튜링 완료입니다 ...

다른 시스템이 튜링 완료인지 여부는 잘 정의되어 있지만 튜링 완료의 의미 / 결과가 무엇인지에 대한 설명은 보지 못했습니다.

튜링 머신은 튜링 머신이 아닌 머신에서 동일한 작업을 수행 할 수있는 작업을 수행 할 수 있습니까? 예를 들어 컴퓨터는과 같은 간단한 계산을 수행 할 수 (1+5)/3=?있지만 일반 계산기도 수행 할 수 있습니다.

"다른 Turing Machine을 시뮬레이션 할 수있다"고 말하지 않고 Turing Machine의 기능을 정의 할 수있는 방법이 있습니까?


31
"turing machine"의 정의를 찾아보십시오. 튜링 머신은 "다른 튜링 머신을 시뮬레이션 할 수있는"것으로 정의 되지 않기 때문에 순환 정의가 없습니다 . 완전히 설계된 이론적 컴퓨터 (기본적으로 무한 테이프 상태 머신)입니다. 당신은 "turing-complete"와 "turing machine"을 섞고 있습니다. 내가 아는 한, 우리는 여전히 튜링 머신에서 실행할 수없는 알고리즘을 알지 못하지만 그것은 내 자신의 무지 일 수 있습니다.
Luaan

2
@Luaan Church-Turing Thesis 가 당신에게 동의 할 것입니다.
Brian McCutchon

"Turing Machine의 기능을 정의 할 수있는 방법이 있습니다." 확실한. 이론은 튜링 머신 (L, NL, P, NP, PSPACE 등)을 사용하여 알고리즘을 해결하는 데 필요한 공간과 시간이 얼마나되는지, 그리고 해결할 수없는 문제도 있습니다 (보통 축소하여 해결할 수 있음) 다른 해결할 수없는 문제). 튜링 머신으로 해결할 수없는 문제의 한 예로 정지 문제가 있습니다.
Millie Smith

CS (또는 다른) 이론에 관해서는, 구글보다 주제에 관한 책을 읽고 주제를 완전히 이해하지 못하는 사람들이 쓴 주제에 관한 블로그 게시물을 읽는 것이 좋습니다. 그들 자신. 하나의 좋은 책은 시간을 절약하고 더 넓은 그림과 더 나은 이해를 제공합니다.
Bozidar Sikanjic

아커 만 함수는 튜링 기계가 계산되지만 연산 (보다 한정 모델 수있는 무언가의 두드러진 예이다 프리미티브 재귀 없다).
zwol

답변:


13

나는 또 다른 대답을 추가할지 여부를 잠시 고민했다. 다른 답변은 그의 질문의 중간에 초점을 맞 춥니 다 ( "turtur complete", "tautology"등). 첫 부분과 마지막 부분을 잡아서 더 크고 약간 철학적 인 그림을 보도록하겠습니다.

그러나 그것은 무엇을 의미합니까?

튜링이 완료되었다는 것은 무엇을 의미합니까?

"다른 Turing Machine을 시뮬레이션 할 수있다"고 말하지 않고 Turing Machine의 기능을 정의 할 수있는 방법이 있습니까?

비공식적으로 말하면, Turing complete는 메커니즘 이 얼마나 복잡하고, 깊고, 재귀 적이며, 복잡하고, (코드 측면에서) 그것이 긴 저장 공간이나 시간에 관계없이 생각할 수 있는 모든 알고리즘을 실행할 수 있음을 의미 합니다. 그것을 평가할 필요가있었습니다. 그것은 문제가 계산 가능한 경우에만 성공 할 수있는 것은 물론,하지만이 경우 이다 계산할 수, 그것은 (정지) 성공.

(NB : 이것이 "비공식적"인 이유를 찾으려면 더 정교한 표현으로 그 라인을 따라 진행되는 교회-투어링 논문 을 확인하십시오 .하지만 논문은 정확하거나 정확하지 않을 수 있습니다. @DavidRicherby 의견 에서이 작은 생략을 지적합니다.)

"알고리즘"은 오늘날 컴퓨터 알고리즘으로 일반적으로 이해하는 것을 의미합니다. 즉, 일부 제어 로직이 혼합 된 상태에서 스토리지를 조작하는 일련의 개별 단계입니다. 그러나 Oracle 머신과 같이 "추측"할 수는 없습니다.

실용적인 비 tc 언어의 예

직접 프로그래밍 한 경우 문자열을 일부 패턴과 일치시키는 데 사용되는 정규식을 알고있을 것입니다.

이것은 Turing Complete 가 아닌 구문의 한 예입니다 . 특정 문구와 일치하는 정규식을 만드는 것이 불가능한 운동을 쉽게 찾을 수 있습니다.

(이 반드시 실제 실제 애플리케이션에서 많은 프로그래머 화가있다) 예를 들어, 프로그래밍 언어 또는 XML 문서와 일치하는 정규 표현식을 만들 이론적 실제적으로 불가능하다 : 그것은 불가능한 정규 표현식은 블록 구조를 찾기위한 ( do ... end또는 { ... }언어로, XML 문서에서 태그를 열고 닫을 수 있습니다.) 예를 들어 한계가있는 경우, 예를 들어 "재귀"의 3 가지 수준 만 가질 수 있으며 정규식을 찾을 수 있습니다. 그러나 제한이 없다면 갈 수 없습니다.

소스 코드를 파싱하기 위해 C와 같은 Turing-complete language로 프로그램을 생성하는 것이 가능하기 때문에 (모든 컴파일러가 수행하는) 정규 표현식은 해당 프로그램을 시뮬레이션 할 수 없으므로 Turing-complete가 아닙니다.

자극

튜링 머신 자체의 아이디어는 실용적이지 않습니다. 즉, 튜링은 예를 들어 Charles Babbage 나 von Neumann과는 달리 실제 컴퓨터 나 이와 유사한 것을 만들기 위해 그것을 발명하지 않았습니다. Turing Machine의 개념을 갖는 요점은 매우 간단 하다는 것입니다 . 그것은 거의 아무것도로 구성되어 있지 않습니다. 가능한 (및 실제) 컴퓨터를 상상할 수있는 최소한으로 줄입니다.

이 단순화의 요점은 이론적 문제들 (중지 문제, 복잡성 수업, 이론적 컴퓨터 과학 자체가 다루는 것 등)에 대해 숙고하기가 쉽다는 것입니다. 특히 하나의 특징은 보통이다 매우 주어진 언어 나 컴퓨터가 단순히 튜링 기계 말했다 프로그래밍하여 튜링 기계를 시뮬레이션 할 수 있는지 여부를 확인하기 위해 (쉽게 이렇게이다!) 해당 언어로 쉽게.

무한대

무한한 시간이나 스토리지 가 필요하지 않습니다 . 그러나 시간과 스토리지는 모두 제한이 없습니다. 계산 가능한 모든 단일 실행에 대해 최대 값을 갖지만 해당 값이 커질 수있는 한계는 없습니다. 실제 컴퓨터에 결국 RAM이 부족하다는 사실이 여기에 있습니다. 이것은 물론 모든 물리적 컴퓨터에 대한 제한 사항이지만 기계의 이론적 인 "계산 능력"에는 명백하지 않습니다. 또한 실제로 실제로 걸리는 시간에 대해서는 관심이 없습니다. 따라서 우리의 작은 기계는 임의의 시간과 공간을 사용할 수 있으므로 절대적으로 비실용적입니다.

... 이후

한 가지 놀라운 마지막 포인트는 다음과 같은 간단한은 간단한 일이 할 수 있다는 것입니다 모든 것을 생각할 수있는 모든 실제 컴퓨터 수 이제까지 오늘날 우리가 알고있는 지금으로 적어도 - 전체 우주에서, (그냥 매우 느리게) 달성을.


"공식적으로 말하면, Turing complete는 여러분의 메커니즘이 여러분이 생각할 수있는 모든 알고리즘을 실행할 수 있다는 것을 의미합니다."이것은 Turing 머신이 생각할 수있는 모든 알고리즘을 구현할 수 있다는 Church-Turing 논문의 수용에 의존합니다. 또는 대안으로 Turing 기계를 알고리즘의 정의로 사용할 수 있습니다.이 경우 비공식 설명은 "모든 Turing 기계를 시뮬레이션 할 수 있습니다"라는 비공식 버전입니다 (나쁜 것은 아니며 관찰).
David Richerby

저는 OP가 튜링 완료의 의미를 직관적으로 이해하도록 요구한다는 인상을 받았습니다. 따라서 이런 종류의 플립 팬트, 비 이론적 컴퓨터 과학적 대답. 이것을 지적 해 주셔서 감사합니다. 답변에 통합하겠습니다. @DavidRicherby
AnoE

감사! 그것이 내가 찾던 일종의 대답입니다. 나는 멈추는 문제와 간단한 경계 for 루프를 가진 언어를 어떻게 예측할 수 있는지 (항상 정지) 어떻게 튜링이 아닌지를 생각하고있었습니다. 튜링이 완전하다는 것은 어떤 식 으로든 예측할 수없는 것을 의미한다고 생각했습니다 (그러한 기능에 대한 혼란은
올바른가

@sashoalm, 답변을 좋아합니다. 아니요, 예측 불가능 성이 실제로 문제를 고려하지는 않습니다. 경계가없는 for-loops (비 tc)도 좋은 예입니다. 사실, 단순한 (그리고 더 실제적인) tc 언어에 대한 또 다른 좋은 예는 변수가 있고 (제한되지 않은) tc 언어입니다 while. 제어 구조의 한계는 핵심 요소 중 하나입니다.
AnoE

38

전혀 긴장되지 않습니다.

계산 모델은 모든 Turing 기계를 시뮬레이션 할 수있는 경우 Turing-complete입니다. 즉, 최소한 Turing 기계만큼 강력합니다.

튜링 머신이 할 수있는 한 가지는 다른 튜링 머신을 시뮬레이션하는 것입니다 (범용 튜링 머신을 통해). 즉, 계산 모델이 튜링 머신을 시뮬레이션 할 수없는 경우 튜링 머신이 수행 할 수있는 작업을 하나 이상 수행 할 수 없으므로 정의를 충족시키지 않으므로 튜링이 완료되지 않습니다. Turing-completeness 자체를 자체적으로 정의하지 않았기 때문에 순환 성이 없습니다. Turing-completeness는 Turing 기계가 할 수있는 모든 것을 할 수있는 재산이라고 말했습니다.

그러나 계산 모델이 수행하지 못하는 다른 많은 것들이 있습니다. 예를 들어, 어떠한 결정 성 유한 오토 마톤 (DFA)는 어떤 수로 구성된 스트링 클래스 알 수 동일한 수의 다음의 들. 반면에 튜링 기계는 이러한 종류의 현을 인식 할 수 있습니다. 따라서 DFA는 Turing-complete가 아닙니다.bab

"다른 Turing Machine을 시뮬레이션 할 수있다"고 말하지 않고 Turing Machine의 기능을 정의 할 수있는 방법이 있습니까?

"Turing machines의 기능 정의"가 무슨 뜻인지 잘 모르겠습니다. 기능은 무한 테이프에서 작동하는 유한 상태 오토 마톤의 관점에서 정의됩니다. (전체 정의를 반복하지는 않지만 Wikipedia 등에서 찾을 수 있습니다 .)


19
OP는 Turing machine과 Turing complete를 혼합한다고 생각합니다. 그가 실제로 찾고있는 것은 Turing machine의 정의입니다. 마지막 문장이 답입니다. en.wikipedia.org/wiki/Turing_machine 이 도움이 될 것입니다.
JollyJoker

튜링 머신은 무엇을 할 수 있습니까? 마찬가지로 튜링 머신을 흉내낼 수 있다는 것을 증명하고 싶다면 내 머신도 할 수 있다는 것을 보여줄 수있는 최소한의 행동은 무엇입니까?
Akshat Mahajan 23시

2
신경 쓰지 마라-나는 언어가 튜링이 완전하다는 것을 증명하기 위해 튜링 기계가 작동하는 방식을 모방 할 수 있음을 입증하는 것으로 충분하다는 것을 알아 냈습니다.
Akshat Mahajan

17

Turing의 계산 모델은 많은 동등한 계산 모델 중 하나 일뿐입니다. 그것은 Gödel의 재귀 함수와 같은 시간에 제안 된 Church의 람다 미적분학뿐만 아니라 포인터 기계와 같은 다른 모델과 동일한 힘을 가지고 있습니다. 그러므로 당신은 말할 수 있습니다

컴퓨터가 Excel에서 발생할 수있는 문제를 해결할 수 있으면 Turing-complete입니다.

Excel도 Turing-complete이기 때문에 작동합니다. Church-Turing 논문 의 Wikipedia 페이지 와 알고리즘 : Blass and Gurevich, Algorithms : Absolute Definitions의 탐구 문서를 살펴 보는 것이 좋습니다 .


귀하의 질문에 관해서는, 튜링 기계가 비 튜링 기계가 할 수없는 일은 일반적으로 불행하게도 비 튜링 기계에 달려 있습니다.

그러나 Turing-complete 문제에 대한 사소한 개념을 정의 할 수 있습니다. 예를 들면 다음과 같습니다.

언어 각 언어에 대한 계산 가능한 경우 튜링 완료 에 "효율적으로 계산할 수있는"함수가 존재 되도록 IFF .A f a A f ( a ) LLAfaAf(a)L

이 정의에서 정지 문제의 적절한 인코딩은 Turing-complete이며, "효율적으로 계산 가능한"의 정의에 따라 합리적인 등급의 기계에 대해 기계는 Turing-complete입니다. ) 튜링 완료 언어.

튜링 대응 문제와 같은 "효율적으로 계산 가능한"의 정의와 왕 타일과 게임 게임에 관한 문제에 따라이 형식주의에 의해 포착 된 다른 많은 튜링-완전 문제가 있습니다. 이러한 문제는 중지 문제 대신 벤치 마크로 작동 할 수 있습니다.


"답변은 튜링 머신이 아닌 기계에 따라 다릅니다."-명확하지 않기 때문에 질문을 편집했습니다. 튜링이 완료되지 않은 상태에서 작업을 수행 할 수있는 한 튜링이 ​​아닌 머신을 선택할 수 있습니다.
sashoalm

5
Excel is also Turing-complete.-Excel에 무한 메모리를 제공 할 수있는 경우에만. Excel은 1,048,576 행과 16,384 열로 제한되며, 이는 무한히 부족합니다.
MattClarke

5
@MattClarke : 맞습니다. 그러나 같은 토큰으로 시스템이 구축되지 않았습니다.
Emil

3
@Emil : 정확히, CS 학생들은 계산 모델의 기능과 실제 기계의 기능을 구별하는 것이 중요합니다. 실제 기계의 물리적 한계에 반복적으로 부딪친 우리는 물론 이러한 구별을 쉽게 할 수 있습니다. 그래서 우리는 Excel의 컴퓨팅 모델의 무제한 버전을 어떻게 정의하고 그것이 Turing-complete가 될지 알 것입니다. 실제로 그 정의를 작성하는 것은 어리석은 일입니다.
Steve Jessop

4
@SteveJessop 기계의 물리적 한계? 어떻게 그런 일을 칠 수 있습니까? 640k이면 누구나 충분합니다!
David Richerby 2014 년

4

우선 Turing-completeness의 정의가 전혀 팽팽하지 않다는 것을 지적하고 싶습니다. 계산 모델 증명 튜링-완료는 그 자체로 흥미로운 결과 일뿐만 아니라 모든 결과를 계산 이론에서이 다른 계산 모델로 즉시 확장 할 수 있습니다. 예를 들어, 2 카운터 머신은 Turing-complete이므로 Turing 머신은 정지 문제를 해결할 수 없으므로 2 카운터 머신은 불가능합니다.

μ

이러한 클래스에는 "직관적으로 계산 가능한"기능, 즉 연필과 종이로 정밀한 알고리즘에 따라 인간이 수행 할 수있는 기능이 통합되어 있습니다.

분명히 "직관적으로 계산 가능한"은 실제로 공식적인 정의가 아니며 "직관적으로 계산할 수있는"과 "직관적으로 계산 가능한"을 식별하는 것을 교회 튜링 논문이라고합니다. 계산 성을 특성화하려는 많은 공식적인 시도가 궁극적으로 Turing-complete 인 계산 모델로 수렴 되기는하지만 수학적 의미에서 그러한 주장에 대한 공식적인 증거는 결코 존재하지 않지만 그것을 믿을만한 강력한 이유가 있습니다.


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