линейная грамматика с неравным количеством нулей и единиц

Можно ли придумать линейную грамматику с неравным количеством нулей и единиц?

Например, 0100, 01100, 111,1,0, 100101001...

Я знаю, что для этого существует контекстно-свободная грамматика, но существует ли линейная грамматика?

Спасибо.


person Matt    schedule 10.10.2011    source источник


Ответы (1)


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

изменить1:

Обратите внимание, что не существует обычной грамматики, порождающей указанный язык LUNEQ. Чтобы убедиться в этом, рассмотрим тот факт, что LEQ = { w : na(w< /em>) = nb(w)} является дополнением к LUNEQ. Поскольку обычные языки закрыты при дополнении, а LEQ не является обычным языком, LUNEQ не является обычным языком.

изменить2:

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

Предположим, что LUNEQ является линейным. По лемме о накачке для линейных языков существует n > 0, зависящее от LUNEQ, такое, что для всех zLUNEQ, z можно записать как uvwxy, где:

  • |vx| > 0,
  • |uvxy| ≤ n и
  • uviwxiyL< sub>UNEQ для всех i ≥ 0.

Пусть n — константа, гарантированная леммой о накачке. Рассмотрим строку

  • z = anb(n! + 2n)a н

Поскольку zLUNEQ, его можно разложить на подстроки uvwxy, удовлетворяющие ограничениям леммы о накачке, таким образом, что , для всех i ≥ 0 строка

  • uviwxiy = a< sup>|u|ai|v|a(n - |u| - |v|) b(n! + 2n)a(n - |x| - |y|)аi|x|а|y|

является членом LUNEQ. Поскольку 1 ≤ |vx| ≤ n, |vx| делит n!. Следовательно, (n!|vx|-1 + 1) — натуральное число. Установка для i значения (n!|vx|-1 + 1) дает строку

  • z' = uv(n!|vx|-1 + 1)wx(n!|vx|-1 + 1) y = a|u|a(n!|vx|-1 + 1)|v|a(n - |u| - | v|)b(n! + 2n)a(n - |x| - |y|) a(n!|vx|-1 + 1)|x| а|г|

Упрощение перекачанной строки дает нам равное количество a и b:

  • na(z') = 2n - |vx| + (n!|vx|-1 + 1)|vx| = 2n + n!

Поскольку (2n + n!) эквивалентно количеству b в перекачиваемой строке, z' ∉ L< /em>UNEQ. Но это противоречит предположению, что LUNEQ — линейный язык. Следовательно, LUNEQ не является линейным языком.

person danportin    schedule 10.10.2011
comment
да, извините, я обновил свой вопрос. Я имел в виду, что знаю, что для этого есть CFG, но я не могу понять, есть ли что-то линейное для решения этой проблемы. - person Matt; 10.10.2011
comment
Я обновил сообщение с мнимым доказательством того, что язык, содержащий неравное количество a и b, не является линейным. Если вы видите какие-либо проблемы, пожалуйста, дайте мне знать. - person danportin; 10.10.2011
comment
Редактировать, опять же. Можно узнать, какой учебник вы используете? Я только что просмотрел несколько книг по формальным языкам, которые лежали у меня под рукой, чтобы понять, ожидает ли автор, что читатель найдет грамматику, или определит, существует ли она. - person danportin; 11.10.2011
comment
sipser в основном, просто читаю другие онлайн-лекции. Я еще не добрался до доказательств, но я просто не смог найти линейную грамматику, которая существовала бы для этой ситуации. Хороший ответ, хотя. Спасибо. - person Matt; 11.10.2011
comment
Спасибо. Я никогда не читал книгу Сипсера. Мне придется найти его, потому что в большинстве книг по вводу в формальные языки не представлена ​​лемма о накачке для линейных языков. Звучит неплохо. - person danportin; 11.10.2011