Регулярные языки и лемма о накачке

Я пытаюсь решить следующие проблемы. Я должен использовать лемму о перекачке или замыкания на обычном языке, но я просто не могу найти решения для этих двух проблем. Любое понимание было бы очень признательно. Спасибо.

Для каждого из перечисленных ниже языков докажите, что он регулярный, или докажите, что он нерегулярен:

1) {a^m b^n c^k: m>n>k}

2) {u that belong to {0,1}^* : u begins with 1001 and does not end with 0010}

Когда дело доходит до пункта 1, моя гипотеза состоит в том, что обратная сторона данного языка также должна быть регулярной. Затем я могу использовать лемму о накачке, чтобы доказать, что он не является регулярным, и, следовательно, исходный язык не является регулярным. Будет ли это правильный подход?

Честно говоря, я понятия не имею, как приблизиться к числу 2.


person topstarterrhp    schedule 14.07.2017    source источник
comment
Нет, stackoverflow - не самое идеальное место для решения задач теории вычислений.   -  person Ketan Dubey    schedule 14.07.2017


Ответы (1)


На самом деле 2) довольно просто. Регулярное выражение для слов длины 8 и более:

1001 · {0,1}^* · {all words of length 4 except 0010}

Затем вы думаете обо всех более коротких словах, соответствующих определению, и объединяете их.

Для 1) Если вы знаете замыкание при обращении, воспользуйтесь этим и леммой о накачке. Реверс перемещает c ^ k на передний план, и если вы перекачиваете этот блок, вы, очевидно, покидаете язык.

В противном случае возьмем дополнение и пересечем его с помощью b ^ + c ^ +. Ты получаешь

{a^m b^n c^k: m=1 AND (m<n OR n<k)}

который

{a b^n c^k: n<k }.

Теперь вы можете прокачать блок b, чтобы выйти из языка.

person Peter Leupold    schedule 17.07.2017