간단히 말해서 : 튜링 머신은 무한 데이터에 대해 무한 계산을 수행하고 무한 결과를 생성 할 수 있습니다. 기본 아이디어는 그러한 무한대가 수학적으로 적절한 방식으로 정의 된 유한 엔티티의 한계로 정의 될 수 있다는 것입니다. 이것은 계산의 수학적 의미론의 기초입니다. Turing Machine이 아닌 프로그램을 고려할 경우 이러한 프로그램에는 무한 데이터 구조가 포함될 수도 있습니다. fact
가능한 알고리즘으로서의 도표화 된 함수의 경우는 무한한 물체의 게으른 평가와의 관계에 대한 힌트와 함께 최종적으로, 프로그램 또는 TM 모델로서 분석됩니다.
더 많은 세부 사항으로
마지막 질문과 관련하여 TM은 임의의 숫자를 계산하지 않지만이 숫자를 임의로 나타내는 (제한되지 않은) 긴 문자열로 표시합니다. 모듈로 적절한 인코딩, 이러한 표현을 통해 그러한 숫자와 비교하거나 산술을 수행 할 수있는 것이 맞습니다.
그러나 원래의 질문은 일반적으로 Turing Machines에서 무한대의 역할에 관한 것입니다.
이 질문에 대한 일반적인 답변은 Turing Machines이 무한대를 다루지 않는다는 것입니다. 그것들은 유한하게 정의되며, 계산하는 것은 무엇이든 테이프의 유한 부분에서 유한 시간 내에 계산됩니다 (따라서 더 큰 유한 테이프이면 충분합니다). 진실은 TM의 공간 소요 시간이 무한하다는 것입니다. 이는 무한대와 다릅니다.
따라서 TM에 의해 계산 된 모든 답변은 유한 상태 오토 마톤 (FSA)에 의해 계산 될 수 있는데, 이는 FAB (Finite-State Automaton)로, 어느 정도까지는 표를 보는 방법입니다. 어려운 점은 일부 입력 크기 (입력을 읽을 경우에만 거의 항상 입력 크기)가 오토 마톤의 크기를 초과한다는 것입니다. 그러나 더 큰 것을 사용할 수 있습니다. 따라서 무한 입력 크기를 고려하려면 계산을 수행 할 수있는 무한한 FSA 시퀀스가 필요합니다. 실제로 우리는 전통적인 FSA보다 약간 더 복잡한 유한 상태 기계가 필요할 수 있습니다 (답이 아닌 대답이 아닌) 출력이 계산 될 수 있기 때문에 유한 상태 변환기는 아마도 가능합니다.
따라서 GCD를 계산하거나 임의의 크기의 정수에 대한 산술을 사용하는 것과 같이 무한한 인스턴스 집합이있는 문제를보고 있다면 무한대로 백도어를 통해 우리에게 다시 오는 것을 볼 수 있습니다. FSA 세트.
그러나 또 다른 문제가 있습니다. 위의 분석은 결과로 끝나는 계산을 고려할 때만 작동합니다. 그러나 모든 TM이 그렇게하는 것은 아닙니다. 일부는 무한 세트의 멤버를 열거 할 수 있습니다. 이것은 일반적으로 소수점 이하 자릿수를 계산하는 TM의 경우입니다.π계속해서 새로운 것을 계속 추가하십시오. 물론, 그것은 유한 한 시간 안에 유한 한 대답만을 계산하지만, 우리가 관심을 갖는 것은 실제로 무한 계산에 의해 생성 된 무한 시퀀스입니다. 이제 무한의 두 가지 측면, 즉 계산의 무한대와 결과의 무한대 (예 : 일부 계산 된 데이터)가 있습니다. 실제로 그것은 심지어 무한 입력을 고려하게 만들 수도 있습니다 ... 그러나 무한한 데이터 스트림을 다루는이 합병증을 무시합시다. 또한 yes 이외의 출력을 제공하는 계산은
다시, 우리는 유한 한 기계로 무한한 유한 계산 시퀀스로이를 대체 할 수 있습니다. 하지만 우리는 바람을 피우고 있습니다.
물리적 관점에서 볼 때 우리가 할 수있는 최선입니다. 우리는 최소한 물리학 분야의 최신 기술에 따르면 유한 한 기계를 만드는 방법 만 알지만, 가까운 시일 내에 그 문제에 대해서는 너무 많이 변하지 않을 것으로 예상됩니다.
그러나 수학적 관점에서 이러한 무한 성을 어떻게 일관되고 다루기 쉬운 방식으로 처리 할 수 있습니까?
무한한 응답 세트를 계산하기 위해 협력 할 수있는 무한한 FSA 세트를 고려할 때 임의로 수행 할 수 없습니다. 현재하고있는 일이 이해되도록 몇 가지 보호 조치가 필요합니다. 정규 세트의 무한한 결합으로, 실제로 싱글 톤 세트의 무한한 결합으로 모든 세트를 간단하게 작성할 수 있다는 것은 잘 알려져 있습니다. 따라서 제한없이 임의의 무한한 오토마타 조합을 고려하면 아무데도 도움이되지 않습니다. 일관된 답변을 제공하는 동일한 오토마타 세트를 고려할 수도 있습니다.
실제로 원하는 것은 일관성 개념을 정의하는 것입니다. 그러나 몇 가지 예방 조치가 필요합니다. 예 또는 아니오로 대답하거나 멈추지 않는 TM을 시뮬레이션하기 위해 무한한 오토마타 시퀀스를 사용한다고 가정 해 봅시다. 문제는 FSA가 항상 예 또는 아니오와 같은 대답으로 중단된다는 것입니다. 그러나 실제로 선택한 입력에 대해 충분히 큰 크기가 아닌 FSA를 사용하는 경우 어떻게 대답해야합니까? FSA가 실제로 TM 계산을 종료 한 경우에는 yes와 no가 예약되어 있으며,이 답변 중 하나를 완료되지 않은 계산과 함께 사용하면 혼란을 초래할뿐입니다. 당신이 원하는 것은 " 죄송합니다. 너무 작아서 말할 수 없습니다. 가족의 더 큰 남자와 함께 시도하십시오 "라는 대답입니다 . 다시 말해 overflow 와 같은 답변을 원
하거나 모름. 실제로 이것은 의미 론자들에 의해 " 정의되지 않은 "또는 " 하단 " 으로 불리며 종종 "⊥".
따라서 수락, 수락하지 않음 및 정의되지 않은 상태의 3 가지 상태가있는 오토마타가 필요합니다. 정의되지 않은 상태는 계산을 중지시키는 오토 마톤의 누락 된 부분을 나타내는 상태로 볼 수 있습니다. 따라서 계산이 중단되면 정지 상태에 따라 yes , no 또는 undefined 응답이 표시 됩니다.
이제 원하는 것은 일관된 무한한 오토마타 시퀀스 라는 것을 알 수 있습니다 . 두 예 와 아니오 과 일치하지 않습니다
정의되지 않은 ,하지만 예 와 일치하지 않습니다 없음 . 그런 다음 두 입력이 동일한 입력에 대해 일관된 답변을 제공 할 때 일관됩니다.
이것은 다른 종류의 답변을 계산하는 오토마타로 확장 될 수 있습니다. 예를 들어 빨강, 파랑, 녹색 등의 색상을 계산하는 경우 다른 모든 색상과 일치하는 정의되지 않은 색상을 추가 할 수 있습니다. 대답이 다음과 같은 무한 자릿수 인 경우π그런 다음 각 숫자를 일관되고 독립적으로 undefined로 바꿀 수 있습니다. 3.14 ⊥ ⊥ ⊥ ⊥ . . . ~와 일치하다 3.1415 ⊥ ⊥ ⊥ ⊥ . . . 와
⊥ . 159 5159 ⊥ ⊥ ⊥ ⊥ . . ., 그러나 후자의 두 가지는 3.1416 ⊥ ⊥ ⊥ ⊥ . . .. 실제로 이런 의미에서3.1416 ⊥ ⊥ ⊥ ⊥ . . . 근사치가 아닙니다 π. 다른 답변에서 찾을 수있는 모든 정보를 포함 할 때 다른 답변보다 답변이 더 잘 정의되어 있다고합니다. 이것은 실제로 부분적인 순서입니다.
나는 이러한 이론적 측면을 더 발전시키지 않을 것인데, 이것은 Turing Machines에 기반을 둔다면 약간 어색합니다. 요점은 이러한 개념은 계산 영역 (데이터 또는 기계)이 격자와 같은 수학적 구조를 형성한다는 아이디어로 이어진다는 점에서 무한 객체는 무한히 증가하는 (즉, 더 좋고 더 잘 정의 된) 시퀀스의 한계로 적절하게 정의 될 수 있습니다. 유한 객체. 무한 시퀀스를 정의하려면 더 많은 장치와 연속성 개념이 필요합니다. 이것은 기본적으로 Dana Scott의 의미론 이론에 관한 것이며 계산 가능성 개념에 대해 약간 다른 관점을 제공합니다.
그런 다음 튜링 머신 또는 "무한 계산"을 수행 할 수있는 다른 공식적인 장치는 머신의 유한 근사치 시퀀스의 한계로 정의 될 수 있으며, 이는 더 좋고 더 잘 정의됩니다. 입력이든 출력이든 기계가 계산하는 모든 데이터에 대해서도 마찬가지입니다.
내가 읽은 가장 간단한 문서는 Dana Scott이 손으로 쓴 강의 노트 세트이며 종종 암스테르담 강의 노트라고도합니다. 그러나 웹에서 찾을 수 없습니다. 사본에 대한 모든 포인터 (내가 가지고있는 불완전하더라도)는 환영받을 것입니다. 그러나 Scott 의 수학 계산 개요 개요 와 같은 다른 초기 출판물을 볼 수 있습니다
.
질문의 초기 예로 돌아 가기
이러한 근사 개념은 프로그램뿐만 아니라 데이터에도 적용됩니다. 이 함수 fact
는 재귀 적으로 정의됩니다. 이는 유한 근사값을 수렴하는 시퀀스를 계산하는 데 사용할 수있는 함수의 최소 고정 소수점임을 의미합니다 fact
. 이처럼 점점 더 정의 된 유한 함수 시퀀스는 함수라고하는 무한 엔티티로 수렴됩니다 fact
.
그러나 배열 조회를 사용하는 경우 사전 계산 된 값이 무한대의 무한대 테이블에 대한 유한 근사값 인 더 큰 테이블과 더 큰 테이블을 포함하는 코드를 사용하여 정확히 동일한 작업을 수행 할 수 있습니다 fact
. 이러한 각 배열은 실제로 모든 정수에 대한 답변을 제공 할 수 있지만 대답은⊥테이블이 충분히 정의 되지 않은 경우 ( undefined ) 테이블 조회 알고리즘도 무한 테이블로 계산되므로 근사치 순서로 정의해야합니다.
기본 TM 계산 모델을 고려하면 그러한 무한 배열을 그 형식으로 표현할 수는 없습니다. 타당하지 않다는 의미는 아닙니다. 튜링 머신에는와 같은 일부 기능의 테이블 값으로 초기화되는 두 번째 테이프가있을 수 있습니다 fact
. 함수가 계산 가능한 함수 인 한, 즉 관련 함수에 대한 모든 인수-값 쌍을 계산할 수있는 다른 TM의 무한 계산으로 테이블을 초기화 할 수있는 한 TM의 계산 능력을 변경하지 않습니다.
그러나 실제로는 무한 계산을 완료 할 수 없습니다. 따라서 올바른 방법은 테이블을 느리게 계산하는 것입니다. 즉, 필요할 때만 항목을 채우는 것입니다. 이것이 바로 메모로 수행 된 것입니다. 이는 이전 질문에 대해 다른 근거로 제시 한 답변입니다.