Московский государственный университет имени М.В.Ломоносова
Опубликован: 09.07.2007 | Доступ: свободный | Студентов: 2483 / 1007 | Оценка: 4.56 / 4.26 | Длительность: 20:40:00
ISBN: 978-5-9556-0062-8
Специальности: Математик
Лекция 9:

Нормальные формы контекстно-свободных грамматик

< Лекция 8 || Лекция 9: 123 || Лекция 10 >

8.4*. Нормальная форма Грейбах

Определение 8.4.1. Грамматика в нормальной форме Грейбах (grammar in Greibach normal form) - контекстно-свободная грамматика \lalg N , \Sigma , P , S \ralg, в которой каждое правило имеет один из следующих четырех видов: A \tto \varepsilon, A \tto a, A \tto a B, A \tto a B C, где A \in N, B \in N, C \in N, a \in \Sigma.

Пример 8.4.2. Грамматика

\begin{align*}
S \; & {\to} \; aST , \\
S \; & {\to} \; aT , \\
T \; & {\to} \; bS , \\
T \; & {\to} \; b 
\end{align*}
является грамматикой в нормальной форме Грейбах.

Замечание 8.4.3. Некоторые авторы разрешают в грамматиках в нормальной форме Грейбах использовать также правила вида A \tto a \beta, где A \in N, a \in \Sigma, \beta \in N^* (в определении 8.4.1 разрешены, только если | \beta | \leq 2 ).

Теорема 8.4.4. Каждая контекстно-свободная грамматика эквивалентна некоторой грамматике в нормальной форме Грейбах.

Доказательство. Докажем теорему для контекстно-свободных языков, не содержащих пустого слова. Согласно теореме 8.3.5 исходный язык порождается некоторой грамматикой G = \lalg N , \Sigma , P , S \ralg, в которой каждое правило имеет вид A \tto a или A \tto B C, где A \in N, B \in N \sminus \{ S \}, C \in N \sminus \{ S \}, a \in \Sigma.

Введем |N|2 новых вспомогательных символов, соответствующих упорядоченным парам из множества N \times N. Новый символ, соответствующий паре \lp A , B \rp, будем обозначать (A\B). Построим грамматику "почти в нормальной форме Грейбах" \gdd{ G } = \lalg \gdd{ N } , \Sigma , \gdd{ P } , S \ralg, положив \gdd{ N } = N \cup \{ ( A \li B ) \mid A \in N \commaand B \in N \} и

\begin{align*}
\gdd{ P } &= \{ ( A \li A ) \tto \varepsilon \mid A \in N \} \cup {} \\
&\myqquad \cup
\{ ( C \li E ) \squeeze{\tto} A ( A \li D ) ( B \li E ) \squeeze{\mid}
( B \squeeze{\tto} C D ) \squeeze{\in} P ,\ A \squeeze{\in} N
\commaand E \squeeze{\in} N \} \cup {} \\
&\myqquad \cup
\{ A \tto a \mid
( A \tto a ) \in P
\} \cup {} \\
&\myqquad \cup
\{ S \tto a ( A \li S ) \mid
( A \tto a ) \in P \}
.
\end{align*}
Если в этой грамматике заменить
\begin{multiline*}
\{ ( C \li E ) \tto A ( A \li D ) ( B \li E ) \mid
( B \tto C D ) \in P ,\ A \in N \commaand E \in N \} \cup {} \\
\cup
\{ A \tto a \mid
( A \tto a ) \in P \}
\end{multiline*}
на
\{ ( C \li E ) \tto a ( A \li D ) ( B \li E ) \mid
( B \squeeze{\tto} C D ) \in P ,\
 ( A \squeeze{\tto} a ) \in P \commaand
 E \in N \} ,
получим эквивалентную ей грамматику в нормальной форме Грейбах. Осталось лишь доказать, что L ( G ) = L ( \gdd{ G } ).

Сначала проверим индукцией по длине слова \gamma \in N ^*, что если F \overstar{\myunderset{ G }{ \Rightarrow }} C \gamma, то ( C \li E ) \overstar{\myunderset{\gdd{ G }}{ \Rightarrow }}
\gamma ( F \li E ) для любого E \in N. Чтобы провести шаг индукции, допустим, что ( B \tto C D ) \in P и

F \overstar{\myunderset{ G }{ \Rightarrow }} B \beta
 \myunderset{ G }{ \Rightarrow } C D \beta
 \overstar{\myunderset{ G }{ \Rightarrow }} C A \alpha \beta ,
где D \overstar{\myunderset{ G }{ \Rightarrow }} A \alpha и \gamma = A \alpha \beta. По предположению индукции имеем ( B \li E ) \overstar{\myunderset{\gdd{ G }}{ \Rightarrow }}
\beta ( F \li E ) и ( A \li D ) \overstar{\myunderset{\gdd{ G }}{ \Rightarrow }}
\alpha ( D \li D ). Подключая эти выводы к правилу ( C \li E ) \myunderset{\gdd{ G }}{ \Rightarrow }
A ( A \li D ) ( B \li E ) и используя ( D \li D ) \myunderset{\gdd{ G }}{ \Rightarrow } \varepsilon, получаем искомый вывод ( C \li E ) \overstar{\myunderset{\gdd{ G }}{ \Rightarrow }}
A \alpha \beta ( F \li E ).

Докажем теперь, что для любого \gamma \in N ^* равносильны утверждения F \overstar{\myunderset{ G }{ \Rightarrow }} C \gamma и ( C \li F ) \overstar{\myunderset{\gdd{ G }}{ \Rightarrow }}
\gamma. В одну сторону это следует из только что доказанного. Доказательство того, что если ( C \li F ) \overstar{\myunderset{\gdd{ G }}{ \Rightarrow }}
\gamma, то F \overstar{\myunderset{ G }{ \Rightarrow }} C \gamma, проведем индукцией по длине слова \gamma \in N ^*. Чтобы провести шаг индукции, допустим, что ( B \tto C D ) \in P, ( C \li F ) \myunderset{\gdd{ G }}{ \Rightarrow }
A ( A \li D ) ( B \li F ), ( A \li D ) \overstar{\myunderset{\gdd{ G }}{ \Rightarrow }}
\alpha, ( B \li F ) \overstar{\myunderset{\gdd{ G }}{ \Rightarrow }} \beta и \gamma = A \alpha \beta. По предположению индукции D \overstar{\myunderset{ G }{ \Rightarrow }} A \alpha и F \overstar{\myunderset{ G }{ \Rightarrow }} B \beta. Получаем искомый вывод

F \overstar{\myunderset{ G }{ \Rightarrow }} B \beta
 \myunderset{ G }{ \Rightarrow } C D \beta
 \overstar{\myunderset{ G }{ \Rightarrow }} C A \alpha \beta .

Теперь убедимся, что L ( G ) = L ( \gdd{ G } ). Рассмотрим произвольное слово a_0 a_1 \ldots a_m, где m \geq 0 и a_i \in \Sigma для всех i \leq m. Пусть

S \overstar{\myunderset{ G }{ \Rightarrow }} A_0 A_1 \ldots A_m
 \overstar{\myunderset{ G }{ \Rightarrow }} a_0 a_1 \ldots a_m ,
где A_i \in N для всех i \leq m. Тогда
S \myunderset{\gdd{ G }}{ \Rightarrow } a_0 ( A_0 \li S )
\overstar{\myunderset{\gdd{ G }}{ \Rightarrow }} a_0 A_1 \ldots A_m
\overstar{\myunderset{\gdd{ G }}{ \Rightarrow }} a_0 a_1 \ldots a_m .
Обратно, пусть
S \myunderset{\gdd{ G }}{ \Rightarrow } a_0 ( A_0 \li S )
\overstar{\myunderset{\gdd{ G }}{ \Rightarrow }} a_0 A_1 \ldots A_m
\overstar{\myunderset{\gdd{ G }}{ \Rightarrow }} a_0 a_1 \ldots a_m ,
где A_i \in N для всех i \leq m. Тогда
S \overstar{\myunderset{ G }{ \Rightarrow }} A_0 A_1 \ldots A_m
\overstar{\myunderset{ G }{ \Rightarrow }} a_0 a_1 \ldots a_m .

Пример 8.4.5. Грамматика

\begin{align*}
S \; & {\to} \; RT , & U \; & {\to} \; VT , \\
T \; & {\to} \; b , & V \; & {\to} \; RT , \\
T \; & {\to} \; UR , & R \; & {\to} \; a 
\end{align*}
эквивалентна следующей грамматике в нормальной форме Грейбах:
\begin{align*}
S \; & {\to} \; aC , & E \; & {\to} \; aDF , \\
C \; & {\to} \; aD , & E \; & {\to} \; bF , \\
C \; & {\to} \; b , & F \; & {\to} \; a . \\
D \; & {\to} \; aDE , \\
D \; & {\to} \; bE ,
\end{align*}
Здесь C, D, E и F соответствуют символам (A\S), (A\T), (V\T) и (U\T) из доказательства теоремы 8.4.4 (удален 21 бесполезный символ).

Теорема 8.4.6. Пусть язык L контекстно-свободный. Тогда язык L \sminus \{ \varepsilon \} порождается некоторой грамматикой в нормальной форме Грейбах без \varepsilon - правил.

Пример 8.4.7. Грамматика

\begin{align*}
S \; & {\to} \; aR , \\
R \; & {\to} \; bRT , \\
R \; & {\to} \; \varepsilon , \\
T \; & {\to} \; cSR , \\
T \; & {\to} \; \varepsilon 
\end{align*}
эквивалентна следующей грамматике в нормальной форме Грейбах без \varepsilon -правил:
\begin{align*}
S \; & {\to} \; aR , & R \; & {\to} \; bRT , & T \; & {\to} \; cSR , \\
S \; & {\to} \; a , & R \; & {\to} \; bT , & T \; & {\to} \; cS . \\
& & R \; & {\to} \; bR , \\
& & R \; & {\to} \; b ,
\end{align*}

Упражнение 8.4.8. Найти контекстно-свободную грамматику в нормальной форме Грейбах, эквивалентную грамматике

\begin{align*}
F \; & {\to} \; ab , \\
F \; & {\to} \; a F b , \\
F \; & {\to} \; F F .
\end{align*}

Упражнение 8.4.9. Найти контекстно-свободную грамматику в нормальной форме Грейбах, эквивалентную грамматике

\begin{align*}
S \; & {\to} \; AB , \\
B \; & {\to} \; AB , \\
A \; & {\to} \; BB , \\
A \; & {\to} \; a , \\
B \; & {\to} \; b .
\end{align*}

Упражнение 8.4.10. Найти контекстно-свободную грамматику в нормальной форме Грейбах, эквивалентную грамматике

\begin{align*}
K \; & {\to} \; Fb , \\
F \; & {\to} \; \varepsilon , \\
F \; & {\to} \; aFbF .
\end{align*}

Упражнение 8.4.11. Найти контекстно-свободную грамматику в нормальной форме Грейбах, эквивалентную грамматике

\begin{align*}
S \; & {\to} \; aT , \\
T \; & {\to} \; aTTa , \\
T \; & {\to} \; b .
\end{align*}

< Лекция 8 || Лекция 9: 123 || Лекция 10 >
Юлия Маковецкая
Юлия Маковецкая

Упражнение 2.1.25

Евгения Гунченко
Евгения Гунченко

Сдавала тест экстерном, результат получен 74 после принятия данного результата и соответственно оплаты курса, будет ли выдано удостоверение о повышении квалификации?