Прежде всего, обратите внимание, что если предложение имеет в 5 раз больше символов, чем другое, оно всегда будет выглядеть примерно как aaabaabaaaaa
. Таким образом, одно предложение может быть aaaaab
или aaabaa
. Другое замечание состоит в том, что всякий раз, когда мы добавляем b
, мы должны добавить пять символов a
.
Следующая грамматика действительно имеет в пять раз больше a
символов как b
символов:
S = AS | λ
A = Baaaaa | aBaaaa | aaBaaa | aaaBaa | aaaaBa | aaaaaB
B = bS | Sb
Мы начинаем с S
, который может либо пустым (что удовлетворяет требованию) или A
.
Правило для A
составляет не менее 5 a
символов и B
. Теперь для B
мы можем либо разместить b
и остановиться там (выбирая пустую строку для S
), либо путем повторного запуска (выбрав A
для S
). Это гарантирует, что мы всегда помещаем в 5 раз больше a
символов в виде b
символов.
Наконец, эта грамматика может быть легко обобщена на грамматику, чем должно содержать n
раз больше символов одного, чем другого (путем простого расширения правила A
).
У вас есть доказательства того, что можно выразить грамматику несколькими правилами? –