r语言计算某个字符串中某个字符数量_可计算性与图灵机停机问题

本文介绍了图灵机的概念,作为计算的模型,图灵机可以模拟各种计算装置的计算能力。文章讨论了递归语言、非递归语言及其与可计算性之间的关系,并通过停机问题说明某些问题是超出计算机解决能力的。此外,还探讨了正则语言、上下文无关语言以及它们与不同计算模型(如有穷状态自动机、下推自动机)的关系。
摘要由CSDN通过智能技术生成

4e63c495c62aa920b38729f68e1b4fd0.png
一. 图灵机简介

c8b3c0c83663889a1a5f86908ca686f4.png

图灵机( Turing Machine )是 Alan Turing 提出一种假想的机器。它是一种形式化定义“计算”的模型。想一下在我们草稿纸上计算一个乘法的过程:首先将“竖式”写在纸上。然后,从某个位置开始,根据看到的符号按照规则(乘法表)写下新的符号。之后移动视线到纸上的其它位置。同时大脑还需要记忆一些信息:当前是否存在进位,进到高位的数字是什么等等。进行几轮动作后计算过程结束,在纸上留下计算结果。图灵机模型就是要模拟类似的过程。

将一台图灵机记为

具有一个有穷状态集
,任意时刻
处于
中的某个状态(
)。
中有一个唯一的状态叫做开始状态,记为
有一个子集叫做接受状态集,记为
中的状态称为接受状态;
还有一个子集叫做拒绝状态集,记为
中的状态称为拒绝状态。
不相交(
)。也就是说一个状态不能既是接受状态又是拒绝状态。

配有一个有限的字符集合
,例如
。 令
为这样的集合:它的元素是所有由
有限
中的字符连接而成的字符串。对于举例的
来说,所有由有限个
连接而成的字符串
都属于
,例如
。字符串
包含的字符个数是
的长度。长度为 0 的字符串叫做空字符串(
Null String ),它也属于
以某个
作为输入。

还配一个无限长的带(
Tape )。带被分成一个个单元格( Cell )。每个单元格上可以写一个字符。
有一个读写头,总是位于带的某个单元格之上。读写头可以对当前单元格进行读和写,还可以沿着带左右移动,但一次只能移动一个单元格。 允许
在带上读写的全部字符构成了带字符集
包含
还可以包含
中没有的字符。这些字符不能用来构造输入字符串
,但可以被
在带上读和写。
必须至少包含一个
中没有的字符——空白字符(
注意不是空字符串,而是一个表示空白的字符)。

运行的每一步,它根据当前状态和读写头下的字符,擦除当前单元格的旧字符并写下某个新字符,将读写头向左或右移动一个单元格,进入某个新状态(
新状态也可以就是本来的状态)。决定
如何动作的规则就是
的转移函数
。例如
,意思是当
处于
且读写头下的字符是 3 时,擦掉 3 写下 7 ,读写头向右移动一格,进入
。一个 7 元组
就定义了一台图灵机
。不同的 7 元组定义不同的图灵机。

要启动

,首先将输入字符串
写在带上(
位置任意),其余单元格都是空白字符。令
的读写头对准
的第一个字符,并让
处于
。这时
就开始一步一步地运行:读字符、覆写字符、移动读写头、进入新状态,然后再重复...... 直到
进入某个接受状态或某个拒绝状态,这时
停机。如果进入的是接受状态,则
接受
;如果进入的是拒绝状态,则
拒绝
。除了这两种情况,还有第三种情况:那就是
永远不停机——它既不进入接受状态,也不进入拒绝状态,而是一直运行下去。后两种情况合称
不接受
。注意“接受、拒绝、不接受”三者的区别。所以对于某
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值