Мы говорим, что машина Тьюринга смертна, если M останавливается для каждой начальной конфигурации (в частности, содержимое ленты и начальное состояние могут быть произвольными). Каждый рекурсивный язык распознается смертной машиной Тьюринга? (т. е. если есть ТМ, принимающий L , существует также смертный ТМ, принимающий L )
computability
Марчин Котовски
источник
источник
Ответы:
Вот два результата, приведенные в книге Чарльза Э. Хьюза «Неразрешимость конечной сходимости для операторов конкатенации, вставки и ограниченного шаффла» :
Теорема 3 : Класс смертных машин Тьюринга - это в точности класс машин Тьюринга с постоянным временем работы.
й для всех начальных конфигураций С , М останавливается не более чем з шагов }Со н сек т Т= { М| ∃ s С M s }
Поэтому я думаю , что мы можем получить следующее: учитывая смертный машин Тьюринга , пусть M ' , S соответствующий постоянное время ТМ и его время работы. Язык, распознаваемый M по алфавиту Σ = { 0 , 1 } , точно:M M', с M Σ = { 0 , 1 }
Таким образом, класс языков, распознаваемых смертными машинами Тьюринга, является подходящим подмножеством класса обычных языков. Например, вы можете использовать чтобы обмануть каждое постоянное время TM.L = { ( 0 | 1 )*1*}
Все становится интересным, когда мы пытаемся решить, является ли машина Тьюринга смертельной, потому что нам приходится сталкиваться с произвольной (конечной) начальной лентой и состоянием.
Теорема 4 : множество смертных машин Тьюринга рекурсивно перечислимо.
источник
Я думаю, что есть. Мы должны сделать для каждого L M, который принимает его таким образом, что все его ходы записываются на ленту, и после каждого «основного шага» он проверяет, были ли все его шаги до этой точки действительно действительными. Ниже я даю набросок о том, как сделать такую машину (которая может содержать некоторые незначительные ошибки, но основная идея должна быть в порядке).
Обозначим машину, которая принимает L через T. Теперь мы опишем M. Сначала мы копируем x на отдельную ленту памяти. Затем, когда бы T ни делал ход, мы записываем его на эту ленту памяти после x. После этого мы копируем все содержимое лент T в некоторые дополнительные рабочие ленты и проверяем, действительно ли из начальной конфигурации T достигнет своего текущего состояния после шагов, записанных на ленте памяти. Если нет, мы останавливаемся. Если да, мы продолжим.
источник