Изменения
Нет описания правки
}}
[[Алгоритм_Кока-Янгера-Касами_разбора_грамматики_в_НФХ|Базовая версия]] данного алгоритма работает только для грамматик в [[нормальная форма Хомского|нормальной форме Хомского]]. Модифицируем алгоритм для работы на произвольных контекстно-свободных грамматиках. Модификация алгоритма сильно проще в написании, чем приведение к [[нормальная форма Хомского|нормальной форме Хомского]], поэтому часто используют её, не смотря на то, что время работы у нее больше.
== Алгоритм для произвольной грамматики ==
Обозначим <tex>M = \max\limits_{A \rightarrow \alpha}\left|\alpha\right|</tex> — максимальную длину правой части правила.
Обработки правил вида <tex>A \rightarrow w[i]</tex>, <tex>A \rightarrow \varepsilon</tex> и нахождение <tex>h\left[A \rightarrow \varepsilonalpha, i, i, 0\right]</tex> выполняются за <tex>O(n \cdot |\Gamma|)</tex>.
Время одного перехода вспомогательной динамики <tex>h\left[A \rightarrow \alpha, i, i, 0\right]O(n)</tex> за , суммарное количество состояний <tex>O(n ^2 \cdot |\Gamma|\cdot M)</tex>. Проход по всем подстрокам выполняется за <tex>O(n^2)</tex>. Расчёт Отсюда расчёт вспомогательной динамики занимает <tex>O \left( n^3 \cdot |\Gamma| \cdot M \right)</tex> времени, основной динамики — базовая динамика находится, как <tex>O \left( n^2 \cdot |\Gamma| \right)</tex>. Итоговая временная сложность алгоритма равна <tex>O \left( n^3 \cdot |\Gamma| \cdot M \right)</tex>. Алгоритму требуется <tex>O(n^2 \cdot |\Gamma| \cdot M)</tex> памяти.
== См. также ==