Упражнение 2.1.25 |
Нормальные формы контекстно-свободных грамматик
8.4*. Нормальная форма Грейбах
Определение 8.4.1. Грамматика в нормальной форме Грейбах
(grammar in Greibach normal form) -
контекстно-свободная грамматика ,
в которой каждое правило имеет один из следующих четырех видов:
,
,
,
,
где
,
,
,
.
Пример 8.4.2. Грамматика
![\begin{align*}
S \; & {\to} \; aST , \\
S \; & {\to} \; aT , \\
T \; & {\to} \; bS , \\
T \; & {\to} \; b
\end{align*}](/sites/default/files/tex_cache/3820294f2a5b3ecad253329beb4f7eb6.png)
Замечание 8.4.3.
Некоторые авторы разрешают
в грамматиках в нормальной форме Грейбах
использовать также правила вида ,
где
,
,
(в определении 8.4.1
разрешены, только если
).
Теорема 8.4.4. Каждая контекстно-свободная грамматика эквивалентна некоторой грамматике в нормальной форме Грейбах.
Доказательство.
Докажем теорему для контекстно-свободных языков,
не содержащих пустого слова.
Согласно теореме 8.3.5
исходный язык порождается некоторой грамматикой ,
в которой каждое правило имеет вид
или
,
где
,
,
,
.
Введем |N|2
новых вспомогательных символов, соответствующих упорядоченным парам
из множества .
Новый символ, соответствующий паре
,
будем обозначать (A\B).
Построим грамматику "почти в нормальной форме Грейбах"
,
положив
и
![\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*}](/sites/default/files/tex_cache/540ba8ae1ebb35ab81f3e4f900005c81.png)
![\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*}](/sites/default/files/tex_cache/f6310a371a31301c9956ad4f170287ff.png)
![\{ ( 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 \} ,](/sites/default/files/tex_cache/cc2f310a334b0d16785efc0e5d92842d.png)
![L ( G ) = L ( \gdd{ G } )](/sites/default/files/tex_cache/22c67cbd437a356b18ea99c749482882.png)
Сначала проверим индукцией по длине слова ,
что если
,
то
для любого
.
Чтобы провести шаг индукции, допустим, что
и
![F \overstar{\myunderset{ G }{ \Rightarrow }} B \beta
\myunderset{ G }{ \Rightarrow } C D \beta
\overstar{\myunderset{ G }{ \Rightarrow }} C A \alpha \beta ,](/sites/default/files/tex_cache/8a936dcedd89ba7c18b9ae842bda8552.png)
![D \overstar{\myunderset{ G }{ \Rightarrow }} A \alpha](/sites/default/files/tex_cache/58ef4521f73ce7a1ac9cfa575ca5b56e.png)
![\gamma = A \alpha \beta](/sites/default/files/tex_cache/f25bb5fb3122b2081f3c3a5cfb76225a.png)
![( B \li E ) \overstar{\myunderset{\gdd{ G }}{ \Rightarrow }}
\beta ( F \li E )](/sites/default/files/tex_cache/8b59f14002e4a3cb26a9c10d47029e63.png)
![( A \li D ) \overstar{\myunderset{\gdd{ G }}{ \Rightarrow }}
\alpha ( D \li D )](/sites/default/files/tex_cache/6689ce98dd7c766b027f4308fd282eac.png)
![( C \li E ) \myunderset{\gdd{ G }}{ \Rightarrow }
A ( A \li D ) ( B \li E )](/sites/default/files/tex_cache/d16dde0234ed352a104bed64196dbda1.png)
![( D \li D ) \myunderset{\gdd{ G }}{ \Rightarrow } \varepsilon](/sites/default/files/tex_cache/f5780e04c491493dded311a3677768aa.png)
![( C \li E ) \overstar{\myunderset{\gdd{ G }}{ \Rightarrow }}
A \alpha \beta ( F \li E )](/sites/default/files/tex_cache/186370b34ef2ec79677a2a2c11abef25.png)
Докажем теперь, что для любого
равносильны утверждения
и
.
В одну сторону это следует из только что доказанного.
Доказательство того,
что если
,
то
,
проведем
индукцией по длине слова
.
Чтобы провести шаг индукции, допустим, что
,
,
,
и
.
По предположению индукции
и
.
Получаем искомый вывод
![F \overstar{\myunderset{ G }{ \Rightarrow }} B \beta
\myunderset{ G }{ \Rightarrow } C D \beta
\overstar{\myunderset{ G }{ \Rightarrow }} C A \alpha \beta .](/sites/default/files/tex_cache/8baf19f4c0fcf87ff61b3be96f87cf3d.png)
Теперь убедимся, что .
Рассмотрим произвольное слово
,
где
и
для всех
.
Пусть
![S \overstar{\myunderset{ G }{ \Rightarrow }} A_0 A_1 \ldots A_m
\overstar{\myunderset{ G }{ \Rightarrow }} a_0 a_1 \ldots a_m ,](/sites/default/files/tex_cache/e526d8c8886fee77c06df2e908f8bc82.png)
![A_i \in N](/sites/default/files/tex_cache/154d76c244544d1e944cad50ee55e9a6.png)
![i \leq m](/sites/default/files/tex_cache/e69205afc0c6c9115ec0a5f4c7416be3.png)
![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 .](/sites/default/files/tex_cache/107ff8080d10b213ef0302be93747694.png)
![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 ,](/sites/default/files/tex_cache/2ceddf5871433f5844b0f96ea5c4b743.png)
![A_i \in N](/sites/default/files/tex_cache/154d76c244544d1e944cad50ee55e9a6.png)
![i \leq m](/sites/default/files/tex_cache/e69205afc0c6c9115ec0a5f4c7416be3.png)
![S \overstar{\myunderset{ G }{ \Rightarrow }} A_0 A_1 \ldots A_m
\overstar{\myunderset{ G }{ \Rightarrow }} a_0 a_1 \ldots a_m .](/sites/default/files/tex_cache/605e6ee0e0f3c16a9ff8b839bb48a7fe.png)
Пример 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*}](/sites/default/files/tex_cache/dc33e4352bc80f287c6177e27e5147e8.png)
![\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*}](/sites/default/files/tex_cache/65df7de41a477cf8708dcbbaaaebcf29.png)
Теорема 8.4.6. Пусть язык L контекстно-свободный. Тогда язык порождается некоторой грамматикой в нормальной форме Грейбах без
- правил.
Пример 8.4.7. Грамматика
![\begin{align*}
S \; & {\to} \; aR , \\
R \; & {\to} \; bRT , \\
R \; & {\to} \; \varepsilon , \\
T \; & {\to} \; cSR , \\
T \; & {\to} \; \varepsilon
\end{align*}](/sites/default/files/tex_cache/3378970e2f2b256c9c060e5b4c975fa3.png)
![\varepsilon](/sites/default/files/tex_cache/f8b1c5a729a09649c275fca88976d8dd.png)
![\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*}](/sites/default/files/tex_cache/e12e63976d32d694c68927b79fb3b3a6.png)
Упражнение 8.4.8. Найти контекстно-свободную грамматику в нормальной форме Грейбах, эквивалентную грамматике
![\begin{align*}
F \; & {\to} \; ab , \\
F \; & {\to} \; a F b , \\
F \; & {\to} \; F F .
\end{align*}](/sites/default/files/tex_cache/81e346a3c249046c34c1c50b82672eee.png)
Упражнение 8.4.9. Найти контекстно-свободную грамматику в нормальной форме Грейбах, эквивалентную грамматике
![\begin{align*}
S \; & {\to} \; AB , \\
B \; & {\to} \; AB , \\
A \; & {\to} \; BB , \\
A \; & {\to} \; a , \\
B \; & {\to} \; b .
\end{align*}](/sites/default/files/tex_cache/1ec966eb81bc883d45bfcb97ae9c5089.png)
Упражнение 8.4.10. Найти контекстно-свободную грамматику в нормальной форме Грейбах, эквивалентную грамматике
![\begin{align*}
K \; & {\to} \; Fb , \\
F \; & {\to} \; \varepsilon , \\
F \; & {\to} \; aFbF .
\end{align*}](/sites/default/files/tex_cache/5e1e52fd07483822efad3ca4e1d5d141.png)
Упражнение 8.4.11. Найти контекстно-свободную грамматику в нормальной форме Грейбах, эквивалентную грамматике
![\begin{align*}
S \; & {\to} \; aT , \\
T \; & {\to} \; aTTa , \\
T \; & {\to} \; b .
\end{align*}](/sites/default/files/tex_cache/c60fb116a8c980ad129a2394b454de6a.png)