실제 컴퓨터에는 메모리가 제한되어 있고 유한 한 수의 상태 만 있습니다. 그래서 그들은 본질적으로 유한 한 오토마타입니다. 이론적 인 컴퓨터 과학자들이 왜 튜링 머신 (및 기타 동등한 모델)을 사용하여 컴퓨터를 연구합니까? 실제 컴퓨터와 관련하여 훨씬 강력한 모델을 연구하는 요점은 무엇입니까? 유한 오토마타 모델이 충분하지 않은 이유는 무엇입니까?
실제 컴퓨터에는 메모리가 제한되어 있고 유한 한 수의 상태 만 있습니다. 그래서 그들은 본질적으로 유한 한 오토마타입니다. 이론적 인 컴퓨터 과학자들이 왜 튜링 머신 (및 기타 동등한 모델)을 사용하여 컴퓨터를 연구합니까? 실제 컴퓨터와 관련하여 훨씬 강력한 모델을 연구하는 요점은 무엇입니까? 유한 오토마타 모델이 충분하지 않은 이유는 무엇입니까?
답변:
이 질문을 고려할 때 두 가지 접근 방식이 있습니다. 개념은 개념을 발견 한 방법과 관련이 있으며, 특정 개념이 채택 된 이유와 다른 개념은 포기하거나 잊어 버린 이유를 설명합니다.
역사적으로 Turing Machine은 아마도 Entscheidungs 문제 에 답하기 위해 개발 된 여러 개발 중 가장 직관적 인 모델 일 것입니다 . 이것은 수학을 완전히 공리 화하기위한 20 세기 초의 큰 노력과 밀접한 관련이 있습니다. 소망의 공리가 올바른 것으로 입증되면 (실제로 노력해야 할) 체계적인 방법을 사용하여 관심있는 논리적 인 진술에 대한 증거를 도출 할 수 있기를 바랍니다. 누군가가 유한 한 오토마타를 고려하더라도 이러한 맥락에서, 그들은 간단한 함수조차도 계산하지 못하기 때문에 빨리 사라질 것입니다.
기술적으로 모든 컴퓨터가 유한 오토마타라는 진술은 허위입니다. 유한 오토 마톤에는 입력의 크기에 따라 변경할 수없는 일정한 메모리가 있습니다. 수학적으로나 실제로는 기계의 메모리를 사용한 후에는 추가 테이프, 하드 디스크, RAM 또는 다른 형태의 메모리를 제공하지 못하게하는 제한이 없습니다. 나는 이것이 간단한 계산조차도 메모리를 채울 수있는 컴퓨팅 초기에 종종 사용되었다고 생각하지만, 지금은 대부분의 문제와 훨씬 효율적인 메모리 관리를 가능하게하는 현대적인 인프라에서 문제가되지 않습니다. .
편집 : 나는 의견에서 제기 된 두 가지 점을 모두 고려했지만 대답을 적을 수있는 간결성과 시간을 모두 포함하지 않기로 결정했습니다. 이것이 내가 왜 유한 오토마타와 비교할 때 현대 컴퓨터를 시뮬레이트하는 데 튜링 머신의 효과가 떨어지지 않는다고 생각하는지에 대한 나의 추론입니다.
먼저 우주에 의한 메모리 제한의 물리적 문제를 다루겠습니다. 우선, 우리는 우주가 유한 한 것인지 아닌지를 실제로 알지 못합니다. 또한, 정의에 의해 유한 한 관측 가능한 우주의 개념은 또한 정의에 의해 관측 가능한 우주의 임의의 지점으로 이동하여 메모리를 사용하는 사용자와 무관하다. 그 이유는 관측 가능한 우주는 우리가 특정 지점, 즉 지구에서 관측 할 수있는 것을 의미하기 때문에 관측자가 우주의 다른 위치로 이동할 수 있으면 다를 수 있기 때문입니다. 따라서, 관측 가능한 우주에 관한 어떤 주장도 우주의 유한성에 관한 문제로 이어진다. 그러나 획기적인 발전을 통해 우주가 실제로 유한하다는 지식을 습득한다고 가정 해 봅시다. 이것이 과학적인 문제에 큰 영향을 주지만 그것이 컴퓨터 사용에 영향을 미칠 것 같지는 않습니다. 간단히 말해서, 원칙적으로 컴퓨터는 튜링 머신이 아닌 유한 한 오토마타 일 수 있습니다. 그러나 계산에 대한 대다수와 인간이 관심을 갖는 모든 계산에있어 Turing 머신과 관련 이론은 우리에게 더 나은 이해를 제공합니다. 조잡한 예에서, 우리는 뉴턴 물리학이 본질적으로 잘못되었다는 것을 알고 있지만, 나는 기계 엔지니어들이 주로 양자 물리학을 사용하여 자동차 나 공장 기계를 설계하지 않을 것입니다. 이것이 필요한 경우는 개별 수준에서 다룰 수 있습니다. 그러나 계산에 대한 대다수와 인간이 관심을 갖는 모든 계산에있어 Turing 머신과 관련 이론은 우리에게 더 나은 이해를 제공합니다. 조잡한 예에서, 우리는 뉴턴 물리학이 본질적으로 잘못되었다는 것을 알고 있지만, 나는 기계 엔지니어들이 주로 양자 물리학을 사용하여 자동차 나 공장 기계를 설계하지 않을 것입니다. 이것이 필요한 경우는 개별 수준에서 다룰 수 있습니다. 그러나 계산에 대한 대다수와 인간이 관심을 갖는 모든 계산에있어 Turing 머신과 관련 이론은 우리에게 더 나은 이해를 제공합니다. 조잡한 예에서, 우리는 뉴턴 물리학이 본질적으로 잘못되었다는 것을 알고 있지만, 나는 기계 엔지니어들이 주로 양자 물리학을 사용하여 자동차 나 공장 기계를 설계하지 않을 것입니다. 이것이 필요한 경우는 개별 수준에서 다룰 수 있습니다.
버스 및 주소 지정과 같은 모든 기술적 제한은 단순히 기존 하드웨어의 기술적 제한이며 물리적으로 극복 할 수 있습니다. 현재 컴퓨터에서 이것이 사실이 아닌 이유는 64 비트 주소 지정을 통해 응용 프로그램이 달성 할 수있는 경우 주소 공간의 상한선을 몇도 높이로 이동할 수 있기 때문입니다. 더욱이, "연장 가능"어드레싱 시스템의 구현은이를 필요로하지 않아서 비효율적 인 많은 계산에 잠재적으로 영향을 미칠 수있다. 계층 적 어드레싱 시스템을 구성하는 것을 막을 수있는 것은 없습니다. 예를 들어, 두 레벨에서 첫 번째 주소는 메모리 뱅크 중 하나를 참조 할 수 있으며 각 뱅크에는 2 64다른 주소. 기본적으로 네트워킹은이 작업을 수행하는 좋은 방법입니다. 모든 컴퓨터는 로컬 메모리 만 신경 쓰지만 함께 계산할 수 있습니다.
다른 답변을 완성하려면 : Turing Machine은 유한 오토마타보다 컴퓨터가하는 일을 더 잘 추상화한다고 생각합니다. 실제로 두 모델의 주요 차이점은 유한 오토마타에서는 상태 공간보다 큰 데이터를 처리 할 것으로 예상되며 Turing Machine은 상태를 만들어서 다른 방식 (상태 공간 >> 데이터)의 모델이라는 점입니다. 무한한 공간. 이 무한대는 "데이터 크기보다 훨씬 큰 크기"의 추상화로 인식 될 수 있습니다. 컴퓨터 프로그램을 작성할 때 효율성을 위해 공간을 절약하려고하지만 일반적으로 컴퓨터의 총 공간으로 제한되지 않는다고 가정합니다. 이것이 튜링 머신이 유한 오토마타보다 컴퓨터를 더 잘 추상화 한 이유의 일부입니다.
안드레이 바우어 (Andrewj Bauer)는 다음과 같은 의견을 제시했다.
언급하기에는 너무 명백한 점으로 다른 답변을 완성하겠습니다.
형식주의는 사람들이 형식주의를 사용하여 모델링하고 이해하기를 원하는 것에 따라 유용하거나 유용하지 않습니다.
튜링 머신은 프로그램 을 이해하는 데 유용한 형식주의입니다 . 프로그램은 이해할만한 가치가 있습니다. 대부분의 실제 계산은 특수 목적 머신이 아닌 프로그램에 의해 수행됩니다. Turing machine 형식은 시간과 공간 복잡성과 같은 중요한 실제 문제를 모델링 할 수있게합니다. 유한 상태 오토마타를 사용하여 이러한 개념을 연구하는 것은 훨씬 자연스럽지 않습니다.
튜링 머신은 유한 함수 계산의 복잡성을 연구하려고 할 때 유용하지 않습니다 (예 : 도메인의 길이가 최대 1 천만개의 입력으로 구성된 함수). 유한 기능의 복잡성을 설명하는 데 회로 복잡성이 훨씬 우수하지만 튜링 머신은 회로 복잡성을 이해하는 데 매우 유용했습니다.
유한 오토마타는 또한 회로 복잡성을 이해하는 데 유용했습니다. 이 모든 모델은 수학적 무기고에 자리 잡고 있습니다.
실제 컴퓨터에는 한정된 수의 내부 상태 만 있기 때문에 유한 상태 오토마타가 더 나은 현실 모델이라는 주장을 거부합니다. 유한 상태 오토마타에 대한 연구는 무한한 문자열 집합 에서 오는 입력을 결정적으로 다루는 반면, 실제 컴퓨터는 고정 된 최대 길이의 입력 만 처리합니다 (우리가 공간의 관점에서 무한 우주에 살고 있다고 생각하지 않는 한) 또는 시간).
우리가 관심을 가지는 현실의 측면을 이해하는 데있어서 모델의 유용성 측면에서 모델을 판단해야합니다. 또는 수학 우주에 명백한 물리적 표현이 없더라도 사람들이 충분히 설득력있는 수학 우주를 이해하는데 유용하다는 측면에서 (또는 대안 적으로).
튜링 머신, 유한 상태 머신 및 회로 (및 기타 모델)는 모두 유용성을 입증했습니다.
실제 컴퓨터는 FSA가 아닙니다. 실제 컴퓨터는 컴퓨터가 에뮬레이션 할 컴퓨터를 설명 할 수 있고 컴퓨터가 에뮬레이트 할 것이라는 점에서 범용 컴퓨터입니다. 많은 예제를 보려면 "가상 머신"을 검색하십시오.
다른 TM에 대한 설명을 수신 한 다음 제공된 입력에서 해당 TM의 작동을 에뮬레이트하는 TM 인 Universal Turing Machine을 구성 할 수 있습니다.
문헌의 출발점으로, 나는 보편적 인 Automata의 존재를 연구하는 " University Finite 또는 Pushdown Automata의 존재 "를 추천 할 수있다 . 참조를 볼 수도 있습니다.
Turing 머신을 특별하게 만드는 것은 매우 간단하면서도 우리가 생각할 수있는 모든 (클래스) 알고리즘을 실행할 수 있다는 것입니다. 더 강력한 알려진 머신은 없습니다 (Turing 머신으로는 불가능한 알고리즘을 실행할 수 있음).
기계적으로 간단하기 때문에 다른 기계가 Turing 기계와 동등한 지 또는 어느 정도인지 쉽게 알 수 있습니다. 결과적으로 주어진 컴퓨터 (또는 컴퓨터 언어)가 보편적인지 ( "/ T"완전-완료 "인지) 비교적 쉽게 표시 할 수 있습니다.
유한 오토마타 모델이 충분하지 않은 이유는 무엇입니까?
다른 답변은 이미 많은 관련 측면을 언급했지만 유한 오토마타에 비해 튜링 머신의 장점은 데이터 와 프로그램 의 분리입니다 . 이를 통해 매우 유한 한 프로그램을 분석하고 입력 크기를 제한하지 않고 해당 프로그램이 다른 입력을 처리하는 방법에 대해 설명 할 수 있습니다.
이론적으로 실제 컴퓨터와 유한 테이프를 상태 머신으로 사용하는 튜링 머신과 같은 것을 모두 설명 할 수는 있지만 실제로는 불가능합니다. 상태 오토 마톤 형식주의를 위해서는 이러한 상태 간의 전환을 명시 적으로 나열해야합니다. 따라서 그 크기의 일반적인 유한 상태 오토 마톤의 경우 모든 상태 전이의 전체 열거를 기반으로 공제하는 것은 불가능합니다.
물론 실제 컴퓨터에서는 상태 전이가 임의로 발생할 수 없습니다. 계산의 단일 단계에서 메모리에서 비트의 3 분의 1을 바꾸라는 명령은 없습니다. 따라서 상태 전이에 대한 더 작은 사양을 생각해 볼 수 있습니다. 아키텍처의 명령어 세트 사양과 같은 것. 물론 실제 컴퓨터 아키텍처는 성능을 위해 복잡하므로 매우 간단한 입력과 출력을 사용하여 아주 작은 단계를 수행하는 매우 간단한 명령 세트로이를 단순화 할 수 있습니다. 결국 아키텍처는 Turing machine 인터프리터와 유사합니다. 프로그램 코드와 입력 비트를 사용하고 약간의 출력을 생성하고 프로그램 코드에서 이동하십시오.
한 가지 대안은 프로그램에 의해 처리되는 데이터를 나타 내기 위해 유한 상태 오토 마톤의 상태를 사용하는 한편 프로그램 자체를 상태 전이로 인코딩하는 것입니다. 그것은 모든 상태를 열거하는 방법과 동일한 문제를 수반하며, 튜링 머신이하는 것과 비슷한 표현을 다시 표현할 수 있습니다.
실제 컴퓨터와 관련하여 훨씬 강력한 모델을 연구하는 요점은 무엇입니까?
전체적으로 유한 테이프 튜링 머신은 실제 컴퓨터에 더 적합한 모델 일 것입니다. 그러나 많은 과학적 질문의 경우, 유한하지만 큰 테이프와 무한 테이프의 구분은 관련이 없으므로 무한 테이프를 주장하는 것만으로도 일이 쉬워집니다. 다른 질문의 경우, 사용 된 테이프의 양이 문제의 핵심이지만, 모델을 사용하면 계산에 테이프가 부족한 경우 발생하는 작업을 지정하지 않고도 테이프 사용량에 대해 쉽게 말할 수 있습니다.
제한되지 않은 테이프가 유용한 단순화라고 가정하면 실제로 대부분의 문제 / 알고리즘에는 유한 한 양의 테이프가 필요하며 필요한 메모리의 범위 (입력 크기에 따라 다름)를 분석하고 종종 입증 할 수 있습니다.
이것은 종종 다른 유형의 컴퓨터 (일반적으로 Turing 머신보다 바운드 분석 또는 증거가 더 혼란 스러울 수 있음)를 일반화하고 특정 문제에 필요한 임시 저장 공간의 양을 추정 할 수 있습니다-고정 된 양으로 수행 할 수 있습니까 공간? 입력에 비례합니까? 입력이 증가함에 따라 기하 급수적 인 공간이 필요합니까?
유한 오토마타가 공유하지 않는 튜링 머신의 한 가지 중요한 특징은 문제의 크기에 따라 문제 를 해결하는 데 필요한 메모리 양을 확장 할 수 있다는 것 입니다.
요점 : 많은 문제에는 문제가 클수록 더 많은 메모리를 사용하는 자연스러운 솔루션이 있습니다. 따라서 무한대 메모리를 사용할 수있는 표현으로 이러한 솔루션을 설명하는 것이 당연합니다. 한 인스턴스가 무한한 양을 사용하기 때문이 아니라 각 양을 사용하는 인스턴스가 있기 때문입니다. 튜링 머신뿐만 아니라 유한 한 오토마타 시퀀스로도 가능합니다.