실제 컴퓨터는 한정된 수의 상태 만 가지고 있으므로 Turing 기계와 실제 컴퓨터의 관련성은 무엇입니까?


42

실제 컴퓨터에는 메모리가 제한되어 있고 유한 한 수의 상태 만 있습니다. 그래서 그들은 본질적으로 유한 한 오토마타입니다. 이론적 인 컴퓨터 과학자들이 왜 튜링 머신 (및 기타 동등한 모델)을 사용하여 컴퓨터를 연구합니까? 실제 컴퓨터와 관련하여 훨씬 강력한 모델을 연구하는 요점은 무엇입니까? 유한 오토마타 모델이 충분하지 않은 이유는 무엇입니까?


7
@Kaveh 사람들은 일반적으로 예, 실제로 사용되는 컴퓨터는 FSM이지만 FSM은 너무 커서 FSM보기에서 흥미로운 구조적 특성이 손실된다는 것을 보여줍니다. 나는 손으로 말하지 않은 설명을 본 적이 없다. 따라서 질문은 여기서 주제입니다.
Martin Berger

15
실제 문제는 알고리즘을 분석 할 때 RAM 모델을 사용할 때 튜링 머신을 연구하는 이유입니다.
Yuval Filmus

39
때때로 는 보다 보다 나은 근사값이기 때문 입니다. 10000000000000000000000000000000 100000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000
Andrej Bauer

30
오늘날 이론적 컴퓨터 과학에서 가장 유명한 미해결 문제는 다음과 같습니다. 물리적으로 불가능한 가상 컴퓨터가 훨씬 더 물리적으로 불가능한 가상 컴퓨터만큼 빨리 문제를 해결할 수 있습니까? 이론적 인 컴퓨터 과학을 실제 컴퓨터 공학으로 착각하지 마십시오. 물리적 세계의 세부 사항은 특별히 관련이 없습니다.
Eric Lippert

23
실제 재료는 원자로 만들어졌으며 본질적으로 불 연속적입니다. 왜 연구 통합이 필요한가요?
피터 쇼어

답변:


32

이 질문을 고려할 때 두 가지 접근 방식이 있습니다. 개념은 개념을 발견 한 방법과 관련이 있으며, 특정 개념이 채택 된 이유와 다른 개념은 포기하거나 잊어 버린 이유를 설명합니다.

역사적으로 Turing Machine은 아마도 Entscheidungs ​​문제 에 답하기 위해 개발 된 여러 개발 중 가장 직관적 인 모델 일 것입니다 . 이것은 수학을 완전히 공리 화하기위한 20 세기 초의 큰 노력과 밀접한 관련이 있습니다. 소망의 공리가 올바른 것으로 입증되면 (실제로 노력해야 할) 체계적인 방법을 사용하여 관심있는 논리적 인 진술에 대한 증거를 도출 할 수 있기를 바랍니다. 누군가가 유한 한 오토마타를 고려하더라도 이러한 맥락에서, 그들은 간단한 함수조차도 계산하지 못하기 때문에 빨리 사라질 것입니다.

기술적으로 모든 컴퓨터가 유한 오토마타라는 진술은 허위입니다. 유한 오토 마톤에는 입력의 크기에 따라 변경할 수없는 일정한 메모리가 있습니다. 수학적으로나 실제로는 기계의 메모리를 사용한 후에는 추가 테이프, 하드 디스크, RAM 또는 다른 형태의 메모리를 제공하지 못하게하는 제한이 없습니다. 나는 이것이 간단한 계산조차도 메모리를 채울 수있는 컴퓨팅 초기에 종종 사용되었다고 생각하지만, 지금은 대부분의 문제와 훨씬 효율적인 메모리 관리를 가능하게하는 현대적인 인프라에서 문제가되지 않습니다. .


편집 : 나는 의견에서 제기 된 두 가지 점을 모두 고려했지만 대답을 적을 수있는 간결성과 시간을 모두 포함하지 않기로 결정했습니다. 이것이 내가 왜 유한 오토마타와 비교할 때 현대 컴퓨터를 시뮬레이트하는 데 튜링 머신의 효과가 떨어지지 않는다고 생각하는지에 대한 나의 추론입니다.

  • 먼저 우주에 의한 메모리 제한의 물리적 문제를 다루겠습니다. 우선, 우리는 우주가 유한 한 것인지 아닌지를 실제로 알지 못합니다. 또한, 정의에 의해 유한 한 관측 가능한 우주의 개념은 또한 정의에 의해 관측 가능한 우주의 임의의 지점으로 이동하여 메모리를 사용하는 사용자와 무관하다. 그 이유는 관측 가능한 우주는 우리가 특정 지점, 즉 지구에서 관측 할 수있는 것을 의미하기 때문에 관측자가 우주의 다른 위치로 이동할 수 있으면 다를 수 있기 때문입니다. 따라서, 관측 가능한 우주에 관한 어떤 주장도 우주의 유한성에 관한 문제로 이어진다. 그러나 획기적인 발전을 통해 우주가 실제로 유한하다는 지식을 습득한다고 가정 해 봅시다. 이것이 과학적인 문제에 큰 영향을 주지만 그것이 컴퓨터 사용에 영향을 미칠 것 같지는 않습니다. 간단히 말해서, 원칙적으로 컴퓨터는 튜링 머신이 아닌 유한 한 오토마타 일 수 있습니다. 그러나 계산에 대한 대다수와 인간이 관심을 갖는 모든 계산에있어 Turing 머신과 관련 이론은 우리에게 더 나은 이해를 제공합니다. 조잡한 예에서, 우리는 뉴턴 물리학이 본질적으로 잘못되었다는 것을 알고 있지만, 나는 기계 엔지니어들이 주로 양자 물리학을 사용하여 자동차 나 공장 기계를 설계하지 않을 것입니다. 이것이 필요한 경우는 개별 수준에서 다룰 수 있습니다. 그러나 계산에 대한 대다수와 인간이 관심을 갖는 모든 계산에있어 Turing 머신과 관련 이론은 우리에게 더 나은 이해를 제공합니다. 조잡한 예에서, 우리는 뉴턴 물리학이 본질적으로 잘못되었다는 것을 알고 있지만, 나는 기계 엔지니어들이 주로 양자 물리학을 사용하여 자동차 나 공장 기계를 설계하지 않을 것입니다. 이것이 필요한 경우는 개별 수준에서 다룰 수 있습니다. 그러나 계산에 대한 대다수와 인간이 관심을 갖는 모든 계산에있어 Turing 머신과 관련 이론은 우리에게 더 나은 이해를 제공합니다. 조잡한 예에서, 우리는 뉴턴 물리학이 본질적으로 잘못되었다는 것을 알고 있지만, 나는 기계 엔지니어들이 주로 양자 물리학을 사용하여 자동차 나 공장 기계를 설계하지 않을 것입니다. 이것이 필요한 경우는 개별 수준에서 다룰 수 있습니다.

  • 버스 및 주소 지정과 같은 모든 기술적 제한은 단순히 기존 하드웨어의 기술적 제한이며 물리적으로 극복 할 수 있습니다. 현재 컴퓨터에서 이것이 사실이 아닌 이유는 64 비트 주소 지정을 통해 응용 프로그램이 달성 할 수있는 경우 주소 공간의 상한선을 몇도 높이로 이동할 수 있기 때문입니다. 더욱이, "연장 가능"어드레싱 시스템의 구현은이를 필요로하지 않아서 비효율적 인 많은 계산에 잠재적으로 영향을 미칠 수있다. 계층 적 어드레싱 시스템을 구성하는 것을 막을 수있는 것은 없습니다. 예를 들어, 두 레벨에서 첫 번째 주소는 메모리 뱅크 중 하나를 참조 할 수 있으며 각 뱅크에는 2 64264264다른 주소. 기본적으로 네트워킹은이 작업을 수행하는 좋은 방법입니다. 모든 컴퓨터는 로컬 메모리 만 신경 쓰지만 함께 계산할 수 있습니다.


4
이 답변의 두 번째 부분이 잘못되었습니다. 당신이 할 수있는 모든 RAM과 다른 하드웨어를 구입하더라도 컴퓨터 유한 한 상태입니다. 컴퓨터에 연결할 수있는 RAM의 양은 주소 버스의 너비에 의해 제한되며 디스크 및 기타 주변 장치에 대해서도 동일합니다.
Emil Jeřábek

12
@ EmilJeřábek은 사실이 아닙니다. 직렬 인터페이스에는 주소 버스가 없으며 인터넷에서 액세스 할 수있는 데이터의 양은 컴퓨터의 속성에 의해 제한되지 않습니다.
모니카 해밍 중지

5
@OrangeDog 그러나 우주는 여전히 관측 가능한 우주에 저장할 수있는 데이터의 양에 제한을 둘 것
래칫 괴물

9
튜링 기계가 보여로 @ratchetfreak, 당신은 로컬 액세스를 필요로 - 테이프 필요성 현재의 "끝"하지 관측 우주 이내)
정지에 지장을주지 모니카

6
역사를 언급하면서, Turing의 논문에 대한 교회의 검토를 인용 할 가치가 있으며, Turing 기계는 "효과적으로 식별 할 수있는 이점이 있습니다 ... 즉시 명백합니다." 즉, 실제로 계산할 수있는 모든 것을 포착했음을 확신하려는 사람들에게 Turing의 정의는 매력적이었습니다.
Jim Hefferon

44

다른 답변을 완성하려면 : Turing Machine은 유한 오토마타보다 컴퓨터가하는 일을 더 잘 추상화한다고 생각합니다. 실제로 두 모델의 주요 차이점은 유한 오토마타에서는 상태 공간보다 큰 데이터를 처리 할 것으로 예상되며 Turing Machine은 상태를 만들어서 다른 방식 (상태 공간 >> 데이터)의 모델이라는 점입니다. 무한한 공간. 이 무한대는 "데이터 크기보다 훨씬 큰 크기"의 추상화로 인식 될 수 있습니다. 컴퓨터 프로그램을 작성할 때 효율성을 위해 공간을 절약하려고하지만 일반적으로 컴퓨터의 총 공간으로 제한되지 않는다고 가정합니다. 이것이 튜링 머신이 유한 오토마타보다 컴퓨터를 더 잘 추상화 한 이유의 일부입니다.


14
이것이 바로 정답입니다. 그 이유는 순전히 실용적이며 튜링 머신은 컴퓨터가 관련된 스케일에서 수행하는 작업을 설명하는 데 유한 오토마타보다 낫습니다.
Emil Jeřábek

3
"일반적으로 귀하는 컴퓨터의 총 공간으로 제한되지 않는다고 가정합니다"라는 문구를 제외하고 이에 동의합니다. 반대로, 거의 모든 사소한 프로그램은 사용 가능한 공간에 의해 제한되며 프로그래머는 프로그램을 처리하기 위해 많은 시간을 투자합니다 (예 : 자동 메모리 재사용을위한 가비지 수집). (1) 우리가 할 수있는 일은 없습니다. (2) 우리는 작은 입력으로 제한합니다. TM은 우리에게 문제 크기에 대한 자연스러운 핸들링을 제공하고 알고리즘이 문제 크기의 자연스러운 개념으로 하향 폐쇄되는 경향이 있다는 점에 주목할 만하다.
Martin Berger

2
@MartinBerger Re "거의 모든 비 사소한 프로그램은 사용 가능한 공간에 의해 제한되며 프로그래머는이를 처리하기 위해 많은 시간을 투자합니다 (예 : 자동 메모리 재사용을위한 가비지 콜렉션)": 가비지 콜렉션이있는 시스템 용으로 작성된 프로그램은 시스템 것을 GC의를 포함하여 , 기계로 그들에 대해 프로그램. 가비지 수집기는 프로그램의 일부가 아닙니다. Denis가 말한 것을 정확하게 제공하기위한 노력의 일환입니다. 거의 무제한의 메모리 리소스를 가진 프로그램 대상 머신.
피터-복원 모니카

2
@ PeterA.Schneider 동의하지 않습니다. 언어 런타임에서 제공하는 GC를 사용하는 이유는 소프트웨어 개발의 경제학 중 하나입니다. 프로그램 별 메모리 관리 메커니즘은 GC보다 성능이 뛰어나며 대부분의 프로그래머는 안전하고 저렴하게 사용할 수 있다면이를 선호합니다. 그러나 그들은 그렇게 할 수 없으므로 오히려 안전하고 많은 프로그램에서 비용이 상각되는 주변 GC를 사용하십시오. 그런 의미에서 GC를 사용하면 유한 메모리를 다루는 데 많은 시간이 걸릴 것입니다.
Martin Berger

2
튜링 머신은 컴퓨터가하는 일에 대한 추상화가 아니며, 컴퓨터가하는 일에 대한 추상화이며, 그 후에 컴퓨터가 만들어졌습니다. 컴퓨터는 고정 된 양의 내부 작업 메모리를 사용하여 대부분의 계산을 수행하지만 Turing Machines는 제한된 양의 작업 메모리를 사용한 계산에 대한 추론을 위해 고안되지 않았습니다.
reinierpost

10

안드레이 바우어 (Andrewj Bauer)는 다음과 같은 의견을 제시했다.

1000000000000000000000000000000010000000000000000000000000000000

언급하기에는 너무 명백한 점으로 다른 답변을 완성하겠습니다.

  • 실제 컴퓨터를 연구하는 것이 목표라면 유한 오토마타와 튜링 머신은 종종 관련 질문에 대해 너무 간단한 모델이 될 것입니다. 실제 컴퓨터에는 캐시 계층 구조 (또는 다른 스마트 관리 체계), 상당한 양의 빠른 메모리 액세스, 대용량의 느린 외부 메모리 (하드 디스크)에 액세스 할 수있는 여러 처리 코어가 있으며 느린 외부 메모리에 대한 액세스 속도와 거의 비슷한 속도.
  • 이제 모든 세부 사항이 필요한 이유를 스스로에게 묻는다면 실제 목표는 문제 사례에 대한 연구이며 문제를 얼마나 효율적으로 해결할 수 있는지입니다. 실제 컴퓨터에 대해 이야기하는 경우 다른 유형의 (실제) 컴퓨터 아키텍처에서 실제 문제 인스턴스로 실험을 수행 할 수도 있습니다.
  • 위에서 설명한 실제 컴퓨터 모델은 실제 컴퓨터의 다양한 오류 모드를 무시하기 때문에 여전히 이상적입니다. 전원 끄기 오류는 하드 디스크 오류보다 더 자주 발생할 수 있으며 (어쨌든 하드 디스크에는 백업이있을 수 있음) 안정적인 데이터베이스 작업과 같은 특정 문제 도메인에서는이를 고려해야합니다.
  • Π10

8

형식주의는 사람들이 형식주의를 사용하여 모델링하고 이해하기를 원하는 것에 따라 유용하거나 유용하지 않습니다.

튜링 머신은 프로그램 을 이해하는 데 유용한 형식주의입니다 . 프로그램은 이해할만한 가치가 있습니다. 대부분의 실제 계산은 특수 목적 머신이 아닌 프로그램에 의해 수행됩니다. Turing machine 형식은 시간과 공간 복잡성과 같은 중요한 실제 문제를 모델링 할 수있게합니다. 유한 상태 오토마타를 사용하여 이러한 개념을 연구하는 것은 훨씬 자연스럽지 않습니다.

튜링 머신은 유한 함수 계산의 복잡성을 연구하려고 할 때 유용하지 않습니다 (예 : 도메인의 길이가 최대 1 천만개의 입력으로 구성된 함수). 유한 기능의 복잡성을 설명하는 데 회로 복잡성이 훨씬 우수하지만 튜링 머신은 회로 복잡성을 이해하는 데 매우 유용했습니다.

유한 오토마타는 또한 회로 복잡성을 이해하는 데 유용했습니다. 이 모든 모델은 수학적 무기고에 자리 잡고 있습니다.

실제 컴퓨터에는 한정된 수의 내부 상태 만 있기 때문에 유한 상태 오토마타가 더 나은 현실 모델이라는 주장을 거부합니다. 유한 상태 오토마타에 대한 연구는 무한한 문자열 집합 에서 오는 입력을 결정적으로 다루는 반면, 실제 컴퓨터는 고정 된 최대 길이의 입력 만 처리합니다 (우리가 공간의 관점에서 무한 우주에 살고 있다고 생각하지 않는 한) 또는 시간).

우리가 관심을 가지는 현실의 측면을 이해하는 데있어서 모델의 유용성 측면에서 모델을 판단해야합니다. 또는 수학 우주에 명백한 물리적 표현이 없더라도 사람들이 충분히 설득력있는 수학 우주를 이해하는데 유용하다는 측면에서 (또는 대안 적으로).

튜링 머신, 유한 상태 머신 및 회로 (및 기타 모델)는 모두 유용성을 입증했습니다.


6

실제 컴퓨터는 FSA가 아닙니다. 실제 컴퓨터는 컴퓨터가 에뮬레이션 할 컴퓨터를 설명 할 수 있고 컴퓨터가 에뮬레이트 할 것이라는 점에서 범용 컴퓨터입니다. 많은 예제를 보려면 "가상 머신"을 검색하십시오.

다른 TM에 대한 설명을 수신 한 다음 제공된 입력에서 해당 TM의 작동을 에뮬레이트하는 TM 인 Universal Turing Machine을 구성 할 수 있습니다.

n22n

문헌의 출발점으로, 나는 보편적 인 Automata의 존재를 연구하는 " University Finite 또는 Pushdown Automata의 존재 "를 추천 할 수있다 . 참조를 볼 수도 있습니다.


3
이것은 다른 수준의 "계산 능력"을 직관적으로 파악하는 데 유용한 방법입니다. 그러나 OP는 상태 수가 제한되어 있기 때문에 실제 컴퓨터가 FSM이라고 생각하는 것 같습니다 (예 : 유한 RAM). 여러분의 주장에 따르면 이것은 실제 컴퓨터가 튜링 머신보다 FSM과 더 유사하다는 것을 의미합니다. 스토리지로 무한 테이프가 없습니다.
amon

1
튜링 머신에도 무한 테이프가 필요하지 않습니다. 컴퓨터는 계산에 임의로 많은 양의 외부 저장소를 사용할 수 있으며 (현재 클라우드 공급자의 경우 특히 쉬워 짐) 기본적으로 FSM이 아닌 Turing Machine과 같습니다.
reinierpost

1
컴퓨터에 고정 된 양의 메모리가 있다고 가정하면 더 많은 메모리가있는 컴퓨터를 시뮬레이션 할 때 메모리가 부족하므로 실제로는 보편적이지 않습니다.
Kaveh

3

Turing 머신을 특별하게 만드는 것은 매우 간단하면서도 우리가 생각할 수있는 모든 (클래스) 알고리즘을 실행할 수 있다는 것입니다. 더 강력한 알려진 머신은 없습니다 (Turing 머신으로는 불가능한 알고리즘을 실행할 수 있음).

기계적으로 간단하기 때문에 다른 기계가 Turing 기계와 동등한 지 또는 어느 정도인지 쉽게 알 수 있습니다. 결과적으로 주어진 컴퓨터 (또는 컴퓨터 언어)가 보편적인지 ( "/ T"완전-완료 "인지) 비교적 쉽게 표시 할 수 있습니다.


문제는 Turing 머신 모델과 실제 컴퓨터의 관계에 관한 것입니다. 컴퓨터에 고정 된 양의 메모리가 있다고 가정하면 실제로는 보편적이지 않습니다.
Kaveh

1

유한 오토마타 모델이 충분하지 않은 이유는 무엇입니까?

다른 답변은 이미 많은 관련 측면을 언급했지만 유한 오토마타에 비해 튜링 머신의 장점은 데이터프로그램 의 분리입니다 . 이를 통해 매우 유한 한 프로그램을 분석하고 입력 크기를 제한하지 않고 해당 프로그램이 다른 입력을 처리하는 방법에 대해 설명 할 수 있습니다.

이론적으로 실제 컴퓨터와 유한 테이프를 상태 머신으로 사용하는 튜링 머신과 같은 것을 모두 설명 할 수는 있지만 실제로는 불가능합니다. 상태 오토 마톤 형식주의를 위해서는 이러한 상태 간의 전환을 명시 적으로 나열해야합니다. 따라서 그 크기의 일반적인 유한 상태 오토 마톤의 경우 모든 상태 전이의 전체 열거를 기반으로 공제하는 것은 불가능합니다.

물론 실제 컴퓨터에서는 상태 전이가 임의로 발생할 수 없습니다. 계산의 단일 단계에서 메모리에서 비트의 3 분의 1을 바꾸라는 명령은 없습니다. 따라서 상태 전이에 대한 더 작은 사양을 생각해 볼 수 있습니다. 아키텍처의 명령어 세트 사양과 같은 것. 물론 실제 컴퓨터 아키텍처는 성능을 위해 복잡하므로 매우 간단한 입력과 출력을 사용하여 아주 작은 단계를 수행하는 매우 간단한 명령 세트로이를 단순화 할 수 있습니다. 결국 아키텍처는 Turing machine 인터프리터와 유사합니다. 프로그램 코드와 입력 비트를 사용하고 약간의 출력을 생성하고 프로그램 코드에서 이동하십시오.

한 가지 대안은 프로그램에 의해 처리되는 데이터를 나타 내기 위해 유한 상태 오토 마톤의 상태를 사용하는 한편 프로그램 자체를 상태 전이로 인코딩하는 것입니다. 그것은 모든 상태를 열거하는 방법과 동일한 문제를 수반하며, 튜링 머신이하는 것과 비슷한 표현을 다시 표현할 수 있습니다.

실제 컴퓨터와 관련하여 훨씬 강력한 모델을 연구하는 요점은 무엇입니까?

전체적으로 유한 테이프 튜링 머신은 실제 컴퓨터에 더 적합한 모델 일 것입니다. 그러나 많은 과학적 질문의 경우, 유한하지만 큰 테이프와 무한 테이프의 구분은 관련이 없으므로 무한 테이프를 주장하는 것만으로도 일이 쉬워집니다. 다른 질문의 경우, 사용 된 테이프의 양이 문제의 핵심이지만, 모델을 사용하면 계산에 테이프가 부족한 경우 발생하는 작업을 지정하지 않고도 테이프 사용량에 대해 쉽게 말할 수 있습니다.


1

대부분의 문제에는 유한 크기의 튜링 기계가 필요합니다

제한되지 않은 테이프가 유용한 단순화라고 가정하면 실제로 대부분의 문제 / 알고리즘에는 유한 한 양의 테이프가 필요하며 필요한 메모리의 범위 (입력 크기에 따라 다름)를 분석하고 종종 입증 할 수 있습니다.

이것은 종종 다른 유형의 컴퓨터 (일반적으로 Turing 머신보다 바운드 분석 또는 증거가 더 혼란 스러울 수 있음)를 일반화하고 특정 문제에 필요한 임시 저장 공간의 양을 추정 할 수 있습니다-고정 된 양으로 수행 할 수 있습니까 공간? 입력에 비례합니까? 입력이 증가함에 따라 기하 급수적 인 공간이 필요합니까?


1

유한 오토마타가 공유하지 않는 튜링 머신의 한 가지 중요한 특징은 문제의 크기에 따라 문제 를 해결하는 데 필요한 메모리 양을 확장 할 수 있다는 것 입니다.

nn2

요점 : 많은 문제에는 문제가 클수록 더 많은 메모리를 사용하는 자연스러운 솔루션이 있습니다. 따라서 무한대 메모리를 사용할 수있는 표현으로 이러한 솔루션을 설명하는 것이 당연합니다. 한 인스턴스가 무한한 양을 사용하기 때문이 아니라 각 양을 사용하는 인스턴스가 있기 때문입니다. 튜링 머신뿐만 아니라 유한 한 오토마타 시퀀스로도 가능합니다.


관련 정보에서, N 상태의 Turing 기계가 초기 위치 전후에 유한 한 수의 C 공백이 아닌 문자를 갖는 테이프로 시작되면 어떤 기계도 T (N, C)가됩니다. 테이프가 T (N, C) 문자로 제한되는 기계 한 대의 기계에서 종료 될 수 있습니다.
supercat

-2

실제 컴퓨터에는 메모리가 제한되어 있고 유한 한 수의 상태 만 있습니다. 그래서 그들은 본질적으로 유한 한 오토마타입니다.

튜링 기계는 유한 오토마타의 파생물입니다. 튜링 머신은 실질적으로 폰 누에 만 아키텍처입니다.

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