找到偶数或奇数长度的图灵机

时间:2013-12-03 12:49:04

标签: transition turing-machines

我有一个问题,我被困住了:

正式描述(即通过转换函数)图灵机,它决定输入字a ^ n是偶数还是奇数。

请有人能够告诉我我被要求做什么,因为我不太明白吗?!

非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

你需要设计一个图灵机,它接收一个^ n(a,aa,aaa,aaaa,aaaaa,aaaaaa等等......,任何......一个字符串)的输入并决定它的长度是多少奇数或偶数。您应该将其视为一个要确定的问题:字符串长度是奇数吗?然后答案是YES或NO,如果它是" NO"你暗示长度是均匀的。

我能想象的一个答案是,我将用一个例子(你做正式设计)来解释:

输入:aaaaaaa(a ^ 7)

>aaaaaaa_ #you start at the end and move to the left
        ^
>aaaaaaa #head is on an a
       ^
>aaaaaaY #write a yes
       ^
>aaaaaaY #move to the left
      ^
>aaaaaaY #head is on an a so, we write an N, go right, delete Y and move left twice
      ^
>aaaaaNY
      ^
>aaaaaNY
       ^
>aaaaaN_
       ^
>aaaaaN
      ^
>aaaaaN
     ^

现在你重复相同的过程但是用Y(写一个Y,向右移动,删除N,向左移动两次)。完成一些步骤后,您将拥有:

>aN #head on a, last write was N, so we write Y
 ^
>YN #go right
 ^
>YN #delete N
  ^
>Y_ #go left twice
  ^
>Y
 ^
>Y #now, head is on > (the beginning of the input) so we finished
^
>Y #move right twice and stop
 ^
>Y_
  ^

在那里,你得到问题的答案Y"是一个^ 7的长度ODD?"

以均匀的长度尝试相同的想法,你最终应该

>N_
  ^

这就是我提出的想法,也许你找到了一台更简单的机器,现在你必须创建图表或表格来正确定义它(这只是一个例子,而不是定义)

答案 1 :(得分:1)

不确定您是否还在寻找解决方案,但我找到了一个在线性时间内解决它的解决方案。以下是过渡函数,如果是偶数,将在输出磁带上产生1,否则为0。

(q_start start blank) --> (R S 1 q_test)
(q_test x 1 ) --> (R S 0 q_test)
(q_test x 0 ) --> (R S 1 q_test)
(q_test blank x) --> (S S x q_halt) 

x代表给定字母的字母。

我交替写1和0,直到我们到达{0,1} *字符串的末尾。一旦我们得到一个空白,我们只需返回,输出磁带上的值就是我们的答案。