图灵机援助

时间:2016-11-17 05:10:41

标签: computer-science finite-automata automata

我一直在设计图灵机,我最近解决的是一种语言L = {w:n a (w)= n b (w)},其中w中的a的数量等于w中的b的数量。

但是,我如何设计图灵机用于一种语言,其中w的数量不等于w的b数? (例如,L = {w:n a (w)≠n b (w)}?

我一直用来参考的图书和网站定义了图灵机如下:

M =(Q,Σ,Γ,δ,q 0 ,☐,F),其中Q是状态,Σ是输入字母,Γ是磁带字母,δ是过渡,q 0 是开始状态,☐是一个空白空间,是Γ(☐εΓ)的元素,F是指定为q f 的最终状态

1 个答案:

答案 0 :(得分:0)

如果您最近解决了a和b的数目相等的情况,那么对于不相等的情况的直接解决方案是:

  • 如果您以前曾经崩溃​​过(没有有效的过渡),请向halt_accept添加过渡;
  • 如果您过去曾经通过halt_reject明确拒绝,请转到halt_accept;
  • 如果您以前通过输入halt_accept接受,请转至halt_reject。

这个新的TM(1)接受a和b相等的情况下TM不会接受的任何东西,(2)拒绝相等的情况下TM会接受的任何东西a和b的数字。

实际上,此过程适用于任何TM的工作,这些TM的工作仅仅是确定机器语言中输入字符串的成员资格;枚举补充语言中的字符串是行不通的,但这不一定是您所需要的(您可以通过将像这样构造的机器作为子机器,再枚举所有字符串并对其进行检查,来进行枚举)。