Прежде всего, обратите внимание, что если предложение содержит в 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
).