图灵机

一、图灵机的一些特点:双向读写(注意DFA和PDA只是可读,而图灵机可读写)头、无穷带、停机状态。

二、单带图灵机的定义:TM M为一个七元组(有穷状态集、输入字母表、带字母表(通常比输入字母表大、因为还包括可以写上去的字符)、转移函数(需标明向左还是向右)、初始状态、停机接收状态、停机拒绝状态)。注意一个状态不能同时为接受状态和拒绝状态,所以一个TM至少有两个状态。输入带上除了输入串之外的地方都是空。

三、单带图灵机的格局,将状态嵌入序列。例如:uqav表示: 当前状态: q, 当前带内容: uav, 当前扫描符号: a。

初始格局: q0w, w是输入串
接受格局: u qacc av,
拒绝格局: u qrej av,
停机格局: u qacc av, u qrej av, 

四、格局的转变:C1产生C2: 如果转移(qi,b)=(qj,c,L), 则格局ua qi bv 产生 u qj acv,而qi bv 产生 qj cv (在带左端不能向左移)

五、1、图灵可识别: A=L(M)。x∈A时, M在x上停机接受;x∉A时, M在x上停机拒绝或不停机(补图灵可识别:x∈A时, M在x上停机接受或不停机;x∉A时, M在x上停机拒绝)
       2、图灵可判定: A=L(M)。x∈A时, M在x上停机接受;x∉A时, M在x上停机拒绝(即处处停机,标明任意输入串x总能够使图灵机停机)

图灵可识别语言类和图灵可判定语言类对正则运算和补运算封闭。

六、图灵机判定语言的例子:

1、A={A是由2的n次幂个0组成的串,n≥0}。主要思路:1、从左向右扫描带子, 隔一个消去一个0;2、若第一步之后, 带子上只剩下1个0, 则接受。3、若第一步之后, 带子上剩下1个以上奇数个0, 则拒绝。4、让读写头返回到带子最左端。5、转到第一步。

2、B={ w#w | w∈{0,1}* }。思路:1、扫描输入,确认只含一个#,否则拒绝。2、在#两边对应位置来回移动,检查是否含相同符号。若不是,则拒绝。消去已检查过符号。3、当消去#左边所有符号时,检查#右边是否还有符号,若是,则拒绝. 否则接受。

3、C={ aibjck | i*j=k }。思路:1、从左向右扫描输入, 确认输入具有形式a*b*c*, 否则拒绝。2、让读写头回到带子左端。3、消去1个a, 向右扫描直到b出现。在b和c之间来回移动, 成对消去b和c, 直到消去所有b(若过程中c不够了则拒绝)。4、若还有a未消去, 则恢复所有已消去的b, 重复第三步;若所有a已消去, 则检查是否消去所有c, 若是则接受, 否则拒绝.

七、发现带左端的技巧:当前位置上写下某个特殊符号,在控制中记住所取代的符号,让带头向左移动。若带头还在特殊符号上,则已经到带子左端;否则,恢复右边的符号, 再向左移。

八、图灵机的等价变形:双向无穷带、多维带、多带、多头、非确定型……。所以TM概念有很强的稳健性。

关于多带模拟证明:将多带放到一个带上即可,多带中间用特殊符号隔开,然后每次移动通过寻找特殊符号来界定多带;如果某次移动到了特殊符号,就在这个位置写下空白符,
并把这个位置以右的所有内容向右平移一格。然后继续模拟。

关于非确定型的证明:通过遍历(只能用宽搜,深搜的话如果图灵机不停机则出现错误)NTM的计算树。用3个带来模拟:输入带(输入序列)、模拟带(用来模拟当前次)、路径带(指示当前模拟的是计算树上的哪个分支)。

九、计算装置的几种工作方式:
识别器: 输入x, 输出 0/1/?(分别表示拒绝、接受和不停机)
判定器: 输入x, 输出 0/1
转换器: 输入x, 输出y
产生器: 输入0n, 输出xn
枚举器: 输入为空, 输出x1,x2,x3,…无遗漏, 无多余(可重复), 无顺序

定理;图灵可识别当且仅当图灵可枚举。可识别推出可枚举: 枚举字母表上的串, 逐个识别。通过楔形过程: 对s1,s2,…,sk运行k步(注意不能运行完si再运行si+1,因为si可能不停机,那么字典序大于si的就不能枚举出来了)。可识别推出可枚举: 枚举, 等待x出现。

十、算法一词的来源及相关历史。来源于9世纪数学家al-Khowarizmi,“from the town of Kowarzimi”,该地现在是 Khiva, Uzbekistan(乌兹别克斯坦)。他的著作《复原和化简的规则》(Kitab al-jabr w’al muquabala)。Algebra一词也源自此书。18世纪出现Algorithm一词,原意阿拉伯数字十进制算术Algorism 。

1900年, 希尔伯特提出23个问题,希尔伯特第10问题: 有没有求多项式整数根的算法?即“通过有限多次运算就可以决定的过程”。

Godel不完备性定理: 任何形式系统要么是不完备的(指有定理不能通过这个系统进行证明), 要么是不相容的(系统中有内容是矛盾的)。通过一句话悖论表述:“这句话没有证明”
算法是直觉概念,他和处处停机图灵机、lambda演算、0型文法 等价(后者都是数学概念,且彼此等价)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 是一种流行的编程语言,它可以用于构建各种类型的应用程序,包括图灵机图灵机是一种理论模型,用于描述计算和自动化。它由英国数学家艾伦·图灵提出,被认为是计算机科学的重要基础。 在 Python 中,你可以使用基本的编程概念和数据结构来模拟图灵机的行为。例如,你可以使用条件语句、循环和变量来控制图灵机的状态转移和符号操作。你可以通过定义状态集合、符号集合、转移函数和停机状态来实现图灵机的功能。 以下是一个简单的 Python 代码示例,模拟了一个简化的图灵机: ```python # 定义图灵机的状态集合 states = {'q0', 'q1'} # 定义图灵机的符号集合 symbols = {'0', '1'} # 定义转移函数 transitions = { ('q0', '0'): ('q1', '1', 'R'), ('q1', '1'): ('q0', '0', 'L'), ('q1', '0'): ('q1', '1', 'R') } # 定义初始状态和输入串 initial_state = 'q0' input_string = '000111' # 初始化图灵机 current_state = initial_state tape = list(input_string) head_position = 0 # 模拟图灵机运行 while current_state != 'q1': symbol = tape[head_position] if (current_state, symbol) not in transitions: raise Exception('No transition defined for current state and symbol') new_state, new_symbol, move = transitions[(current_state, symbol)] tape[head_position] = new_symbol if move == 'R': head_position += 1 elif move == 'L': head_position -= 1 current_state = new_state # 输出最终的结果 output_string = ''.join(tape) print('Output:', output_string) ``` 请注意,这只是一个简化的示例,实际的图灵机可能更加复杂。在实际应用中,你可能需要使用更高级的编程技术和库来处理更复杂的图灵机模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值