Есть ли необходимость, чтобы был бесконечным, чтобы быть неразрешимым?
Я имею в виду, что если мы выберем язык как ограниченную конечную версию , то есть , ( ), с . Возможно ли, что будет неразрешимым языком? L ⊆ Σ ∗ | L ′ | ≤ N N ∈ N L ′ ⊂ L L ′
Я вижу, что существует проблема "Как выбрать слов, которые L '", для которых мы должны установить правило выбора, которое будет первыми N элементами L' , своего рода "конечной" звездой Клини операция. Цель состоит в том, чтобы найти язык неразрешимости без бесконечного множества, но я его не вижу.∈
РЕДАКТИРОВАТЬ Примечание:
Хотя я выбрал ответ, многие ответы и все комментарии важны.
formal-languages
computability
undecidability
Hernan_eche
источник
источник
Ответы:
Да, необходимо, чтобы был бесконечным, чтобы быть неразрешимым.L
Чтобы суммировать ответы Рафаэля и Сэма, вы должны думать о «разрешимых» как о вещах, которые может решить компьютерная программа. Требуемая программа очень проста, она просто должна вывести «Да» для элементов в , или иначе сказать «нет».L
Таким образом, чем «сложнее» , тем длиннее программа, которую вам нужно написать. Другими словами, чем дольше вы запускаете программу, тем больше вещей можно проверить ... Так что, если кто-то дает конечный язык , скажем, , вы можете написать следующая программа:L L L={a1,a2,…,an}
Теперь, если кто-то даст вам большую (но конечную), вы просто напишите более длинную программу. Это всегда верно, и любой конечный будет иметь свою собственную программу. Единственный «интересный» случай - это то, что происходит, когда бесконечен - ваша программа не может быть бесконечной.L L L
Проблема «неразрешимости» еще более интересна: это те (бесконечные) , у которых нет программы, которая работает для них корректно. Мы знаем, что такие языки должны существовать, поскольку существует гораздо больше (бесконечных) языков чем число программ конечной (но неограниченной) длины.L L
источник
undecidable
, должен быть бесконечным. То, что вы хотите, это не другой термин, а именно «не разрешимо ». Назовите последний неразрешимым. Тогда для любого конечного нет необходимости, чтобы был бесконечным, чтобы быть неразрешимым. Только не путайте (или неправильно) и неразрешимоP P P L P Pundecidable
undecidable
Я не уверен, что правильно понимаю вопрос, но каждый конечный язык является регулярным. Нет регулярных языков, которые неразрешимы, и, следовательно, нет конечных языков, которые неразрешимы. Все эти утверждения хорошо известны, и доказательства можно найти у Хопкрофта и Уллмана .
источник
Если ваш язык конечен, вы можете выполнить поиск по таблице в жестко закодированной таблице, содержащей все слова в . Это неудобно записывать как машину Тьюринга, но в других эквивалентных моделях это вполне понятно.L ′L′ L′
На самом деле конечных автоматов достаточно. Построим автомат для следующим образом:L′
Построенный таким образом автомат, очевидно, принимает . Следовательно, является регулярным и, следовательно, вычислимым ( ).L′ L′ REG⊊RE
Обратите внимание, что некоторые доводы применимы для ко-конечного , то есть ; вы просто жестко закодируете элементы не в .L′ ∣∣L′¯¯¯¯¯∣∣<∞ L′
источник
Чтобы быть вообще интересным (для размышления о вычислимости), проблема решения должна иметь бесконечно много ответов «да» и бесконечно много ответов «нет». Такие задачи решения точно соответствуют языкам, содержащим бесконечно много строк в алфавите, а также исключают бесконечно много строк в алфавите.
Все остальное легко может быть закодировано только в ограниченном количестве информации (в худшем случае это просто большой список строк на языке или без него) и, следовательно, может быть вычислено с помощью простых DFA / регулярных выражений. Я надеюсь, что должно быть очевидно, что для любого конечного списка строк вы можете сразу записать регулярное выражение, которое просто ИЛИ для всех строк.
Остроумие моего лектора по теории вычислений заключалось в том, что проблема "существует ли Бог?" вычислим - он вычисляется либо машиной, которая немедленно принимает, либо машиной, которая немедленно отклоняет; мы просто не знаем, какой!
источник