[笔记]GOTO-Programme中的定理及其证明
Theorem 1
Jedes GOTO-Programm kann durch ein WHILE-Programm mit nur einer "echten" WHILE-Schleife simuliert werden.
Insbesondere ist also jede GOTO-berechenbare Funktion auch WHILE-berechenbar.
每个GOTO-Programm可以通过一个WHILE-Programm来模拟。这个WHILE-Programm只有一个“真的”WHILE循环。“真的”的意思是,这个WHILE循环是一个“Normalform”,通过证明我们可以看出来:
证明:
WHILE
DO P END
相当于
:IF
THEN GOTO
;P;GOTO
;
:HALT
每个GOTO可计算函数都是WHILE可计算的。
证明如下:
假设GOTO-Programm为,
为一个在P中使用的变量的最大编号。
用IF-THEN结构(这是一个典型的LOOP循环)来表示WHILE-Programm:
'
...
'
作为补充,我们可以观察一下的不同情况:
1.
~>
2.GOTO ~>
3.HALT~>
4.IF THEN GOTO
~>
IF THEN GOTO
Theorem 2
Jede Turing-berechenbare Funktion ist GOTO-berechenbar.
每个图灵可计算的函数都是GOTO可计算的。
证明:
给出一个图灵机 ,其中
,
。
观察一个序列其中
,
,把这个序列改写成
三个数,Basis
。
举例解释以上的x,y,z分别代表什么:
,那么
,
。
序列
,则
,
,
。和x不一样,y是倒过来的。
,为状态的下标编号。
用GOTO-Programm来表示的话只有以下的四种形式:
从起始序列生成x,y,z(LOOP可计算)
M的模拟
把给出的
翻译回
(LOOP可计算)
和
包括了数学运算,所以是LOOP可计算的。需要考虑的是
。关于
用以下的例子来解释:
现在的序列是,并且
所以x,y,z就有了相应的改变。这些改变可以用GOTO-Programm来模拟。y和z的改变中需要用到MOD和DIV,这两个操作也是LOOP可计算的。需要去掉最后一位的时候用DIV b,需要增加最后一位的时候要先乘上b,需要取最后一位则用MOD b。当最后的时候则
。