Можно ли придумать линейную грамматику с неравным количеством нулей и единиц?
Например, 0100, 01100, 111,1,0, 100101001...
Я знаю, что для этого существует контекстно-свободная грамматика, но существует ли линейная грамматика?
Спасибо.
Можно ли придумать линейную грамматику с неравным количеством нулей и единиц?
Например, 0100, 01100, 111,1,0, 100101001...
Я знаю, что для этого существует контекстно-свободная грамматика, но существует ли линейная грамматика?
Спасибо.
Грамматика регулярна тогда и только тогда, когда она регулярна либо слева, либо справа. Левые регулярные грамматики эквивалентны левым линейным грамматикам. Правильные регулярные грамматики эквивалентны правым линейным грамматикам. Следовательно, если существует регулярная грамматика, порождающая указанный язык, то она регулярна либо справа, либо слева и, следовательно, эквивалентна либо левой, либо правой линейной грамматике.
изменить1:
Обратите внимание, что не существует обычной грамматики, порождающей указанный язык LUNEQ. Чтобы убедиться в этом, рассмотрим тот факт, что LEQ = { w : na(w< /em>) = nb(w)} является дополнением к LUNEQ суб>. Поскольку обычные языки закрыты при дополнении, а LEQ не является обычным языком, LUNEQ не является обычным языком.
изменить2:
Я считаю, что лемму о накачке для линейных языков можно использовать, чтобы показать, что указанный язык LUNEQ не является линейным. Вот что я придумал. Я достаточно уверен, что это правильно. Меня в первую очередь беспокоит то, что вас спросили - предположительно - о линейном языке, генерирующем указанный язык; однако я пришел к выводу, что такой грамматики не существует.
Предположим, что LUNEQ является линейным. По лемме о накачке для линейных языков существует n > 0, зависящее от LUNEQ, такое, что для всех z ∈ LUNEQ, z можно записать как uvwxy, где:
Пусть n — константа, гарантированная леммой о накачке. Рассмотрим строку
Поскольку z ∈ LUNEQ, его можно разложить на подстроки uvwxy, удовлетворяющие ограничениям леммы о накачке, таким образом, что , для всех i ≥ 0 строка
является членом LUNEQ. Поскольку 1 ≤ |vx| ≤ n, |vx| делит n!. Следовательно, (n!|vx|-1 + 1) — натуральное число. Установка для i значения (n!|vx|-1 + 1) дает строку
Упрощение перекачанной строки дает нам равное количество a и b:
Поскольку (2n + n!) эквивалентно количеству b в перекачиваемой строке, z' ∉ L< /em>UNEQ. Но это противоречит предположению, что LUNEQ — линейный язык. Следовательно, LUNEQ не является линейным языком.