Индукционная гипотеза. Предположим, что аналогичное утверждение выполняется для всех l n (n 1).
Индукционный переход. Докажем, что тогда аналогичное утверждение верно для l = n + 1.
Пусть L ’(A, B) благодаря тому, что (см. определение ’(A, B)):
X1X2 … Xp – 1Xp w1w2…wp – 1 Xp
w1w2…wp – 1wp
|
|
Xp + 1 |
* |
… Xm |
|
lm |
|
* |
Xp + 1… Xm |
|
lm |
B Xp + 1… Xm = wB
— вывод длинны n + 1, где w = w1w2…wp,
lp
Xp lm wpB P, = Xp + 1… Xm, и
FIRSTG ( ) FIRSTG ( X |
p |
1 |
... X ) |
|
k |
k |
k |
m |
G |
( Xp 1 ... Xm) , |
|
|
L |
FIRSTk |
|
|
L FIRSTkG ( ).
Одновременно согласно шагу 2 алгоритма 2.6 из существования вывода
wpB , lp n, следует по определению
|
G |
|
|
, B), |
L |
FIRST |
( ) σ (X |
p |
|
k |
|
|
а по индукционному предположению, что
|
|
, B) |
|
( X |
, B) |
σ ( X |
σ |
|
p |
|
|
|
j |
p |
|
L σ |
( X |
p |
, B). |
|
|
|
|
j |
|
|
|
|
Кроме того, имеется правило
A X1X2 … Xp Xp + 1 … Xm P.
Согласно шагу 2 алгоритма 2.6
|
|
G |
(X |
X |
... X ), |
L L |
FIRST |
|
k |
k |
p 1 |
p 2 |
m |
L σ |
( X |
p |
, |
|
j |
|
|
σ |
( A, |
B) |
j 1 |
|
|
|
|
B), |
есть элемент |
j 1 |
|
|
|
|
|
σ |
( A, B). |
σ ( A, B). |
|
|
|
( A, B). |
Итак, L σj |
j |
|
|
|
|
|
Из рассуждений I и II следует равенство
§ 2.9. Алгоритм вычисления
Сопоставляя определения функций
σ( A) {L V |
|
S wA w V |
, |
|
|
|
k* |
* |
|
|
|
* |
|
|
|
T |
lm |
|
|
|
T |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
L FIRST |
G |
( )} |
|
|
|
|
|
|
|
FOLLOW |
|
( A) {w V |
|
k |
|
|
G |
*k |
S A |
|
|
|
|
|
|
* |
|
k |
|
|
T |
|
|
G |
|
|
|
|
|
|
|
|
|
|
|
|
w FIRST |
G |
( )}, |
|
|
|
|
k |
|
где A VN, нетрудно сообразить, что |
|
|
FOLLOW |
G |
( A) |
L. |
|
|
|
|
|
k |
|
|
|
|
|
|
L σ( A) |
|
|
|
Алгоритм вычисления функции
Это равенство — ключ к модификации алгоритма вычисления (A), дающей прямой
Алгоритм вычисления функции
P, S) — cfg.
( A) для всех
Определим |
вспомогательную функ- |
A, B) {w V |
|
A B , |
|
|
*k |
* |
|
|
T |
G |
|
|
|
|
|
|
|
|
w FIRST |
G |
( )}, |
|
|
|
|
|
k |
|
где A, B VN. Очевидно, что
FOLLOWkG ( A) (S, A).
Ret 232 Ret 235 Ret 259
Алгоритм вычисления функции
Остается определить алгоритм для
вычисления функции |
(A, B). |
|
Вычисление значения ( A, B) производится методом последовательных приближений по шагам 1-3:
|
|
( A, B) {w V |
*k |
A B P; , V ; |
1. |
|
|
|
|
|
* |
0 |
|
T |
w FIRST |
|
( )}. |
|
|
|
|
|
G |
|
|
|
|
|
|
|
|
|
|
|
k |
|
|
Ret 237 |
Ret 242 |
|
|
|
|
Алгоритм вычисления функции
3. Шаг 2 повторяется до тех пор, пока при некотором i = j не окажется
j+ 1(A, B) = j (A, B)
для всех (A, B) VN VN. Такое j существует, ибо
0(A, B) 1(A, B) … VT*k ,
имножество VT*k конечное.
Итогда (A, B) = j (A, B).