Алгоритм Кока-Янгера-Касами разбора грамматики в НФХ — различия между версиями
Kirelagin (обсуждение | вклад) |
|||
Строка 21: | Строка 21: | ||
[[Файл:CYK_rule_2.jpg]] | [[Файл:CYK_rule_2.jpg]] | ||
+ | [[Категория: Теория формальных языков]] | ||
+ | [[Категория: Контекстно-свободные грамматики]] | ||
*'''Завершение'''. После окончания работы ответ содержится в ячейке <tex>a_{S, 1, n}</tex>, где <tex>n = |w|</tex>. | *'''Завершение'''. После окончания работы ответ содержится в ячейке <tex>a_{S, 1, n}</tex>, где <tex>n = |w|</tex>. | ||
Версия 12:48, 2 марта 2012
Пусть дана контекстно-свободная грамматика грамматика и слово . Требуется выяснить, выводится ли это слово в данной грамматике.
Алгоритм для НФХ-грамматики
Пусть нормальной форме Хомского.
приведена кПусть
, если из нетерминала можно вывести подстроку . Иначе :.
Будем динамически заполнять матрицу
следующим алгоритмом (индукция по ):- База. . Ячейки заполняются значением , если правило принадлежит множеству правил грамматики : .
- Переход. Рассмотрим все пары . Значения для всех нетерминалов и пар уже вычислены, так что: .
- Завершение. После окончания работы ответ содержится в ячейке , где .
Сложность алгоритма
Необходимо вычислить
булевых величин. На каждую требуется затратить операций, где – количество правил. Суммируя по всем правилам получаем конечную сложность .Алгоритму требуется
памяти, где — количество нетерминалов грамматики.Недостаток алгоритма заключается в том, что изначально грамматику необходимо привести к НФХ.