Это один из способов сделать редукцию из слова A TM на ваш язык.
Учитывая TM M и строку ж, построить этот TM/струнный пары:
M' = "On input x:
If x = "iheartquokkas", accept.
Otherwise:
Run M on w.
If M accepts, accept;
If M rejects, reject;
(Implicitly: if M loops, loop.)"
w' = "iheartquokkas"
Предположим сначала, что M не принимает вес. Тогда машина M 'действительно принимает строку w', потому что она запрограммирована на это. Кроме того, когда вы запускаете M 'on & epsilon ;, он будет запускать M на w и никогда не будет принимать, потому что M не принимает w. Таким образом, M 'принимает w', но не & epsilon ;, поэтому & langle; M ', w' & rangle; на вашем языке.
Во-вторых, предположим, что M принимает w. Затем, когда вы запустите M 'on & epsilon ;, он примет, поэтому не так, M' принимает w ', но не & epsilon ;. Следовательно, & langle; M ', w' & rangle; не на вашем языке.
Теперь у вас есть сокращение отображения от A Дополнение TM к вашему языку, поэтому ваш язык не узнаваем.
Теперь, вы можете доказать, что это не узнаваемо?
Я уверен, что вы найдете более подходящий для этого вопроса на [cs.stackexchange.com] (http://cs.stackexchange.com/) –
Подсказка: этот язык не распознается. – templatetypedef
Спасибо! Это должно означать, что есть функция, которая отображает дополнение Atm к моему языку. Я мог бы принять распознаватель для ~ Atm и вывести противоположное, но все равно не заботится о пустой строке. –