Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций — различия между версиями
м |
|||
| Строка 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 \cup L_2)</tex> | ||
| Строка 12: | Строка 12: | ||
|proof= | |proof= | ||
| − | Пусть <tex>p_1</tex> и <tex>p_2</tex> | + | Пусть <tex>p_1</tex> и <tex>p_2</tex> {{---}} разрешающие программы для языков |
<tex>L_1</tex> и <tex>L_2</tex> соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. | <tex>L_1</tex> и <tex>L_2</tex> соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. | ||
| Строка 49: | Строка 49: | ||
'''return''' 0 | '''return''' 0 | ||
| − | Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность <tex> L_1 </tex>. Если хотя бы в одном разбиении все подслова будут принадлежать <tex> L_1 </tex>, то все слово принадлежит <tex> L_1^* </tex>, иначе | + | Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность <tex> L_1 </tex>. Если хотя бы в одном разбиении все подслова будут принадлежать <tex> L_1 </tex>, то все слово принадлежит <tex> L_1^* </tex>, иначе {{---}} не принадлежит. |
* Для языка <tex> L_1 L_2 : </tex> | * Для языка <tex> L_1 L_2 : </tex> | ||
| Строка 60: | Строка 60: | ||
'''return''' 0 | '''return''' 0 | ||
| − | Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова <tex> L_1 </tex> и второго слова <tex> L_2 </tex>. Если хотя бы для одного разбиения оба разрешителя вернут 1, то слово принадлежит <tex> L_1 L_2 </tex>, иначе | + | Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова <tex> L_1 </tex> и второго слова <tex> L_2 </tex>. Если хотя бы для одного разбиения оба разрешителя вернут 1, то слово принадлежит <tex> L_1 L_2 </tex>, иначе {{---}} не принадлежит. |
}} | }} | ||
{{Теорема | {{Теорема | ||
|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 \cup L_2)</tex> | ||
| Строка 75: | Строка 75: | ||
|proof= | |proof= | ||
| − | Пусть <tex>p_1</tex> и <tex>p_2</tex> | + | Пусть <tex>p_1</tex> и <tex>p_2</tex> {{---}} полуразрешающие программы для языков <tex>L_1</tex> и <tex>L_2</tex> соответственно. Для доказательства достаточно написать полуразрешающую программу для каждого случая. Заметим, что <tex>p_1</tex> и <tex>p_2</tex> могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо. |
* Для языка <tex> L_1 \cup L_2 :</tex> | * Для языка <tex> L_1 \cup L_2 :</tex> | ||
| Строка 117: | Строка 117: | ||
{{Теорема | {{Теорема | ||
|statement= | |statement= | ||
| − | Языки <tex> L_1, L_2 </tex> | + | Языки <tex> L_1, L_2 </tex> {{---}} перечислимы, тогда следующие языки могут быть не перечислимы: |
* Дополнение <tex>L_1\ (\overline{L_1})</tex> | * Дополнение <tex>L_1\ (\overline{L_1})</tex> | ||
| Строка 130: | Строка 130: | ||
== Литература == | == Литература == | ||
| − | * ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' | + | * ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' {{–--}} М.: МЦНМО, 1999 |
Версия 09:50, 20 декабря 2011
| Теорема: |
Языки — разрешимы, тогда следующие языки разрешимы:
|
| Доказательство: |
|
Пусть и — разрешающие программы для языков и соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая.
return
return
return
return
return
forall все возможные разбиения текущее разбиение if return 1 return 0 Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность . Если хотя бы в одном разбиении все подслова будут принадлежать , то все слово принадлежит , иначе — не принадлежит.
forall все возможные разбиения на две части текущее разбиение if return 1 return 0Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова и второго слова . Если хотя бы для одного разбиения оба разрешителя вернут 1, то слово принадлежит , иначе — не принадлежит. |
| Теорема: |
Языки — перечислимы, тогда следующие языки перечислимы:
|
| Доказательство: |
|
Пусть и — полуразрешающие программы для языков и соответственно. Для доказательства достаточно написать полуразрешающую программу для каждого случая. Заметим, что и могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.
for if return 1
if return 1
if return 1
forall все возможные разбиения текущее разбиение if return 1
forall все возможные разбиения на две части текущее разбиение if return 1 |
| Теорема: |
Языки — перечислимы, тогда следующие языки могут быть не перечислимы:
|
| Доказательство: |
|
Рассмотрим язык . Предположим, что он перечислим. Тогда, имея какое-либо слово, мы можем одновременно запустить перечислители для и . В какой-то момент времени слово появится либо в выводе перечислителя для , либо в выводе перечислителя для . Тогда получится что разрешим, так как про любое слово мы можем узнать принадлежит оно или не принадлежит. Но мы знаем, что существуют перечислимые, но не разрешимые языки, следовательно, язык может быть не перечислим. Теперь рассмотрим . В качестве возьмем язык, состоящий из всех слов. Тогда получится, что язык это . Про язык мы знаем, что он перечислим не всегда, следовательно и язык также не всегда перечислим. |
Литература
- Верещагин Н. К., Шень А. Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции Шаблон:–-- М.: МЦНМО, 1999