
- •Глава 3. Теория автоматов.
- •Основные понятия теории автоматов
- •Так к.С. Грамматика порождает язык
- •Так, нефункциональная к. С. Грамматика
- •Пояснения к построению дерева методом “свертый”:
- •Предполагается, что “программа” машины Тьюринга составляется из конечного множества команд вида: qiaj→ ql ak dp, , где (и).
- •Замечание
- •I. Макроподход.
- •II. Микроподход
- •Пояснения
- •Замечание
- •Замечание
- •Моделирование автоматных систем сетями петри.
- •Сеть петри Общие положения.
- •Выполнение сети Петри.
- •Интерпретация сети Петри.
Глава 3. Теория автоматов.
ТЕОРИЯ АВТОМАТОВ.
ВВОДНЫЕ ПОЛОЖЕНИЯ.
Теория автоматов – раздел дискретной математики, изучающий математические модели реальных (технических, биологических, экономических) или возможных устройств, перерабатывающих дискретную информацию дискретными временными тактами.
В этой теории достаточно четко выявляются ее направления, обусловленные:
выбором изучаемых типов автоматов (конечные, бесконечные, детерминированные, вероятностные, автономные, комбинационные, без выхода)
принятым уровнем абстракции (абстрактные и структурные автоматы)
спецификой применяемых математических (алгебраическая теория автоматов)
При этом в дискретных моделях рассматриваемых объектов учитывается лишь логика происходящих процессов изменений автомата без учета количественных характеристик.
Центральными проблемами читаемой теории являются проблемы синтаксиса и анализа (т.е. разработка функциональной схемы автомата по заданному его поведению и описание поведения автомата по известной его структуре). С этими проблемами тесно связаны задачи полноты, эквивалентности, минимизации числа состояний автоматов.
Далее автомат, как устройство, предназначенное для выполнения целенаправленных действий без участия человека, рассматривается либо как реализующий ту или иную формальную грамматику (абстрактный автомат), либо как множество элементов и схема их соединения (структурный автомат).
Основные понятия теории автоматов
Абстрактный конечный автомат U- модель <A, Q, B, R>, представляющая устройство, которое преобразует информацию по правилам R в виде «черного ящика», имеющего входной А и выходной В алфавиты, а также некоторое множество внутренних состояний Q.
ai A, bj B, qk Q
Когда на вход подается сигнал ai, то в зависимости от него и текущего состояния qk Q автомат переходит в следующее состояние ql Q и выдает сигнал на выход bj B. Это – один такт действия автомата qk ai ql bj. Затем подается следующий сигнал, наступает следующий такт и т.д. Изменение сигнала на входе меняет состояние автомата и его выходной сигнал означает элементарное преобразование поступающей в виде сигналов информации.
Бесконечный автомат – абстрактный автомат, хотя бы одно из определяющих множеств A, B, Q которого бесконечно.
Ситохастический (вероятностный) автомат - абстрактный автомат, правила преобразования информации, которого R являются вероятностными.
Конечный автомат – дискретный автомат, в котором переход из одного состояния в любое другое может быть совершено за конечное число шагов (таким автоматом, например, является процессор).
Структурный автомат - конечный автомат, внутреннее устройство которого известно.
Формальная грамматика =<T, H, J, P> - система правил построения P в заданном алфавите TH(T – терминальный алфавит, Н – нетерминальный алфавит, ТН=) конечных знаковых последовательностей, множество которых образует некоторый формальный язык () (JH, Н - аксиома).
Формальный язык - язык, построенный по правилам некоторого логического исчисления (иначе – язык, синтаксис которого определен формальной грамматикой ).
Слово – цепочка символов в некотором алфавите (принято цепочки в алфавите (TH) обозначать греческими буквами; так, например, (TH)*).
Предложение – слово в терминальном алфавите.
Продукция (синтаксическое правило) – способ преобразования цепочки вида (, , (TH)*) в цепочку вида ((TH)*).
Дерево вывода (разбора) – форма наглядного представления вывода предложения в заданной грамматике.
АВТОМАТЫ И ФОРМАЛЬНЫЕ ЯЗЫКИ.
Описание формальных языков (как конечных или бесконечных множеств слов) конечными средствами осуществляют как автоматами, так и формальными грамматиками.
Тип языка () по Хомскому |
Тип формальной грамматики Хомского |
Автоматная модель языка |
0 |
Произвольная (алгоритмическая) грамматика типа 0 |
Машина Тьюринга |
1 |
Грамматика типа 1 (контекстная грамматика, Н.С. грамматика, грамматика непосредственно составляющих) В |
Автомат с линейно-ограниченной памятью |
2 |
Грамматика типа 2(контекстно-свободная грамматика, К.С. грамматика, бесконтекстная грамматика) В |
Магазинный автомат |
3 |
Грамматика типа 3(автоматная, регулярная, конечная) ВаС, Ва |
Конечный автомат
|
Классы языков по Хомскому являются иерархией, т.е. язык типа 3 является подклассом языка типа 2, т.е. (3) (2) (1) (0). Следуя приведенной таблице, можно говорить, что
регулярный язык (т.е. язык, порождаемый грамматикой типа 3) распознается конечным автоматом и в этом плане является самым простым в математическом плане
бесконтекстный язык (т.е. язык (2)) распознается магазинным автоматом – бесконечным автоматом, внутренняя структура которого представляет собой стековую память
контекстный язык (1) распознается автоматом с линейно-ограниченной памятью, т.е. автоматом, которому для распознавания последовательности длины nN необходима память объемом не более k*n, где k – число, независящее от входного слова
произвольный формальный язык, т.е. (0), распознается машиной Тьюринга – математического понятия для формального уточнения интуитивного понятия «алгоритм»
Замечание: В синтаксическом правиле В являются контекстами (левый и правый), которые могут быть пустыми цепочками; ВН, а,, , (ТН).
ФОРМАЛЬНЫЕ ГРАММАТИКИ.
Формальные грамматики =<T, H, J, P> как процедуры могут быть порождающими и распознающими. Порождающая грамматика по существу является частным случаем формальной системы FS/=<, D>-<F, D>=<F, S; Ax, P>. В этом случае A=TH, F(TH)*, JH, P=iji, jN, i, j(TH)*, т.е. правила вывода P позволяют получать слова в терминальном алфавите Т из единственной аксиомы J путем замещения нетерминальных символов цепочек в алфавите (TH).
Распознающая грамматика – алгоритм, распознающий по любой цепочке, является ли оно словом языка T*.
Автомат для распознавания и порождения слов можно рассматривать как устройство обработки входных цепочек символов с целью:
определения их принадлежности формальному языку ()
порождений выходных цепочек символов
Выводом в грамматике называется последовательность цепочек, в которой каждая из цепочек, кроме первой, получается из предыдущей применением какого-либо правила вывода (последняя цепочка в выводе – предложение, т.е. слово В в алфавите Т).
Пример 1: Т=a, b, c, H=B, C, J=B, P=BaBС, BCc, Cb
Возможным выводом в этой грамматике может быть последовательность слов:
В, аВС, аСсС, аbсС, аbсbТ*
Эта грамматика порождает язык b, bc, abcb.
Пример 2: множество нечетных чисел в унарном представлении – это множество терминальных слов вида а, ааа, ааааа….., т.е. язык =хТ*: ха2n-1, nN. Этот язык порождается автоматной грамматикой 3=<a, J, J, Ja, JaB, BaJ>.
Пример 3: Язык =хТ*: х=anbnnN порождается К.С. грамматикой, т.е. 2=<a, b, J, J, JaJb, Jab>.
Пример 4: Язык булевых формул с переменными x, y, z порождается К.С. грамматикой 2=<x, y, z, , , , (,), J, J, J(JJ), J(JJ), JJ, Jx, Jy, JZ>.
ДЕРЕВЬЯ ВЫВОДА ПРЕДЛОЖЕНИЙ.
На практике вывод слов языка () в виде последовательности цепочек часто оказывается громоздким. Кроме того, такой способ не позволяет получить в удобном виде информацию о синтаксических конструкциях. Наилучшим способом компактного представления вывода слов в таком случае является дерево вывода (дерево синтаксического анализа, дерево грамматического разбора). Говорят, что задано стандартное дерево вывода, если правилу ri: 1A212 (здесь 1, 2 – контекст, 1, 2 (TH)*), АН, (TH)*) поставлено в соответствие элементарное поддерево t(ri) с вершиной А и кроной 12.
Пример 1: Пусть 1=<a, b, c, A, B, C, D, J, J, JAAB, ABDBB, aBBabB, Aa, Da, BC, Cc>.
Вывод J, AAB, aAB, aDBB, aaBB, aabB, aaaBC, aabc представим деревом:
A
ЗдесьJ
– корень дерева, J
A
, A a
- поддеревья.
B
aabc – крона дерева синтаксического вывода(a, b, b, c – листья дерева ).
Пример 2: Арифметическое выражение a*b+c в К.С. грамматике с продукциями P=JB, JJ+B, BC, BBC, CD, Da, Db, Dc имеет следующий вывод: J, J+B, B+B, BC+B, CC+B, DC+B, aC+B, ab+B, ab+C, ab+D, ab+c (этот вывод содержит 52 символа). Дерево этого вывода имеет вид:
J
J + B
B C
B * C D
C D c
D b
a
В этом дереве синтаксического вывода 16 вершин, из них 5 помечены терминальными символами (крона а, *, b, +, с), а 11 – нетерминальными (равно числу применения правил в выводе терминальной цепочки a*b+c).
Примечание:
Однозначное соответствие между выводом и его синтаксическим деревом не означает однозначность обратного – одному дереву, может соответствовать несколько выводов. Так, в рассмотренном примере арифметическое выражение в грамматике может иметь и другой вывод: J, J+B, B+B, Bc+B, BD+B, Bb+B, Cb+B, Db+B, ab+B, ab+C, ab+D, ab+c, а его дерево тоже самое, что в рассмотренном примере.
К.С. грамматика 2
может быть нефункциональной, если
в ней существует хотя
бы одно предложение языка , имеющее
более одного дерева синтаксического
вывода.