Алгоритм Кока-Янгера-Касами разбора грамматики в НФХ — различия между версиями
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
Пусть дана контекстно-свободная грамматика грамматика и слово . Требуется выяснить, выводится ли это слово в данной грамматике.
Алгоритм для НФХ-грамматики
Пусть приведена к нормальной форме Хомского.
Пусть , если из нетерминала можно вывести подстроку . Иначе :
.
Будем динамически заполнять матрицу следующим алгоритмом (индукция по ):
- База. . Ячейки заполняются значением , если правило принадлежит множеству правил грамматики : .
- Переход. Рассмотрим все пары . Значения для всех нетерминалов и пар уже вычислены, так что: .
- Завершение. После окончания работы ответ содержится в ячейке , где .
Сложность алгоритма
Необходимо вычислить булевых величин. На каждую требуется затратить операций, где – количество правил. Суммируя по всем правилам получаем конечную сложность .
Алгоритму требуется памяти, где — количество нетерминалов грамматики.
Недостаток алгоритма заключается в том, что изначально грамматику необходимо привести к НФХ.
