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

  • 1. Конечные автоматы

  • 2. Характеризация праволинейных языков

  • Лекция № 11. Контекстно-свободные языки

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


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

    Лекция № 10. Праволинейные языки и конечные автоматы
    1. Конечные автоматы

    2. Характеризация праволинейных языков
    1. Конечные автоматы
    Наиболее распространенными способами конечного задания формального языка являются грамматики и автоматы. Здесь рассматриваются конечные автоматы, соответствующие в иерархии Хомского праволинейным грамматикам.

    Определение 10.1.1. Конечный автомат – это пятерка

    M=<Q, A, D, I, F>, где:

    а) Q – конечное множество, именуемое множеством состояний, элементы которого называются состояниями и, как правило, либо нумеруются, либо просто обозначаются числами;

    б) Aконечный входной алфавит (или просто алфавит);

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

    DQA*Q,

    причем элемент множества Dвида <p, x, q> – называется переходом из состояния p в состояние q, а слово x – меткой этого перехода;

    г) Iконечное множество начальных состояний (IQ);

    д) Fконечное множество заключительных (допускающих) состояний (FQ).

    Пример 10.1.1. Пусть Q={1, 2, 3, 4}, A={a, b}, I={1}, F={4}, D={<1,a,2>, <1,b,3>, <2,a,2>, <2,b,2>, <3,a,3>, <3,b,3>, <2,b,4>, <3,a,4>}. Тогда M1=<Q, A, D, I, F> – конечный автомат.

    Конечные автоматы допускают описание в виде диаграмм состояний (диаграмм переходов). Каждое состояние обозначается кружком, причем начальное состояние распознается по ведущей в него короткой стрелке, а заключительное состояние отмечается двойным кружком. Переходы на диаграмме обозначаются стрелками. Стрелка из состояния p в состояние q, помеченная словом x, фиксирует наличие перехода <p, x, q>.

    Например, диаграммаконечного автоматаM1 имеет следующий вид:



    Рис. 10.1.1. Диаграмма переходов конечного автомата М1

    Определение 10.1.2. Путь конечного автомата – это кортеж вида <q0, <q0, w1, q1>, q1, <q1, w2, q2>, q2…, qi-1, <qi-1, wi, qi>, qi,…qn>, где n0 идля всехi<qi-1, wi, qi>D, qiQ, wiA*. При этом:

    а) q0 начало пути; б) qn конец пути;

    в) nдлина пути; г) w1w2,…, wi, wn– метка пути.

    Путь называется успешным, если q0I, а qnF.

    Пример 10.1.2. Рассмотрим конечный автомат М1 из примера 10.1.1. Путь <1, <1, a, 2>, 2, <2, b, 2>, 2, <2, b, 4>, 4> – успешный.

    Меткой этого пути будет слово abb, длина пути равна 3.

    Определение 10.1.3. Слово w допускается конечным автоматом М, если оно является меткой некоторого успешного пути.

    Пример 10.1.3. Рассмотрим конечный автомат М1 из примера 10.1.1. Слова abb, abbabbabb, baba, baдопускаютсяавтоматом М1, а слова aba, abbabbaba, bab, bbbнедопускаютсяавтоматом М1.

    Определение 10.1.4. Множество всех слов, допускаемых конечным автоматом, называется языком, распознаваемым конечным автоматом М. Обозначается этот язык L(M). Также говорят, что автомат М распознает язык L(M).

    Пример 10.1.4. Конечный автомат М1 из примера 10.1.1 распознаетязык L(M1)={awb: wA*}{bwa: wA*} (заметим, что L(M1) – представляет собоймножествослов, у которых первая и последняя буквы не совпадают).

    Пример 10.1.5. ПустьМ2=<Q, A, D, I, F>, где Q={1, 2}, I={1}, A={a, b}, F={1, 2}, D={<1, a, 2>, <2, b, 1>}. Диаграмма переходов конечного автомата М2 имеет вид:



    Рис. 10.1.2. Диаграмма переходов конечного автомата М2

    Тогда L(M2)={(ab)n: n0}{(ab)na: n0 }.

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

    Пример 10.1.6. Конечныеавтоматы, представленные следующими диаграммами (рис. 10.1.3), эквивалентны.





    Рис. 10.1.3. Диаграммы переходов эквивалентных конечных автоматов

    Определение 10.1.6. ЯзыкLназывается автоматным, еслисуществует конечный автомат, распознающий этот язык.

    Определение 10.1.7. Состояниеq достижимо изсостояния p, если существует путь, началом которого является p, а концом q.

    Теорема 10.1.1. Каждый автоматный язык распознается некоторым конечным автоматом, в котором каждое состояние достижимо из некоторого начального состояния и из каждого состояния достижимо хотя бы одно заключительное состояние.

    Иными словами, каждый конечный автомат может быть преобразован в эквивалентный автомат, в котором каждое состояние достижимо из некоторого начального состояния и из каждого состояния достижимо хотя бы одно заключительное состояние. Пример подобного преобразования приведен на рис. 10.1.3.

    Теорема 10.1.2. Каждый автоматный язык распознается некоторым конечным автоматом, не содержащим переходов с метками длины больше единицы и имеющим ровно одно начальное состояние и ровно одно заключительное состояние.

    Теорема 10.1.3. Каждый автоматный язык распознается некоторым конечным автоматом, содержащим только переходы с метками длины единица и имеющим ровно одно начальное состояние.

    Определение 10.1.8. Конечныйавтомат M=<Q, A, D, I, F> называется детерминированным, если:

    1) множество начальных состояний I содержит ровно один элемент;

    2) длина метки каждого перехода равна единице;

    3) для любого символа aA и для любого состояния pQсуществует не более одного состояния qQсо свойством <p, a, q>D.

    Примером детерминированного конечного автомата может служить автомат М2 из примера 10.1.5. Примером недетерминированного конечного автомата может служить автомат М1 из примера 10.1.1.

    Определение 10.1.9. Детерминированный конечныйавтомат M=<Q, A, D, I, F> называется полным, если для каждого состояния pQи для любого символа aAнайдется такое состояниеqQ, что<p, a, q>D.

    Теорема 10.1.4. Каждый автоматный язык распознается некоторым полным детерминированным конечным автоматом.

    Иными словами, каждому конечному автомату можно сопоставить эквивалентный ему полный детерминированный конечный автомат.

    Пример 10.1.7. Диаграмма полного детерминированного конечного автомата, эквивалентного автомату М1 из примера 10.1.1, выглядит следующим образом:



    Рис. 10.1.4. Диаграмма полного детерминированного конечного автомата,

    эквивалентного автомату М1

    Пример 10.1.8. Диаграмма полного детерминированного конечного автомата, эквивалентного автомату М2 из примера 10.1.5, выглядит следующим образом:



    Рис. 10.1.5. Диаграмма полного детерминированного конечного автомата,

    эквивалентного автомату М2
    2. Характеризация праволинейных языков
    Теорема 10.2.1. Каждый автоматный язык является праволинейным.

    Доказательство. Пусть автоматный язык L(M) определяется конечным автоматом М=<Q, A, D, I, F>, где QA=, и I={q0}. Положим N=Q, S=q0, P={pxq: <p, x, q>D}{p:pF}. Тогда G=<N, A, P, S> – праволинейная грамматика (грамматика типа 3), порождающая язык L(M).

    Теорема доказана.

    Теорема 10.2.2. Каждый праволинейный язык является автоматным.

    Доказательство. Без ограничения общности можно считать, что праволинейный язык L задан праволинейной грамматикой, не содержащей правил вида Tu, где uA+. Положим:

    Q=N, I={S}, F={TN: (T)P}, D={<T, u, B> : (TuB)P}.

    Тогда конечный автомат М=<Q, A, D, I, F> порождает такой язык L(M), что L=L(M).

    Теорема доказана.

    Пример 10.2.1. Праволинейный язык

    L={w{a, b}*: wamod 2=0, wbmod 2=0}

    порождается грамматикой G=<N, A, P, S>, где N={S, T, E, F}, A={a, b}, P={SaT, SbE, S, TaS, TbF, EaF, EbS, FaE, FbD}.

    Диаграмма переходов конечного автомата M3, порождающего этот же язык имеет вид:


    Рис. 10.2.1. Диаграмма конечного автомата М3

    Определение 10.2.1. Праволинейная грамматика, в которой каждое правило имеет вид T, Ta, TaU, где T, UN, aA, называется праволинейной грамматикой в нормальной форме (автоматной грамматикой, регулярной грамматикой).

    Теорема 10.2.3. Каждая праволинейная грамматика эквивалентна некоторой праволинейной грамматике в нормальной форме.

    Теорема 10.2.4. Классправолинейныхязыков замкнутотносительно итерации, конкатенации и объединения.

    Теорема 10.2.5. Классправолинейныхязыков замкнутотносительно дополнения и пересечения.

    Теорема 10.2.6. Пусть L – праволинейный язык над алфавитом А. Тогда найдется такое натуральное p>0, что для любого слова wLwpможноподобрать слова x, y, zA*, длякоторых справедливы соотношения:y, xyp, xyz=w, xyizL(для всех i0).

    Пример 10.2.2. ПустьязыкL={abnan: n0} задан над алфавитом A={a, b}.

    Пустьpпроизвольноенатуральное число. Положимw=abpap.

    Если положить x=, то возможны следующие варианты:

    y

    Z

    w

    xyyz

    a

    bpap

    xyz

    aabpapL

    abk(0

    bp-kap

    xyz

    abkabpapL

    abp

    ap

    xyz

    abpabpapL

    abpak(0p)

    ap-k

    xyz

    abpak+1bpapL

    Как видно из приведенной таблицы, при любом натуральном pиx=словоxyyzL. С помощью аналогичных выкладок можно придти к выводу о том, что при любом натуральном pи при x=aсловоxyyzL. Этотже вывод оказываетсяверен и приx=abk, x=abpak. В свою очередь, это означает, что условие теоремы 10.2.6 не выполняется, а потому язык L не является автоматным.
    Лекция № 11. Контекстно-свободные языки


    1 Степанов А.Н. Информатика: Учебник для вузов. 4-е изд. – СПб.: Питер, 2005. – С. 41.

    1 Этой теории будут посвящены следующие лекции.

    1 В теории нормальных алгорифмов пустое слово обозначается символом .

    2  – подслово слова .

    1 В ряде источников, например в [], стандартным считается то положение, при котором головка «обозревает» ячейку, в которой записана первая буква слова, т.е. крайне левую ячейку.

    1 Здесь и далее в соответствии с тезисами теории алгоритмов под вычислимыми функциями подразумеваются частично рекурсивные функции. Соответственно под всюду определенными вычислимыми функциями – общерекурсивные функции.

    2 Эти программы могут, например, располагаться в порядке возрастания их длины.

    1 Если в классе А отсутствует нигде не определенная функция, то можно взять произвольную функцию из класса А, а нигде не определенную функцию из его дополнения.

    2 Не тривиальным в том плане, что класс всех вычислимых функций разбивается на два непустых подкласса функций, обладающих и не обладающих этим свойством.




    1   2   3   4   5   6   7


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