Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций — различия между версиями
м |
|||
Строка 1: | Строка 1: | ||
{{Теорема | {{Теорема | ||
|statement= | |statement= | ||
− | Языки <tex> L_1, L_2 </tex> –- разрешимы, тогда языки | + | Языки <tex> L_1, L_2 </tex> –- разрешимы, тогда следующие языки разрешимы: |
+ | * Объединение <tex>L_1</tex> и <tex>L_2\ (L_1 \cup L_2)</tex> | ||
+ | * Пересечение <tex>L_1</tex> и <tex>L_2\ (L_1 \cap L_2)</tex> | ||
+ | * Дополнение <tex>L_1\ (\overline{L_1})</tex> | ||
+ | * Разность <tex>L_1</tex> и <tex>L_2\ (L_1 \backslash L_2)</tex> | ||
+ | * Декартово произведение <tex>L_1</tex> и <tex>L_2\ (L_1 \times L_2)</tex> | ||
+ | * Замыкание Клини <tex>L_1\ (L_1^*)</tex> | ||
+ | * Конкатенация <tex>L_1</tex> и <tex>L_2\ (L_1 L_2)</tex> | ||
− | |||
|proof= | |proof= | ||
Пусть <tex>p_1</tex> и <tex>p_2</tex> — разрешающие программы для языков | Пусть <tex>p_1</tex> и <tex>p_2</tex> — разрешающие программы для языков | ||
Строка 57: | Строка 63: | ||
{{Теорема | {{Теорема | ||
|statement= | |statement= | ||
− | Языки <tex> L_1, L_2 </tex> –- перечислимы, тогда языки | + | Языки <tex> L_1, L_2 </tex> –- перечислимы, тогда следующие языки перечислимы: |
+ | * Объединение <tex>L_1</tex> и <tex>L_2\ (L_1 \cup L_2)</tex> | ||
+ | * Пересечение <tex>L_1</tex> и <tex>L_2\ (L_1 \cap L_2)</tex> | ||
+ | * Декартово произведение <tex>L_1</tex> и <tex>L_2\ (L_1 \times L_2)</tex> | ||
+ | * Замыкание Клини <tex>L_1\ (L_1^*)</tex> | ||
+ | * Конкатенация <tex>L_1</tex> и <tex>L_2\ (L_1 L_2)</tex> | ||
− | |||
|proof= | |proof= | ||
Строка 118: | Строка 128: | ||
{{Теорема | {{Теорема | ||
|statement= | |statement= | ||
− | Языки <tex> L_1, L_2 </tex> –- перечислимы, тогда языки | + | Языки <tex> L_1, L_2 </tex> –- перечислимы, тогда следующие языки могут быть не перечислимы: |
− | + | * Дополнение <tex>L_1\ (\overline{L_1})</tex> | |
− | <tex>\ | + | * Разность <tex>L_1</tex> и <tex>L_2\ (L_1 \backslash L_2)</tex> |
|proof= | |proof= |
Версия 06:28, 19 декабря 2011
Теорема: |
Языки –- разрешимы, тогда следующие языки разрешимы:
|
Доказательство: |
Пусть и — разрешающие программы для языков и соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая.
return
return
return
return
return
forall разбиение if return 1 return 0 Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность . Если хотя бы в одном разбиении все подслова будут принадлежать , то все слово принадлежит , иначе — не принадлежит.
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова forall разбиение if return 1 return 0 и второго слова . Если хотя бы для одного разбиения оба разрешателя вернут 1, то слово принадлежит , иначе — не принадлежит. |
Теорема: |
Языки –- перечислимы, тогда следующие языки перечислимы:
|
Доказательство: |
Пусть и — полуразрешающие программы для языков и соответственно. Для доказательства достаточно написать полуразрешающую или перечисляющую программу для каждого случая. Для некоторых языков предоставим оба варианта. Заметим, что и могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.
полуразрешающая программа: if return 1 Перечислитель же для этого языка будет по очереди на один шаг запускать перечислители для и и выдавать по очереди слова из и соответственно.
полуразрешающая программа: if return 1
полуразрешающая программа: if return 1
полуразрешающая программа (по аналогии с для разрешимого ):forall разбиение if return 1 Перечислитель же строится следующим образом: запускаем перечислитель для в цикле по тайм-лимиту и запоминаем выданные им слова. При выдаче каждого нового слова перебираем все возможные перестановки уже выданных слов и выдаем их.
полуразрешающая программа: Перечислитель же для forall разбиение if return 1 строим следующим образом: запускаем одновременно перечислители для и , запоминая все выданные слова. При выдаче новых слов перебираем все возможные пары из запомненных слов и выдаем их конкатенацию. |
Теорема: |
Языки –- перечислимы, тогда следующие языки могут быть не перечислимы:
|
Доказательство: |
Рассмотрим язык Теперь рассмотрим . Предположим, что он перечислим. Тогда имея какое-либо слово, мы можем одновременно запустить перечислители для и . В какой-то момент времени слово появится либо в выводе перечислителя для , либо в выводе перечислителя для . Тогда получится что разрешим, так как про любое слово мы можем узнать принадлежит оно или не принадлежит. Но мы знаем, что существуют перечислимые, но не разрешимые языки, следовательно, язык может быть не перечислим. . В качестве возьмем язык, состоящий из всех слов. Тогда получится, что язык это . Про язык мы знаем, что он перечислим не всегда, следовательно и язык также не всегда перечислим. |
Литература
- Верещагин Н. К., Шень А. Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции — М.: МЦНМО, 1999