图灵机1:简介

图灵机(TM)的特点:                         

1:在带子上既能读又能写

2:读写头既能左移又能右移

3:带子是无限长的(可以无限存储)

4:在进入接受或者拒绝时候便会停机(TM有一个内部状态存储器)


图灵机的形式定义:

图灵机是一个七元组:(),其中是有穷集合。

Q:是状态集,是Q三个特别的状态,即:一个初始状态,两个停机状态。

要求:接收状态不等于初始状态。

两个字母表:

是输入字母表,一般由确定的语言给出。不能包含空格B.

\tau是带字母表,由于TM的写功能,可以引入更多的字母,所以:

转移函数:\delta

\delta:即:TM在读入带字母表当前符号后,确定状态是否改变,并确定读写头的左移或右移。(这里讨论的图灵机不包含读写头不动的情况)


图灵机的格局:

格局用来描述某一瞬时图灵机的所有信息状态。

形式:串U状态Q串V(简记:UQV),串u+串v构成了带上字母,q指向当前v的第一个字母。

图灵机1:简介_第1张图片

格局之间的产生:

如果:,则说:格局1 uaq_{i}bv产生 格局2 uq_{j}acv

,则说:格局1 uaq_{i}bv产生 格局2 uacq_{j}v

特别地,在左端点时,状态位于最前面,不允许左移了;在右端点时,假设没有符号的为空格,则: uaq_{i}等价于 uaq_{i}B.

图灵机1:简介_第2张图片

(用格局来定义图灵机可接受的语言)


一个例子:

一个图灵机可识别所有由0组成,长度为2的方幂的字符串

即:TM可识别语言A=

解:M2="对于输入的字符串w:

1:   从左往右扫描带子,隔一个消去一个0(相当于对0的长度减半操作)。

2:如果第一步之后,带子上剩余唯一1个0则接受。

3:  如果在第一步之后剩余不止一个0,当0的个数为奇数个,则拒绝。(2k+1不可能是2的幂次

4:让读写头回到带子最左端(要有标记带头最左端的操作)。

5:转到第一步

"结束


分步画出状态转移图:

图灵机1:简介_第3张图片

合在一起就是:

图灵机1:简介_第4张图片

下面画出对于字符串“0000”的格局:

图灵机1:简介_第5张图片


例子2:让图灵机识别下列语言:

分析:

图灵机1:简介_第6张图片

这里每消去一个a,就让c去掉b个,也就是将b与c一一消去,然后再读写头返回a是,恢复b.

M3="对于输入字符串w:

1:从左往右扫描字符串,确认输入形式为:a_b_c_.如不然拒绝。

2:让读写头回到左端点。(故读第一个a后可标记为#)

1,2步保证了先出现a,然后读b后不能出现a,读c后不能出现a,b

3:消去一个a,向右扫描直到b出现,然后读写头在b与c来回移动,成对地消去b和c,直至把所有的b消去。

4:如果还有a没消去,则在读写头移动a前,恢复所有已消去的b,重复3,当所有的a都消去后,检查是否有c,c都被消去了则接受,反之,拒绝。

"


最后区分:图灵可判断和图灵可识别

一个TM,最后只有三种状态,两种停机状态,接受或拒绝;一种循环状态,这里是永不停机的意思。

图灵机1:简介_第7张图片

即:

两者都能接受语言,但对于不能接受的语言,判定一定会拒绝,判定(yes or no)

而识别的话,一般要么停机要么永不停机

图灵可识别=递归可枚举(数学角度)=计算可枚举=半可判定

图灵可判定=递归=可解=可计算=可判定

你可能感兴趣的:(计算复杂性,图灵机)