Здавалка
Главная | Обратная связь

Исключение бесполезных символов



Исключение бесполезных символов

Алгоритм 3.7.1.1. Определение множества производящих нетерминальных символов КС-грамматики.

Вход.КС-грамматика G = (N, S, P, S).

Выход.Множество производящих нетерминальных символов Np = {A | A Þ+ x, A Î N, x Î S+}.

Описание алгоритма.

Построить рекурсивно множества производящих нетерминалов N0p, N1p, … , Nip, … следующим образом:

1. Положить N0p = Æ, i = 1.

2. Положить Nip = Ni-1p È {A | A à a Î P, a Î (Ni-1p È S)+}

3. Если Nip ¹ Ni-1p, положить i = i + 1 и перейти к шагу 2.

4. Положить Np = Nip.

Конец алгоритма

Алгоритм3.7.1.2. Определение множества достижимых символов КС-грамматики.

Вход.КС-грамматика G = (N, S, P, S).

Выход.Множество достижимых символов Nr = {X | S Þ* aXb, X Î (S È N), a, b Î (S È N)*}.

Описание алгоритма.

Построить рекурсивно множества достижимых символов N0r, N1r, … , Nir, … , следующим образом:

1. Положить N0r = {S}, i = 1.

2. Положить Nir = Ni-1r È {X | A à aXb Î R и A Î Ni-1r }.

3. Если Nir ¹ Ni-1r, положить i = i + 1 и перейти к шагу 2.

4. Положить Nr = Nir.

Конец алгоритма

Алгоритм 3.7.1.3. Устранение бесполезных символов.

Вход.КС-грамматика G = (N, S, P, S), для которой L(G) ¹ Æ.

Выход.КС-грамматика G = (N¢, S¢, P¢, S), у которой L(G) ¹ Æ и в S¢ È N¢ нет бесполезных символов.

Описание алгоритма.

1. Построить множество Np производящих нетерминалов грамматики G.

2. Положить G1 = (Np, S, P1, S,), где P1 состоит из правил множества P, содержащих только символы из S È Np.

3. Построить множество Nr достижимых символов грамматики G1.

4. Положить G¢= (N¢, S¢, P¢, S,) , где S¢ = S Ç Nr, N¢ = Nr Ç N, а P¢ состоит из правил множества P1 , содержащих только символы из множества Nr.

Конец алгоритма

Пример 3.7

Исключить из грамматики G = (N, S, P, S), где N = {А, В. С. S}, S = {a, b, c}, P = {S à аС, S à А, А à сАВ, В à b, С à а}, бесполезные символы.

После выполнения шага 1 алгоритма 3.7.1.3 множество Np = {В, С, S}.

После исключения непроизводящих нетерминалов получим новую грамматику G1 = ({В, С, S}, {a, b, с}, P, S), где P = { S à аС, В à b, С à а}.

Множество достижимых символов грамматики G1 Nr = {a, C, S}.

После исключения множества недостижимых символов из грамматики G1 получим грамматику G¢ = ({С, S}, {a}, {S à аС, С à а}, S), L(G¢) = {aa}.

Если применить к исходной грамматике сначала алгоритм 3.7.1.2, то получим, что все символы достижимы. Множество производящих символов грамматики G1 = {В, С, S }. После исключения непроизводящих символов из грамматики G1 имеем G¢ = ({В, С, S}, {a, b, с}, P¢, S ), где P¢ = {S à аС, В à b, С à а}, L(G¢) = L(G) = {aa}, но грамматика G¢ содержит бесполезные символы B и b.

Исключение бесполезных символов

Задание.

2.2.1.3. T = { a, b, c, d, e, f }, N = { A, B, C, S }, R = { S ® b, S ® C, S ®cCB, A ® e, A ®Ab, B ® Bb, B ®cB, C ®Ca, C ® Bf, C ® d };

Решение:

1. Построим множество NPпроизводящих нетерминалов грамматики G.

2. Определим множество достижимых символов.

Новая грамматика, эквивалентная исходной имеет следующий вид:

G’ = <T’, N’, S, R’>

T’= { a, b, c, d, f}; N’ = { S, B, C}; R’= {S ® b, S ® C, S ®cCB, B ® Bb, B ®cB, C ®Ca, C ® Bf, C ® d }

 


 

Исключение бесполезных символов

 

Преобразовать КС-грамматику G = < T, N, S, R > в эквивалентную грамматику, не содержащую бесполезных символов:

2.2.1.3. T = { a, b, c, d, e, f }, N = { A, B, C, S }, R = { S ® b, S ® C, S ® cCB, A ® e, A ® Ab, B ® Bb, B ® cB, C ® Ca, C ® Bf, C ® d };

 

1. множество производящих нетерминалов Np={C,A,S}

- N0 = 0

- A ® e, C ® d , S ® b -> значит N1={S,A,C}

- N2 = {S,A,C}, т.к. больше нет правил вывода X®a,aÎ{ a, b, c, d, e, f ,S,A,C}

- Np={C,A,S}

2. Искючим из грамматики правила, содержащие непроизводящие нетерминалы

R’={ S ® b, S ® C, A ® e, A ® Ab, C ® Ca, C ® d }

G1=( T, Np, S, R’)

3. Множество достижимых символов Nr = {d,a,b,S,C}

- N0={S}

- N1={S,b,C}, из правил S ® b, S ® C

- N2={S,b,C,a,d} из правил C ® Ca, C ® d

- N3={S,C,b,a,d}.

- Nr = {d,a,b,S,C}

4. Исходная грамматика без бесполезных символов будет выглядеть следующим образом.

N’={S,C}, T’={a, b, d}, R’’={ S ® b, S ® C, C ® Ca, C ® d }

G = < T’, N’, S, R’’ >


 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.