자체 수정 알고리즘이 아닌 자체 수정 알고리즘을 사용하여 모든 자체 수정 알고리즘을 모델링 할 수 있습니까?


12

명령어를 수정할 수있는 임의의 컴퓨터 프로그램이있는 경우 명령어를 수정할 수없는 프로그램으로 해당 프로그램을 시뮬레이션 할 수 있습니까?


편집하다:

나는 stackexchange를 처음 사용하므로 여기에 새로운 질문을 할 수 있는지 확실하지 않지만 여기에 간다. 그래서 가능하다는 증거는 실제로 여러분이 보여 주듯이 실제로 간단합니다. 이제는 궁금합니다. 입출력과 동등한 가장 효율적인 비 자기 수정 알고리즘에 비해 가장 효율적인 자체 수정 알고리즘을 사용하여 문제를 해결하는 것이 더 효율적이고 어느 정도의 문제가 있습니까?

답변:


29

네 가능합니다. 작성된 언어에 대한 인터프리터를 사용하여 프로그램을 시뮬레이션 할 수 있습니다. 이제 프로그램 (인터프리터)이 수정되었으며 자체 수정 프로그램이었던 것이 이제 인터프리터의 데이터입니다.

특히, 시뮬레이션중인 TM이 자체 설명을 수정할 수있는 범용 Turing 머신을 완벽하게 보유 할 수 있습니다. (시뮬레이션 된 기계에 대한 설명은 UTM이 아닙니다.)


11
가상의 통역사가 필요하지 않습니다. 자체 수정 알고리즘을 실행하는 CPU는 자체적으로 고정 알고리즘을 실행하는 시스템입니다 (명령 실행 방법을 지시 함)
Alexander-Reinstate Monica

1
@AlexanderMomchliov 는 명령 세트의 일부를 즉석에서 수정할 수있는 CPU가 있습니다 (그러나 그래도 아이디어는 동일합니다-프로그래밍 가능한 부분은 데이터, 그것을 실행하는 마이크로 컨트롤러는 인터프리터입니다-FPGA 셀 내부의 마이크로 컨트롤러를 가리킴) ) 까다로운 일이 될 수도 있습니다
존 드보락

"자신의 설명을 수정하고있는 TM을 사용할 수있는 범용 Turing 머신을 완벽하게 보유 할 수 있습니다." 나는 생각하고있다 : 이것은 질문을 구걸하지 않습니까? 지금 시뮬레이션중인 TM이 실제로 자체 수정 알고리즘을 모델링 할 수 있음을 증명해야하기 때문입니다. 튜링 자체가 아닌 자체 수정 프로그램이 여전히있을 수 있으므로 튜링 완성도는 TM 및 자체 수정 시뮬레이션과 관련되므로 튜링 완성도를 사용하여 시뮬레이션 할 수 있음을 보여줄 수는 없습니다. algo는 TM이 아닙니다.
user56834

@ Programmer2134 전혀 질문하지 않습니다. 자체 수정 프로그램을 실행하고 있다고 생각하는 CPU가 무엇이든 튜링 머신에서 해당 CPU를 시뮬레이션 할 수 있습니다. 다른 방식으로 설명하기 위해 초기 프로그램은 유한 명령 시퀀스이며, 그 중 일부는 프로그램 자체를 수정합니다. 각각의 명령어는 UTM에 의해 시뮬레이션 될 수 있고, 각각의 수정은 시뮬레이션 될 수 있으며, 각각의 수정 된 명령어는 시뮬레이션 될 수있다. 이 프로세스의 어느 단계에서도 튜링 머신의 힘을 뛰어 넘는 것은 없습니다.
David Richerby

10

수정 코드 (또는 "코드")가없는 Turing-complete 계산 모델은 해당 명령문의 증거로 사용됩니다. 나는 표준 모델 중 하나가 (TM, RAM, ...) 알고하지 않습니다 , 코드를 수정해야 우리가 너무 멀리 볼 필요가 없습니다.

원하는 언어로 프로그램을 작성하려면 해당 모델에서 컴파일하십시오 (컴파일러가 코드 수정을 도입하지 않도록하십시오).


이 : 이것은 물론, 실존 인수는,이다 상응하는 프로그램. 그러나 두 Turing-complete 언어 사이에 재귀 적 (즉, 계산 가능한) 컴파일러가 있다는 것을 알고 있으므로 원하는 형식의 프로그램 (읽기 : 언어)을 얻는 방법입니다.


4

David Richerby의 답변 에 추가하려면 :

자체 수정 알고리즘을 자체 수정 알고리즘으로 모델링 할 수없는 것이 사실이라면, 자체 수정 기능을 수행하는 알고리즘에서 해당 알고리즘을 실행해야합니다. 끝까지 거북이어야합니다.

필자의 의견에서 언급했듯이 자체 수정 알고리즘은 프로세서 명령을 실행하는 방법을 알려주는 정적 알고리즘 (디자인으로 인코딩 됨) 규칙을 준수하는 프로세서에서 실행될 수 있습니다.


1
나는 그것이 흥미로운 구분선이라고 생각합니다. "인생"은 자체 수정 알고리즘으로 모델링 할 수없는 자체 수정 알고리즘이라고 주장 할 수 있지만 "인생"은 일반적으로 알고리즘으로 생각되지 않습니다.
Cort Ammon

2
@CortAmmon : "life"를 알고리즘으로 보면 입력과 출력은 무엇입니까? 동등한 알고리즘 (즉, 동일한 입력이 주어지면 동일한 출력을 생성하는 알고리즘)이 자체 수정되어야한다는 것을 어떻게 증명할 수 있습니까?
ruakh

@ruakh 인생이 자체 수정 알고리즘이라고 주장한다면 입력 자체가 될 것이고 출력 자체가 될 것입니다. 자체 수정 알고리즘이 아닌 알고리즘으로 축소 할 수 없다는 것을 증명하는 것은 까다로울 수 있지만 인기있는 가설이라고 생각합니다. 결국, 얼마나 많은 사람들이 컴퓨터에서 실행할 수있는 알고리즘으로 축소 될 수 있다고 생각합니까?
Cort Ammon

1
@CortAmmon : 알고리즘이 더 이상 "나"가 아니기 때문에 컴퓨터에서 실행되는 알고리즘으로 줄일 수 없습니다. 나는 입력 및 출력 이상입니다. 나는 것을 우리는 가정에서 시작하지만 나는 다음에 시침, 그냥 알고리즘을 실제로 변경 아무것도하지 "그 컴퓨터에서 실행할 수 있습니다." Re : "만약 내가 인생이 자체 수정 알고리즘이라고 주장한다면, 입력은 그 자체이고 출력은 그 자체가 될 것입니다."
ruakh

1
@CortAmmon 자신을 입력으로 제공하는 프로그램은 단지 프로그램입니다 cat. (고양이가 생명체가 되더라도 말장난은 없습니다)
user253751
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.