图灵机2:等价变形+算法定义

        一些形式的图灵机:双向无穷、多维带(带子是平面)、多个带子、一个带上多个读写头,非确定性图灵机等。这些变形是等价的,即在能力上具有等价性:可以识别相同的语言类。因而:图灵机具有稳健性

        下面分别证明:单带图灵机和多带图灵机以及非确定性图灵机等价。


    1:多带图灵机的定义

     特点:

1:有多个带子,每个带子有自己的读写头。                                                                                    2:初始状态时:输入只出现在第一条带子,其他带子都是空白。(因此:第一个带子带头必须位于最左端,其他带子的带头可以在任意位置)   

 多带图灵机的转移函数(\delta):

    这里的k是带子的数量

指的是:当前处于状态q_{i},读写头1到k分别指向符号a_{1},...,a_{k},这时转移到下一状态q_{j}时,把符号写成b_{1},...,b_{k},且把每个带子的读写头移动到左,....,右。

2:多带图灵机与单带图灵机等价

         显然,单带图灵机是特殊的多带图灵机,下面证明:多带图灵机能识别的语言,单带图灵机也能识别。

        定理:每个多带图灵机都有与之等价的单带图灵机。

单带TM模拟多带TM有两种方法:①:“分道”:每道模拟一个带(改变字母表)②:每段模拟一条带,这里采用第二种方法。

用单带s模拟多带m:

1:不同带子之间用#分开,在首尾两端也用#号(k个带子需要k+1个#号)

2:s上的点叫“虚拟读写头”,也就是做特殊标志,记住多带m每个带子读写头所指位置。

3:如果多带写新符号,则s对应位置后的内容整体右移。

 具体实现:

S=“对于输入w=w_{1}....w_{n}:                                                                                                                           1):S在自己的带子上放入:#w_{1}^{\star }w_{2}...w_{n}#B^{\star }#....#  ,此格式表示了M全部带子的内容 

       2):为了模拟一步移动,S从第一个#号扫描直到最后一个#,目的是为了确定虚拟读写头下的符号。(这一次扫描是记住每一个带子的带头符号)然后S进行第二次扫描,并根据M的转移函数指示的运行方式来更新带子。(这是对每一个读写头的改写和带头移动的步骤) 

       3):任何时候,S的虚拟读写头向右移动到某个#号时,就把这个位置的符号写成B,然后把这个位置已右的所有内容向右平移一格,然后继续模拟。(如果一个带子读写头移动到空白位置,则有写新符号的可能,此时要把其他以右的内容右移一格,空出写新符号的位置)                                         ”

       这是一个构造性证明,正确性证明略(即:一个串,s接受m接受;s拒绝m拒绝)

       推论:图灵可识别iff多带图灵机可识别                                                                                               一般:描述问题喜欢用多带图灵机,证明性质喜欢用单带图灵机


2:非确定性图灵机(NTM)

特点:在计算的任何时刻,机器可以在多种可能性中去选择一种继续进行。

状态转移描述:P:幂集(所以子集的并),S:停止不动

    格局间的转换可以用计算树描述。

    1:停机接受,2:停机拒绝,?:可能永不停机(不确定)    这里:每个结点表示一个格局,每个树枝表示当前格局可以转换下一格局的不同可能。

          定理:每个NTM都有一个与之等价的确定性TM.

1:  NTM只要有一个分支可以接受此语言就说NTM可接收,所有分支都不能接收,才说不可计算

2:  NTM遍历一般选用广度搜索,因为深度搜索会导致某一分支永不停机从而进入死循环。

多带图灵机TM D模拟非确定性图灵机NTM N 

 输入带:单独作为一条带是因为每次模拟一个分支都需要读输入字符串。                                         模拟带:用于模拟NTM的一个计算分支,存放N的带子中的内容。                                                   地址带:又叫路径带,告诉当前结点要选择的子结点,相当于确定分支(如:地址231,根节点出发寻找第二个子结点,再走第三个子结点,最后选择第一个子结点。)

采用轮换方式,每个格局模拟几步后,重新选择路径,以防选择的分支永不停机。

pf:用DTM D模拟NTM N.                                                                                                                               D="对输入w:                                                                                                           ①   初始状态,第一个带子包含w,另外两个带子为空。                       

                   ②   把输入带内容复制到模拟带上。(准备在此模拟各分支)   

                   ③   在第二个带子上模拟N在输入w上的某个非确定性的计算分支,这个分支由第三个带子的地址指定。若遇到接收格局则接收,否则进入第四步。 

                   ④    在第三个带子上,用字典序(类似哈弗曼编码树,左小右大,先短再长)下的下一个串来代替原用的串,转到第二步。                                                                                      "(遍历所有可能就相当于由非确定转为确定)

推论:图灵可识别当且仅当非确定图灵机识别。图灵可判定当且仅当确定性图灵机判定

            (所有分支都得要么接收,要么拒绝,不能永不停机)。


图灵机作为计算装置的工作方式:                                                                                                                 1:识别器---输入x,输出0/1/?       

           2:   判定器---输入x,输出0/1(要么接受,要么拒绝)               

           3:转换器--输入x,输出y(输出不同串,一般作为转换函数)     

           4:产生器--输入0^{n},输出x_{n}(从串中截取)   

           5:枚举器--输入\varepsilon,输出x_{1},x_{2},x_{3}...,一般:无遗漏,无多余,可重复,无顺序(枚举一个语言)

                TH:图灵可识别等价于图灵可枚举


(算法是直觉概念,图灵机是数学概念。由于基于经验是正确的,相当于物理中由实验总结的规律,故而称为论题)

    图灵机算法的描述:                                                                                                                                  1:形式描述--七元组                                                                                                                          2:实现描述--不给出状态和转移函数的细节,只描述数据的存放和读写头的移动。                        3:高层描述--用日常语言描述算法,不考虑读写头和对带的管理。

    图灵机的输入必须是串,如果不是就需要编码成串(如:图,文法,多项式)

编码的细节:                                                                                                                              字符串: X=010,Y=11,=?

第一种:=001100101111(X和Y的各字符双写,再用01连接。读到两个连续不同符号就知道字符串结束了)  ||=2|x|+2|y|+2

第二种:=11111001011(X和Y的符号直接相连,记录第一个串的字符串长度双写位于头部,然后用10连接)    ||=|x|+|y|+2log^{|x|}+2

第三种:=111110010     =11001011                                                                                              =11111001011001011(将x和y分别把自己长度位于首部用10连接,然后两个编码后的字符串直接相连)   解码方便


     描述图灵机算法的的格式:带引号的锯齿状日常语言文字段                                                             其中:第一行描述算法的输入(暗含了TM会首先检查输入的对象编码是否符合要求,否则拒绝)   

      :判定无向图的连通性

                                              高层描述:                                                                                                                   M="输入的是图G的编码:(描述首先指明输入)                                                           1:选择G的一个顶点,做上标记。         

             2:重复下列步骤,直到没有新的顶点可做标记。               

             3:对于G的每个顶点,如果它是带标记顶点的:邻接点,则给它做标记。 

             4:扫描G的所有顶点,如果都有标记则拒绝,否则接收。(判定依据)                                 " 

细节:

 1:编码如右图,顶点集合与边                                                                                                           2:合法性检查:顶点序列不可重复,边序列不能包含不在顶点序列中的新节点。                           3:步骤:①最左边顶点加个点②在一个已加点画个线做标记,再选任意一个未加点的的画个线,去边序列中寻找是否有两条线的边序列,有就将未加点的加个点③最后检查是否都加了点。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值