- •Глава 1
- •1.1. Понятие абстрактного автомата
- •1.2. Преобразование абстрактных автоматов
- •1.3. Соединение (композиция) автоматов
- •1.4. Тестирование абстрактных автоматов
- •2. Начальные языки описания абстрактных автоматов
- •2.1. Язык Граф-Схем Алгоритмов
- •2.2. Язык регулярных выражений
- •2.3. Формальные грамматики и языки
- •2.4. Автоматы и грамматики [ 7 ]
- •2.5. Машина тьюринга [ 5, 8 ]
- •3. Структурный синтез автоматов и кодирование информации
- •3. 3. ПредставЛение символьной информации
- •4.1 Машинное изображение чисел
- •4.2. Выполнение арифметических и логических операций
- •4.3. Микропрограммирование
- •5 Математический аппарат синтеза комбинационных автоматов
- •5.1 Элементная база построения комбинационных автоматов
- •5.2. Переключательные функции (логика высказываний)
- •7. Структурный синтез автоматов с памятью, асинхронные автоматы и сети петри
- •7.1. Канонический метод синтеза автоматов с памятью
- •7.3 Моделирование дискретных асинхронных процессов и сети Петри
- •Свойства сетей Петри
2.3. Формальные грамматики и языки
Последовательности символов, поступающих на вход автомата, создаются внешними по отношению к автомату объектом. Такие последовательности несут информацию о состоянии объекта и используются автоматом, например, для управления объектом, т.е. для изменения его состояния.
Входная последовательность может быть получена и другим способом:
Как результат считывания описания некоторого объекта или задачи, представленного на некотором входном языке. В этом случае состояние объекта представляется в виде описания объекта, а абстрактный символ состояния автомата – это условное обозначение класса рассматриваемого состояния (рис. 11).
Рис. 11
На рис. 11 S1,1, S 1,2, S 1,3, … , S 2,1, S 2,2, S 2,3, … - состояния объекта.
Описание сложного объекта включает перечень компонентов, составляющих объект, и отношения между компонентами. Такие описания имеют вид цепочек над алфавитом V и подчиняются некоторым ограничениям, а именно ограничениям языка описания.
Выбор алфавита, на котором представляется описание, зависит от физических свойств носителя. Например, в вычислительной технике широко используется двоичный алфавит B=[1.0].
Синтаксис языка описания позволяет выявить синтаксические отношения между компонентами описания (буквами, словами, фразами).
Соответствие компонентов описания компонентам реального объекта, а также соответствие синтаксических отношений между компонентами описаний реальным отношениям между компонентами объекта позволяет “вычислить” смысл описания, т.е. определить отношения между компонентами объекта, которые не представлены в явном виде в рассматриваемом описании объекта.
Формальный язык над алфавитом V – это подмножество LV*, где V* - множество всевозможных цепочек над V.
Формальный язык можно задать с помощью формальной порождающей грамматики: G=<w1,V,W,R>,
Где w1W – начальный символ, из которого выводятся правильные цепочки над V;
W – множество вспомогательных символов, каждый из которых обозначает некоторый класс правильных цепочек;
R – множество правил ввода.
В соответствии с классификацией Н. Хомского различают бесконечные (контекстно-свободные) и контекстно-зависимые грамматики.
В бесконечных грамматиках каждое правило из R имеет вид:
w::, где wW, (VUW)* .
если имеется несколько правил
w:: 1, w::2 , … , w::=2k,
раскрывающих нерминалной символ w, то они могут быть записаны компактно
w:: 1|2 | … | k .
Язык L(G), порождаемый грамматикой G, - это множество терминальных цепочек, т.е. цепочек над V, выводимых с помощью правил грамматики G. Грамматика называется автоматной, или
A-грамматикой, если все правила её имеют вид w::=vw1 ,
Где wW, vV, w1WU{w0}, w0 – пустой символ.
Например, построим грамматику, порождающую двоичные числа вида 110#, 0.1#, 010.011# и т.д. в двоичном алфавите
V= {0111.1#}.
Символ “.”используется для отделения целой части от дробной части числа, а символ “#” служит как разделитель для обозначения конца записи числа. Для упрощения записи правил введён символ двоичной цифры d{011} и перейти к алфавиту V= {d1 . d#}.
Рассмотрим грамматику со следующими правилами:
w::=dw
w::= # | dw |.w
w::= # | dw
С использованием пустого символа w0 правила для w2 и w3 можно переписать
w2 :: = # w0 | dw2 |. w3
w3 :: = # w0 | dw3
