Вопрос 1: Является ли объединение двух нерегулярных языков регулярным?
Иногда. Обычные, не зависящие от контекста, контекстно-зависимые, рекурсивные и рекурсивно перечислимые языки закрыты для объединения. Тем не менее, детерминированные c неконтекстные (DCFL) языки, принятые детерминированными c раскрывающимися автоматами (DPDA), не являются. Стандартное доказательство выглядит примерно так. Рассмотрим следующие языки:
L<sub>1</sub> = {a<sup>i</sup>b<sup>j</sup>c<sup>k</sup> : i,j,k ≥ 0}
L<sub>2</sub> = {a<sup>i</sup>b<sup>i</sup>c<sup>j</sup> : i,j ≥ 0}
L<sub>3</sub> = {a<sup>i</sup>b<sup>j</sup>c<sup>j</sup> : i,j ≥ 0}
L<sub>4</sub> = {a<sup>i</sup>b<sup>i</sup>c<sup>i</sup> : i ≥ 0}
Первый язык обычный, второй и третий DCFL, а четвертый не контекстно-свободный . Если DCFL были закрыты при объединении, то поскольку он закрыт при дополнении, язык
L<sub>4</sub><sup>c</sup> = L<sub>1</sub><sup>c</sup> ∪ L<sub>2</sub><sup>c</sup> ∪ L<sub>3</sub><sup>c</sup>
должен быть DCFL. К тому же, L<sub>4</sub>
должен быть DCFL. Это противоречие, потому что L<sub>4</sub>
даже не зависит от контекста. Следовательно, DCFL не является закрытым для объединения. Наконец, мы можем применить l aws Де Моргана и тот факт, что DCFL закрыт при дополнении, чтобы сделать вывод, что DCFL не закрыт при пересечении.
И наоборот, существуют нерегулярные языки, объединение которых является регулярным. Ответ на ваш второй вопрос показывает, что существуют языки DCFL, объединение которых задается как a*b*
.
Вопрос 2: Объединение L<sub>1</sub> = {a<sup>i</sup>b<sup>j</sup> : i ≥ j}
и L<sub>2</sub> = {a<sup>i</sup>b<sup>j</sup> : i < j}
.
Объединение L<sub>1</sub>
и L<sub>2</sub>
равно L<sub>3</sub> = {a<sup>i</sup>b<sup>j</sup> : i,j ≥ 0}
. Поскольку это равенство с участием множеств, мы должны показать, что L<sub>1</sub> ∪ L<sub>2</sub> ⊆ L<sub>3</sub>
и L<sub>3</sub> ⊆ L<sub>1</sub> ∪ L<sub>2</sub>
.
- Если
u ∈ L<sub>1</sub> ∪ L<sub>2</sub>
, то u ∈ L<sub>1</sub>
или u ∈ L<sub>2</sub>
. Если u ∈ L<sub>1</sub>
, то u = a<sup>i</sup>b<sup>j</sup>
, где i ≥ j
. Если u ∈ L<sub>2</sub>
, то u = a<sup>i</sup>b<sup>j</sup>
, где i < j
. По трихотомии u = a<sup>i</sup>b<sup>j</sup>
, где i,j ≥ 0
. Таким образом, u ∈ L<sub>3</sub>
. - Если
u ∈ L<sub>3</sub>
, то u = a<sup>i</sup>b<sup>j</sup>
, где i,j ≥ 0
. По трихотомии либо i ≥ j
, либо i < j
. Если первое, то u ∈ L<sub>1</sub>
. Если последнее, то u ∈ L<sub>2</sub>
. Таким образом, u ∈ L<sub>1</sub> ∪ L<sub>2</sub>
.
Вопрос 3: Объединение L<sub>1</sub> = {a<sup>i</sup>b<sup>j</sup> : i > j}
и L<sub>2</sub> = {a<sup>i</sup>b<sup>j</sup> : i < j}
Объединение L<sub>1</sub>
и L<sub>2</sub>
это набор строк a<sup>i</sup>b<sup>j</sup>
, где i < j
или i > j
. Это эквивалентно тому, что i ≠ j
по трихотомии. Следовательно, L<sub>1</sub> ∪ L<sub>2</sub> = {a<sup>i</sup>b<sup>j</sup> : i ≠ j}
.