2016-05-03 3 views
-1

При преобразовании многоуровневой машины turing в эквивалентную машину для синглетной обработки мы должны перенести данные и вставить в них пробел. например:Как перенести данные в машину для обучения?

Multitape = [1,2,3,4] [5,6,7,8] [9,10,11,12] 
Equivalent singletape = [1,2,3,4,#,5,6,7,8,#,9,10,11,12] 
consider this transition function in multitape turing machine : 
[(q1,4) = (q2,4,R) and similar for others] 

после этого перехода следующего элемента из Tape1 является пустым Но в одной ленте

[(q1,4) = (q2,4,R) and for others] 

После этого перехода следующего элемента Tape1 является # поэтому мы должны перенести оставшиеся данные для вставки пробел в этом положении. Как это сделать? пожалуйста, дайте ответы относительно функции перехода.

ответ

0

Функция перехода только считывает первую ленту. Переход для механизма tr.tape должен выглядеть примерно так:

(q1,4,5,10) = (q2,4,R,6,L,11,R) 

потому что вам нужны инструкции для всех трех лент.

Для переключения: нет лучшего способа сдвинуть все данные с одной стороны текущего положения на одну позицию по одному. Например:

  1. Отметить текущее положение
  2. Бегите самого правого символа
  3. Move самый правый символ один справа
  4. Move следующего символа на одну позицию влево вправо и так до тех пор, пока вы не достигнете обозначенного символа
Смежные вопросы