Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
58
Добавлен:
16.04.2015
Размер:
1.47 Mб
Скачать

 

 

( A, B)

( A, B)

j

 

 

 

 

 

Индукционная гипотеза. Предположим, что аналогичное утверждение выполняется для всех l n (n 1).

Индукционный переход. Докажем, что тогда аналогичное утверждение верно для l = n + 1.

221

 

 

( A, B)

( A, B)

j

 

 

 

 

 

Пусть L (A, B) благодаря тому, что (см. определение (A, B)):

A

 

lm

 

 

 

 

*

 

lm

 

 

 

*

 

lm

X1X2 Xp – 1Xp w1w2wp – 1 Xp

w1w2wp – 1wp

 

 

Xp + 1

*

Xm

 

lm

 

*

Xp + 1Xm

 

lm

B Xp + 1Xm = wB

— вывод длинны n + 1, где w = w1w2wp,

lp

Xp lm wpB P, = Xp + 1Xm, и

где

FIRSTG ( ) FIRSTG ( X

p

1

... X )

 

k

k

k

m

G

( Xp 1 ... Xm) ,

 

 

L

FIRSTk

 

 

L FIRSTkG ( ).

222

 

 

( A, B)

( A, B)

j

 

 

 

 

 

Одновременно согласно шагу 2 алгоритма 2.6 из существования вывода

Xp

lp lm

wpB , lp n, следует по определению

функции

σ

, что

 

G

 

 

, B),

L

FIRST

( ) σ (X

p

 

k

 

 

а по индукционному предположению, что

 

 

, B)

 

( X

, B)

σ ( X

σ

 

p

 

 

 

j

p

 

L σ

( X

p

, B).

 

 

 

 

j

 

 

 

 

и, следовательно,

223

 

 

( A, B)

( A, 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 следует равенство

σj ( A, B) σ ( A, B)

и утверждение теоремы.

224

§ 2.9. Алгоритм вычисления

функции

 

G

( A)

k

 

FOLLOW

 

Сопоставляя определения функций

и

σ( 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)

 

 

 

225

Алгоритм вычисления функции

FOLLOWG k

( A)

Это равенство — ключ к модификации алгоритма вычисления (A), дающей прямой

алгоритм вычисления

FOLLOW

G

( A).

 

k

 

226

Алгоритм вычисления функции

FOLLOWG k

( A)

Алгоритм 2.7: вычисление

FOLLOW

G

( A).

 

k

 

Вход: G Выход: Метод.

цию

(

 

= (VN, VT,

FOLLOW

G

 

k

P, S) — cfg.

( A) для всех

A VN.

Определим

вспомогательную функ-

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

227

Алгоритм вычисления функции

FOLLOWG k

( A)

Остается определить алгоритм для

вычисления функции

(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

 

 

 

 

228

Алгоритм вычисления функции

FOLLOWG k

( A)

2. Пусть значения

 

 

( A, B), ( A,

B),..., ( A,

B)

 

 

 

 

0

 

1

 

 

 

 

i

 

 

 

 

 

уже построены для всех (A, B) VN VN.

 

Тогда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( A,

B) = ( A,

B)

 

 

 

 

 

 

 

 

 

i 1

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

{w V

*k

A X

 

X

 

... X X

 

1

... X P,

 

 

1

2

 

 

 

T

 

 

 

 

p p

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X V ,

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w (X ,

B)

 

FIRST

G

(X

... X )}.

 

 

 

 

 

 

 

 

 

 

i

p

 

 

 

k

k

 

 

p 1

m

 

 

 

 

 

 

 

 

 

 

 

 

Ret 239 Ret 244

Ret 246

 

 

 

 

 

 

 

 

 

 

229

Алгоритм вычисления функции

FOLLOWG k

( A)

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).

230

Соседние файлы в папке lectures