У меня есть вопрос по этому вопросу:
L= пусто, где алфавит {a,b}
как создать грамматику для этого? как может быть производственное правило? заранее спасибо
У меня есть вопрос по этому вопросу:
L= пусто, где алфавит {a,b}
как создать грамматику для этого? как может быть производственное правило? заранее спасибо
Грамматика G — это упорядоченная четверка {S, N, E, e, P}, где:
Вывод в G — это последовательность элементов из (N U E U e)* такая, что:
Если в G существует порождение, последним элементом которого является строка w[n] над (E U e)*, мы говорим, что G порождает w[n]; то есть w[n] принадлежит L(G).
Теперь мы хотим определить грамматику G, для которой L(G) — пустое множество. Зафиксируем алфавит E = {a, b}. Мы должны еще определить:
С тем же успехом мы могли бы взять S в качестве начального символа. Итак, N содержит по крайней мере S; N является надмножеством {S}. Мы добавим больше нетерминалов только в том случае, если решим, что они нам нужны. Обратим внимание на условие пустоты L(G).
Если L(G) пусто, это означает, что в G нет вывода, который приводит к строке только терминальных символов. Мы можем легко добиться этого, обеспечив, чтобы все наши производства производили по крайней мере один нетерминал с любым терминалом. Или вообще не производить терминалы. Таким образом, все следующие грамматики будут работать:
S := S
or
S := aSb
or
S := aXb | XXSSX
X := aabbXbbaaS
и т. д. Все эти грамматики имеют пустую L(G), поскольку ни одна из них не может вывести строку нетерминалов.