个人笔记——图灵机实现函数f(x,y)=ax2+by

用图灵机实现函数F(X,Y)=aX2+bY,

相当于包含两个部分,第一个部分解决乘法,第二部分解决加法。
采用的是比较传统的单带单道图灵机参数放置如下:
q a 0 X 0 X 0 b Y 0

其中q表示的是初始状态,每个参数之间用0隔开区别。
拆分计算aX2,首先计算aX,假设c=aX,紧接着计算cX。

计算aX:
(1)读取最左侧的1,将其替换为a并右移,直到遇到第一个0,右移;
(2)遇到1则将其替换为x,并右移;
(3)重复(2)直至再次遇到0;
(4)左移直至遇到a,在右移一次,若遇到1则将其替换为a,转(5);遇到0则将0替换为空并回到最左侧,将所有的a替换为0,将x替换为1;
(5)右移遇到x,将其替换为x1;
完成(1)~(5)的步骤将计算完成aX,令c=aX,按照同样的步骤完成cX。

计算bY的时候反向进行:
(1)读取最右侧的1,将其替换为y并左移,直到遇到第一个0,左移;
(2)遇到1则将其替换为b,并左移;
(3)重复(2)直至再次遇到0;
(4)右移直至遇到y,在左移一次,若遇到1则将其替换为y,转(5);遇到0则置空并右移到最右侧,将所有的y和0都替换为空,将b替换为1;
(5)左移遇到b,将其替换为b1;

计算完成了aX2和bY,再将它们进行加减。令X=aX2,Y=bY,则下面需要计算X+Y的值。
计算X+Y:
(1)从左侧开始右移,遇到1直接右移,遇到0,将其替换为1在右移,直至遇到空;
(2)遇到空则左移一次,左移遇到1,则将其变为0;
(3)接着左移,直至移动到做左侧。

例如a=3,X=2,b=2,Y=3,其移动模型如下:
aX2:

→ # 1 1 1 0 1 1 0 1 1 0

→ # a 1 1 0 1 1 0 1 1 0

→ # a 1 1 0 x x 0 1 1 0

→ # a a 1 0 x 1 x 1 0 1 1 0

→ # a a a 0 x 1 1 x 1 1 0 1 1 0

→ # # # # # 1 1 1 1 1 1 0 1 1 0

→ 1 1 1 1 1 1 0 1 1 0

→ # a a a a a a 0 x 1 1 1 1 1 x 1 1 1 1 1 0

→ # # # # # # # # 1 1 1 1 1 1 1 1 1 1 1 1 0

→ # 1 1 1 1 1 1 1 1 1 1 1 1 0

bY:
→ 0 1 1 0 1 1 1 0 #

→ 0 1 1 0 1 1 y 0 #

→ 0 b b 0 1 1 y 0 #

→ 0 b 1 1 b 1 1 0 y y y 0 #

→ 0 1 1 1 1 1 1 # # # # #

→ 0 1 1 1 1 1 1 #

aX2+bY:

→ # 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 #

→ # 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 #

→ # 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 #

→ # 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 #

(省略了部分重复的步骤)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值