Вам нужно спроектировать машину Тьюринга, которая получает на вход a^n (a, aa, aaa, aaaa, aaaaa, aaaaaa и т. д., любую строку a...a) и решает, является ли длина нечетной или четной. . Вы должны думать об этом как о вопросе, который нужно решить: является ли длина строки нечетной? тогда ответ будет ДА или НЕТ, если это «НЕТ», вы подразумеваете, что длина четная.
Один ответ, который я могу себе представить, я объясню на примере (вы делаете формальный дизайн):
ввод: ааааааа (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 на вопрос «является ли длина a^7 НЕЧЕТНОЙ?»
Попробуйте ту же идею с равной длиной, и вы должны получить
>N_
^
Это идея, которую я придумал, может быть, вы найдете более простую машину, теперь вам нужно создать диаграмму или таблицы, чтобы определить ее правильно (это был просто пример, а не определение)
person
arieljuod
schedule
03.12.2013