Каково соотношение неоднозначных CFG к всем CFG ?
Поскольку оба множества счетно бесконечны, соотношение не является четко определенным. Но как насчет асимптотической плотности :
где терминальные и нетерминальные символы происходят из фиксированного счетного набора.
Размер грамматики - это любое разумное понятие размера для грамматики, например
- общее количество вхождений переменных и терминалов в правилах производства или
- общее количество вхождений переменной, или
- общее количество правил производства, или
- количество различных переменных.
(Я предполагаю, что определение размера не повлияет на ответ.)
fl.formal-languages
grammars
context-free
user18064
источник
источник
Ответы:
Вопрос зависит от точной кодировки. Тем не менее, кажется, что во многих разумных кодировках, поскольку длина стремится к бесконечности, число правил производства (для соответствующей интерпретации начального символа и терминала ) будет больше одного с высокой вероятностью; здесь я буквально имею в виду тот же терминал . Если мы рассмотрим это как двусмысленность, то я ожидаю, что «большинство» грамматик будет двусмысленным. Мы также можем придумать подобные ситуации, такие как правила и каждого, появляющиеся хотя бы один раз.S→a S a a S→S S→a
Предполагая эту общую гипотезу, что каждое (фиксированное) мыслимое правило должно появляться с высокой вероятностью, когда длина стремится к бесконечности, мы находим, что «большинство» грамматик генерирует неоднозначным образом.Σ∗
В качестве примера рассмотрим следующую кодировку для грамматик над . Грамматический алфавит состоит из символов . Нетерминалы индексируются двоичными строками длиной не менее 2. Правила разделяются точками. Каждое правило представляет собой последовательность двоичных строк, разделенных точкой с запятой. Первая двоичная строка является нетерминальной с левой стороны, а остальные (если таковые имеются) составляют правую часть; если первая двоичная строка не является нетерминальной (т. е. это , 0,1), то подразумевается начальная нетерминальная. Стартовый нетерминал всегда 00.Σ={0,1} {0,1,;,.} ϵ
В этой кодировке каждая строка в Описывает некоторую грамматику. Случайная грамматика с большой вероятностью будет содержать много копий{0,1,;,.}∗ .00;00. а также.00;0. и в частности будет неоднозначным.
источник