Я играл с очень интересным и все еще открытым вопросом « Азбука одноленточной машины Тьюринга » (Эмануэле Виола) и придумал следующий язык:
где - это число с в строке x.1
Например, если x = 01101111, то n = 8, m = 3, k = 2; так
Может ли L быть распознан машиной Тьюринга с одной лентой и алфавитом из 3 символов за шагов? O ( n log n )
Если мы используем 4 символа, ответ - да:
- проверьте, если заменяя с на и с на и в то же время сохраните с справа; 0 ϵ 1 2 м 1
- затем посчитайте число с по модулю в .m O ( n log n )
Например:
....01101111....... input x (|x| = 8 = 2^3)
000.021.1212.0001.. div 2, first sweep (000. can safely be used as a delimiter)
000.022.1222.00011. div 2, second sweep
000.022.2222.000111 div 2, third sweep --> m = 3 (= log(n) )
000..22.2222....111 cleanup (original 1s are preserved as 2)
000..22.2221102.... start modulo m=3 calculation
000..22.2210022.... mod 3 = 2
000..22.2000222.... mod 3 = 0
000..22.0012222.... mod 3 = 1
000..20112.2222.... mod 3 = 2
000..11122.2222.... ACCEPT
Если является натуральное число , представленное , чем всегда равна , и поэтому L = { 10 } ? x c o u n t 1 ( x ) 1
—
Марк Бери
Извините | х | означает длину строки х. Пример: x = 01101111, n = 8, m = 3, k = 2 и, таким образом,
—
Марцио Де Биаси
Кстати, это отличный кандидат на вопрос Эмануэле, поскольку он находится в : он не регулярен по лемме прокачки, поэтому не может быть , но это . O ( n log n )
—
Джошуа Грохов