Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций

Материал из Викиконспекты
Версия от 07:38, 2 декабря 2010; Icekeeper (обсуждение | вклад) (Первая теорема.)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Теорема:
[math] L_1, L_2 [/math] –- разрешимы, тогда


[math]\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ \bar{L_1} \\ L_1 \backslash L_2 \\ L_1^* \\ L_1 L_2 \end{array} \right\} [/math] разрешимы
Доказательство:
[math]\triangleright[/math]
Если языки разрешимы, значит для каждого из них есть разрешающая программа. Тогда разрешающая программа для языка [math]L_1 \cup L_2[/math] будет запускать разрешающую для каждого языка и выводить 1, если оба разрешателя выдали 1, 0 во всех остальных случаях. Для языка [math] L_1 \cap L_2 [/math] разрешающая программа будет запускать оба разрешателя и выдавать 0, если оба разрешателя выдали 0, 1 во всех остальынх случаях. Для языка [math] \bar{L_1} [/math] разрешатель будет выдавать результат, обратный результату разрешателя для [math] L_1 [/math]. Для языка [math] L_1 \backslash L_2 [/math] разрешающая программа будет запускать оба разрешателя и выдавать 1, если первый разрешатель вернет 1, а второй 0 и 0 во всех остальных случаях. Для языка [math] L_1^* [/math] разрешатель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность [math] L_1 [/math]. Если хотя бы в одном разбиении все слова будут принадлежать [math] L_1 [/math], то все слово принадлежит [math] L_1^* [/math] иначе не принадлежит. Для языка [math] L_1 L_2 [/math] разрешающая программа будет перебирать все возможные разбиения на 2 слова и проверять принадлежность первого слова [math] L_1 [/math] и второго слова [math] L_2 [/math]. Если хотя бы для одного разбиения оба разрешателя вернут 1, то слово принадлежит [math] L_1 L_2 [/math] иначе не принадлежит.
[math]\triangleleft[/math]