Существует ли неразрешимый конечный язык конечных слов?

10

Есть ли необходимость, чтобы был бесконечным, чтобы быть неразрешимым?LΣ

Я имею в виду, что если мы выберем язык как ограниченную конечную версию , то есть , ( ), с . Возможно ли, что будет неразрешимым языком? L Σ | L | N N N L L L L LΣ|L|NNNLLL

Я вижу, что существует проблема "Как выбрать слов, которые L '", для которых мы должны установить правило выбора, которое будет первыми N элементами L' , своего рода "конечной" звездой Клини операция. Цель состоит в том, чтобы найти язык неразрешимости без бесконечного множества, но я его не вижу.N L"NL

РЕДАКТИРОВАТЬ Примечание:

Хотя я выбрал ответ, многие ответы и все комментарии важны.

Hernan_eche
источник
Кажется, здесь есть (по крайней мере) три вопроса. Пожалуйста, сконцентрируйтесь на одном и отредактируйте остальные.
Рафаэль
Я удалил ссылки на набор мощности, так как он здесь не актуален; P(S) конечно тогда и только тогда, когда S конечно.
Рафаэль
@Raphael Это нормально, но я упоминаю набор мощностей, потому что иногда я читаю «нет выделения из в , поэтому должен существовать неразрешимый язык». NP(N)Я хотел бы понять, почему это не сработало с конечным множеством , с с конечным, вместо необходимости , поэтому я поставилL|L|NN NP(S)
Hernan_eche
1
Насколько я знаю, существование неразрешимых языков не следует немедленно из несуществования такого исключения; вам нужно немного больше. Почему бы это сделать еще один замечательный вопрос! Почему бы тебе не пойти и не спросить? Из этого вы должны понять, почему аргумент не переносится на конечные языки.
Рафаэль
3
Конечный язык разрешим, период, конец истории. Для этого существует множество алгоритмов. Если вы настаиваете на классической модели машины Тьюринга, это можно сделать и так, хотя и менее заметно. Нет необходимости вызывать автоматы с конечным состоянием или обычные языки или любую другую модель автомата, поскольку они на самом деле излишни без какой-либо дополнительной ясности по отношению к машинам Тьюринга.
Дэвид Льюис

Ответы:

15

Да, необходимо, чтобы был бесконечным, чтобы быть неразрешимым.L

Чтобы суммировать ответы Рафаэля и Сэма, вы должны думать о «разрешимых» как о вещах, которые может решить компьютерная программа. Требуемая программа очень проста, она просто должна вывести «Да» для элементов в , или иначе сказать «нет».L

Таким образом, чем «сложнее» , тем длиннее программа, которую вам нужно написать. Другими словами, чем дольше вы запускаете программу, тем больше вещей можно проверить ... Так что, если кто-то дает конечный язык , скажем, , вы можете написать следующая программа:LLL={a1,a2,,an}

if INPUT = $a_1$ output Yes;
if INPUT = $a_2$ output Yes;
...
if INPUT = $a_n$ output Yes;
output No;

Теперь, если кто-то даст вам большую (но конечную), вы просто напишите более длинную программу. Это всегда верно, и любой конечный будет иметь свою собственную программу. Единственный «интересный» случай - это то, что происходит, когда бесконечен - ваша программа не может быть бесконечной.LLL

Проблема «неразрешимости» еще более интересна: это те (бесконечные) , у которых нет программы, которая работает для них корректно. Мы знаем, что такие языки должны существовать, поскольку существует гораздо больше (бесконечных) языков чем число программ конечной (но неограниченной) длины.LL

Ран Г.
источник
+1 Это очень четкий ответ, я хотел бы, чтобы вы расширили точку зрения, вы сказали: «если кто-то на пять больше, чем (но конечно), вы просто напишите более длинную программу» *, но я думаю, что напротив, учитывая ** фиксированное ** конечное множество программ , что, если вы не можете написать более длинную программу, я думаю, что некоторые вводят конечный набор, отбрасывают ДА, а некоторые - нет , Так как , то некоторые значения будут соответствовать индикаторным функциям но * большинствоLP|P|=KLP(P)>KLP не будет!, Потому что возможных языков2K>Kвозможные программы, тогда будут неразрешимые проблемы. Я ошибаюсь? Почему?
Hernan_eche
1
действительно, если вы ограничите размер программы до то существует не более разных программ, которые правильно классифицируют не более разных языков (бесконечных или нет). Таким образом, для этого конкретного набора программ существуют неразрешимые языки и даже конечный. Но это более слабое утверждение, поскольку вы рассматриваете только ограниченный набор программ (например, , у вас есть только 2 возможные программы; конечно, они не смогут много сделать и потерпят неудачу почти на каждом языке )|P|=kO(2k)O(2k)|P|=1L
Ран Г.
спасибо, я знаю, что это более слабое утверждение, но смело, что могут быть конечные и бесконечные Неразрешимые Языки, и я думаю, что этот частный случай должен быть включен в ваш ответ, parte "Да, необходимо, чтобы L был бесконечным в чтобы быть неразрешимым. " кажется, не является необходимостью при определенных условиях.
Hernan_eche
6
Не совсем. Термин «неразрешимый» имеет конкретное значение: не поддается решению стандартной машиной Тьюринга. Таким образом, чтобы быть undecidable, должен быть бесконечным. То, что вы хотите, это не другой термин, а именно «не разрешимо ». Назовите последний неразрешимым. Тогда для любого конечного нет необходимости, чтобы был бесконечным, чтобы быть неразрешимым. Только не путайте (или неправильно) и неразрешимоP P P L P PL undecidablePPPLPundecidableP
Ран Г.
10

Я не уверен, что правильно понимаю вопрос, но каждый конечный язык является регулярным. Нет регулярных языков, которые неразрешимы, и, следовательно, нет конечных языков, которые неразрешимы. Все эти утверждения хорошо известны, и доказательства можно найти у Хопкрофта и Уллмана .

Сэм Джонс
источник
8

Если ваш язык конечен, вы можете выполнить поиск по таблице в жестко закодированной таблице, содержащей все слова в . Это неудобно записывать как машину Тьюринга, но в других эквивалентных моделях это вполне понятно.L LL

На самом деле конечных автоматов достаточно. Построим автомат для следующим образом:L

  1. Для каждого создайте линейную цепочку состояний, которая принимает . wwLw
  2. Создайте новое начальное состояние .q0
  3. Соедините с начальными состояниями всех автоматов, построенных в 1. с помощью -переходов. εq0ε

Построенный таким образом автомат, очевидно, принимает . Следовательно, является регулярным и, следовательно, вычислимым ( ).LLREGRE

Обратите внимание, что некоторые доводы применимы для ко-конечного , то есть ; вы просто жестко закодируете элементы не в .L|L¯|<L

Рафаэль
источник
2

Чтобы быть вообще интересным (для размышления о вычислимости), проблема решения должна иметь бесконечно много ответов «да» и бесконечно много ответов «нет». Такие задачи решения точно соответствуют языкам, содержащим бесконечно много строк в алфавите, а также исключают бесконечно много строк в алфавите.

Все остальное легко может быть закодировано только в ограниченном количестве информации (в худшем случае это просто большой список строк на языке или без него) и, следовательно, может быть вычислено с помощью простых DFA / регулярных выражений. Я надеюсь, что должно быть очевидно, что для любого конечного списка строк вы можете сразу записать регулярное выражение, которое просто ИЛИ для всех строк.

Остроумие моего лектора по теории вычислений заключалось в том, что проблема "существует ли Бог?" вычислим - он вычисляется либо машиной, которая немедленно принимает, либо машиной, которая немедленно отклоняет; мы просто не знаем, какой!

Бен
источник