Алгоритм Эрли, доказательство оценки O(n^2) для однозначной грамматики
Версия от 03:21, 18 января 2012; AndrewD (обсуждение | вклад)
Алгоритм
Приведем Алгоритм Эрли.
На вход подается КС-грамматика и строка из . Результатом работы алгоритма является список разбора для строки .
Построение
:Шаг 1. Для каждого правила
из , включить в .Выполнять шаги
и до тех пор, пока в можно включать новые ситуации.Шаг 2. Если
, то для всех включить в ситуацию .Шаг 3. Если
, то для всех правил из вида включить в ситуацию .После того, как построены
, строится :Шаг 4. Для каждой ситуации
включить в ситуацию .Выполнять шаги
и до тех пор, пока в можно включать новые ситуации.Шаг 5. Если
, то для всех ситуаций включить в .Шаг 6. Если
, то для всех правил из включить в .Время работы для однозначной грамматики
Лемма (1): |
в списке находится ситуаций. |
Доказательство: |
Так как грамматика фиксирована, то | количество ситуаций вида не больше константного. Таким образом, так как в находятся ситуации, у которых , то всего в будет ситуаций.
Лемма (2): |
Пусть — однозначная КС-грамматика и — цепочка из . Тогда алгоритм Эрли пытается включить в не более одного раза, если . |
Доказательство: |
Ситуацию можно включить в только на шагах , , или . Если она включается на шаге , то последний символ цепочки — терминал, а если на шагах или , то — нетерминал. В первом случае результат очевиден. Во втором случае допустим, что включается в , когда рассматриваются две различные ситуации и . Тогда ситуация должна оказаться одновременно в и в .
|
Теорема: |
Если входная грамматика однозначна, то время выполнения алгоритма Эрли для слова длины составляет . |
Доказательство: |
Орагнизуем каждый список разбора таким образом, чтобы по любому символу , можно было за получить список тех и только тех ситуаций, содержащихся в , которые имеют вид .Покажем, что на каждую ситуацию алгоритм расходует фиксированное количество времени. Список можно построить за фиксированное время.Рассмотрим . Рассмотрим шаги , и .
|
Литература
- А. Ахо, Дж. Ульман. Теория синтакcического анализа, перевода и компиляции. Том 1. Синтакcический анализ.