Главная страница
Навигация по странице:

  • Лекция № 9. Иерархия формальных языков и грамматик

  • 1. Понятие формального языка

  • 4. Иерархия языков по Хомскому Определение 9.4.1 . Формальный язык называется языком типа 0

  • Лекции по теории алгоритмов. Лекция Интуитивное представление об алгоритме Интуитивное определение алгоритма. Примеры алгоритмов


    Скачать 2.84 Mb.
    НазваниеЛекция Интуитивное представление об алгоритме Интуитивное определение алгоритма. Примеры алгоритмов
    АнкорЛекции по теории алгоритмов
    Дата05.05.2022
    Размер2.84 Mb.
    Формат файлаdoc
    Имя файлаЛекции по теории алгоритмов.doc
    ТипЛекция
    #513398
    страница6 из 7
    1   2   3   4   5   6   7
    Раздел 2. Формальные языки и грамматики
    Лекция № 9. Иерархия формальных языков и грамматик


    1. Понятие формального языка

    2. Операции над языками

    3. Порождающие грамматики

    4. Иерархия языков по Хомскому


    1. Понятие формального языка
    Определение 9.1.1. Конечное непустое множество называется алфавитом, его элементы называются символами (буквами).

    Определение 9.1.2. Конечная последовательность символов алфавита A называется словом в алфавите A.

    Пример 9.1.1. ПустьA={а, б, в}. Тогда баба, ваб, ббб – слова в алфавите A, при этом осмысленность слов не предполагается.

    Определение 9.1.3. Слово, не содержащее ни одного символа, называется пустым и обозначается .

    Множество всех слов в алфавите А будем обозначать А*, а через А+ – множество всех непустых слов.

    Определение 9.1.4. Число символов в слове w называется длиной слова wи обозначается w. Длина пустого слова по определению равна нулю.

    Определение 9.1.5. Конкатенацией слов x и y называется слово, обозначаемое как xy(или xy) и получающееся в результате приписывания слова yв конец слова x .

    Если w – слово, то через wn (n=1, 2, …) обозначается слово:

    (при n=0 полагается, что wn=), а через wа – число вхождений буквы а в слово w.

    Так как

    ,

    а множество слов данной длины конечно, то множество А*счетно.

    Определение 9.1.6. Любое подмножество L множества А* (L А*) называется формальным языком (языком) над алфавитом А.

    Определение 9.1.7. Язык А*Lназывается дополнением языкаLотносительно алфавита А.

    Так по определению любой формальный язык представляет собой множество, то над языками, заданными над одним и тем же алфавитом, можно обычным образом определить операции объединения, пересечения и разности.

    Пример 9.1.1. Пусть над алфавитом А={a, b} заданы формальные языки L1={(ab)n:n0} А* иL2={ambm:m0} А*. Тогда пересечением этих языков будет язык L1L2={, ab} А*.

    Задача 9.1.1. Пусть над алфавитом А={a, b} заданы формальные языки L1={w А*:w=3} А* иL2={w А*:wа =1} А*. Сколько слов содержитязыкL1 L2.

    Решение. ЯзыкL1 содержит 8 слов из трех букв: aaa, aab, aba, abb, baa, bab, bba, bbb. Буква а ровно один раз входит в 3 слова: abb, bab, bba. Таким образом, языкL1 L2 содержит 5 слов.
    2. Операции над языками
    Определение 9.2.1. Конкатенацией языков L1, L2 А*называется язык L1L2={xy: xL1, yL2}.

    Определение 9.2.2. Пусть LА*. Тогда L0={}, L1=L, Ln+1= LnL (n=1, 2, …).

    Пример 9.2.1. Пусть А={a, b}, L={aa, ab}. Выпишем все слова языка L2 в следующей таблице:




    aa

    ab

    aa

    aaaa

    aaab

    ab

    abaa

    abab

    Заметим, что L2={(aa)n(ab)m(aa)k: m, n0, m+n+k=2}.

    Слова языка L3 могут быть получены следующим образом:




    aa

    ab

    aaaa

    aaaaaa

    aaaaab

    abaa

    abaaaa

    abaaab

    aaab

    aaabaa

    aaabab

    abab

    ababaa

    ababab

    Попутно заметим, что L3{(aa)n(ab)m(aa)k: m, n0, m+n+k=3}, поскольку ababab{(aa)n(ab)m(aa)k: m, n0, m+n+k=3}.

    Определение 9.2.3. Итерацией языкаL называетсяязык

    .
    Пример 9.2.2. Если А={a, b} и L={aa, ab, ba, bb}, то:

    L*={wA* : wmod 2=0}.

    Определение 9.2.4. Обращением (зеркальным образом) слова w называется слово, записанное теми же буквами в обратном порядке (обозначается wR).

    Например, если w=abab, то wR=baba.

    Определение 9.2.5. Пусть LA*. Тогда язык LR={wR :wL} называется обращением языка L.

    Пример 9.2.3. Если А={a, b} и L={aa, ab, ba, bb}, то LR=L.

    Пример 9.2.4. Если А={a, b} и L={anbm:n1, m1}, то LR={bman:n1, m1}.

    Определение 9.2.5. Пусть А1и А2 алфавиты. Отображение H:A1*A2*, удовлетворяющее условию H(uw)=H(u)H(w) для любых u, wA1*, называется гомоморфизмом (морфизмом).

    Очевидно, каждый гомоморфизм однозначно определяется своими значениями на однобуквенных словах.

    Пример 9.2.5. Пусть А={a, b}. Определим гомоморфизм H:A*A* равенствами H(a)=b, H(b)=a. ТогдаH(aaabb)=bbaaaи т.д.
    3. Порождающие грамматики
    Определение 9.3.1. Порождающей грамматикой (грамматикой типа 0) называется четверка G=<N, A, P, S>, где:

    а) N – конечный алфавит, называемый нетерминальным (вспомогательным) алфавитом, символы которого будем обозначать прописными латинскими буквами;

    б) А – конечный алфавит, именуемый основным (терминальным) алфавитом, символы которого будем обозначать строчными латинскими буквами;

    в) АN=;

    г) P – конечное подмножество декартового произведения:

    P(NA)+  (NA)*,

    при этом пары (, )P называются правилами подстановки (просто правилами или продукциями) и записываются в виде ;

    д) S – нетерминальный символ (SN), называемый начальным символом.

    Пример 9.3.1. Пусть N={S}, A={a, b}, P={SabS, Sa}. Тогда G=<N, A, P, S> – является порождающей грамматикой.

    Определение 9.3.2. Пусть дана порождающая грамматика G=<N, A, P, S>. Говорят, что слово v непосредственно выводимо из слова w (пишут wv), если w=, v=принекоторыхсловах, , , в алфавитеNAиP.

    Пример 9.3.2. Пусть N={S}, A={a, b}, P={SabS, Sa}. G=<N, A, P, S> –порождающая грамматика.

    Тогда S abS, Sa, abSaba, abS ababS, ababSababa.

    Определение 9.3.3. Пусть дана порождающая грамматика G. Говорят, что слово wn выводимо из слова w0 (пишутw0 wn), если

    w0w1w2wn(n0).

    Пример 9.3.3. Пусть N={S}, A={a, b}, P={SabS, Sa}. G=<N, A, P, S> – порождающая грамматика.

    Тогда S a, S aba, S ababa, S a(ba)m, abS ababS и т.д.

    Определение 9.3.4. Множество L(G)={wA*: S w} называется языком, порождаемым грамматикой G=<N, A, P, S>. Также говорят, что грамматика G порождает язык L(G).

    Пример 9.3.4. Пусть N={S}, A={a, b}, P={SabS, Sa}. G1=<N, A, P, S> – грамматика, порождающая язык

    L(G1)={a(ba)m: m0}.

    Пример 9.3.5. Пусть N={S, F}, A={a, b}, P={SFF, FaFb, Fab}. G2=<N, A, P, S> – грамматика, порождающая язык

    L(G2)={anbnambm: n1, m1}.

    Определение 9.3.5. Две грамматики называются эквивалентными, если они порождают один и тот же язык.

    Пример 9.3.6. Пусть N={S, F}, A={a, b},P={SaF, FbaF, F}. G3=<N, A, P, S> – грамматика, порождающая язык

    L(G3)={a(ba)m: m0}.

    Грамматика G3 эквивалентна грамматике G3 (см. пример 9.3.4).
    4. Иерархия языков по Хомскому
    Определение 9.4.1. Формальный язык называется языком типа 0, если он порождается некоторой грамматикой типа 0.

    Определение 9.4.2. Контекстной грамматикой (контекстно-зависимой грамматикой, грамматикой типа 1) называется порождающая грамматика, каждое правило которой имеет вид B, где BN, ,(NA)*, (NA)+.

    Определение 9.4.3. Формальный язык называется контекстным языком, если он порождается контекстной грамматикой (грамматикой типа 1).

    Определение 9.4.4. Контекстно-свободной грамматикой (бесконтекстной грамматикой, грамматикой типа 2) называется порождающая грамматика, каждое правило которой имеет вид B, где BN, (NA)*.

    Пример 9.4.1. Пусть N={S, U, T}, A={a, b, c}, P={SUT, UaU, U, TbTc, T}. Тогда G=<N, A, P, S> – контекстно-свободная грамматика, порождающая язык

    L(G)={anbmcm: n0, m0}

    Определение 9.4.5. Формальный язык называется контекстно-свободным языком, если он порождается контекстно-свободной грамматикой (грамматикой типа 2).

    Определение 9.4.6. Праволинейной грамматикой (рациональной грамматикой, грамматикой типа 3) называется порождающая грамматика, каждое правило которой имеет вид BwилиBwT, где B, TN, wA*.

    Определение 9.4.7. Формальный язык называется праволинейным языком, если он порождается праволинейной грамматикой (грамматикой типа 3).

    Классы формальных языков типа 0, 1, 2, 3 образуют иерархию Хомского. При этом следует иметь в виду, что:

    1) каждая праволинейная грамматика является контекстно-свободной грамматикой;

    2) каждая контекстно-свободная грамматика без правил вида является контекстной грамматикой;

    3) каждая контекстная грамматика является порождающей грамматикой типа 0.

    Пример 9.4.2. Пусть N={S, H}, A={a, b}, P={SaS, Sa, SH, HbH, Hb}. Тогда G=<N, A, P, S> – праволинейная грамматика, порождающая язык L(G)={anbm: n1 или m1}.
    1   2   3   4   5   6   7


    написать администратору сайта