Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

298

.pdf
Скачиваний:
1
Добавлен:
15.11.2022
Размер:
1.1 Mб
Скачать

Министерство образования Российской Федерации Пермский государственный технический университет

Т.И. Коган

ВВЕДЕНИЕ В ОБЩУЮ ТЕОРИЮ АВТОМАТОВ

Утверждено Редакционно-издательским советом университета в качестве конспекта лекций

Пермь 2001

УДК 681.51.01 К57

Рецензенты:

доктор техн. наук, профессор

С.Ф. Тюрин

(Пермский военный институт ракетных войск); канд. техн. наук, доцент

Г.В. Кропачев

(Пермский государственный технический университет)

Коган Т.И.

К57 Введение в общую теорию автоматов: Конспект лекций/ Перм. гос. техн. ун-т. Пермь, 2001. 31 с.

Рассмотрены важные вопросы теории автоматов: элементы математической лингвистики, формальные грамматики и языки, классификация порождающих грамматик и языков, автоматы и формальные языки, автоматы - распознаватели языков, машина Тьюринга, магазинные автоматы, сети Петри, регулярные языки и конечные автоматы.

УДК 681.51.01

© Пермский государственный технический университет, 2001

1.ЭЛЕМЕНТЫ МАТЕМАТИЧЕСКОЙ ЛИНГВИСТИКИ

1.1.Автоматы и формальные языки

Вобщем смысле слова термин «автомат» обозначает устройство, выполняющее некоторые процессы без непосредственного участия человека. В технике термин «автомат» обозначает математическую модель реального автомата.

Абстрактный автомат можно представить как некоторое устройство («черный ящик»), имеющее конечное число входных и выходных каналов и некоторое множество внутренних состояний.

На входные каналы автомата извне поступают сигналы и в зависимости от их значения и от того, в каком состоянии находился автомат, он переходит в следующее состояние и выдает сигналы на свои выходные каналы. С течением времени входные сигналы изменяются, соответственно изменяются и состояния

автомата и его выходные сигналы.

 

 

 

 

В узком

смысле термин «автомат»

употребляется для

обозначения гак

называемых

дискретных автоматов

(ДА). ДА

это математическая модель

устройства,

предназначенного

для

переработки

(преобразования)

последовательности входных дискретных сигналов в последовательность выходных дискретных сигналов. При этом считается, что очередное изменение значений входных сигналов может произойти только тогда, когда в автомате закончится переходный процесс, вызванный предыдущим изменением входных сигналов.

Предполагается, что автомат функционирует в дискретные момент времени, т.е. непрерывная шкала времени разделена на интервалы, которые занумерованы целыми неотрицательными числами 0,1,2,... называемыми тактами. На протяжении одного такта сохраняются неизменными состояние входа, состояние выхода и внутреннее состояние автомата.

Если все такты имеют одинаковый временной интервал, го такой ДА называется синхронным, если такты имеют произвольные интервалы времени, то автомат называется асинхронным.

Говорят, что /-й набор значений входных сигналов, воздействующих на входы автомата JC|, JC2, ,х„ (п - число входов), образует состояние входа Pi е{/7|,/?2, , /?„!, причем при двузначных (считается, что входные, выходные сигналы являются двоичными, а каждый элемент памяти (ЭП) может находиться в одном из двух устойчивых состояний) входных сигналах всего может быть N = 2" состояний входа.

Аналогично, каждый из наборов значений двузначных выходных сигналов z |, , zw, образует одно из М = состояний выхода X, е {Х,,...,ХШ!

- число выходов).

Каждый из 2' наборов значений состояний элементов памяти v,,...,y4

образует одно

из S = 2Л внутренних состояний автомата г, е [г,,..., гчJ

(л- число элементов памяти).

Наиболее

распространены в технике конечные дискретные автоматы

(или просто «конечные автоматы»). Конечным автоматом называется устройство, определяемое конечным множеством (алфавитом) состояний входа Р = {р\, конечным множеством (алфавитом) состояний выхода

Л= {А.1, A.2V AV/}, конечным множеством (алфавитом) внутренних состояний.

Т= {т,,т2,...,тЛ} и двумя функциями: функцией переходов и функцией

выходов. Из множества внутренних состояний иногда выделяется некоторое состояние т0, называемое начальным внутренним состоянием.

Таким образом, входной

алфавит

Р - это множество, содержащее

N подмножеств,

каждое из

которых

содержит п элементов (по числч

входов), выходной алфавит Л — множество, содержащее М подмножеств, состоящих из in элементов (по числу выходов), алфавит внутренних состояний /-множество, содержащее S подмножеств, состоящих из v элементов (л - количество элементов памяти).

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

Функция переходов конечного автомата устанавливает зависимость

внутреннего состояния автомата в следующий момент

времени

h I 01

состояния входа и внутреннего состояния в настоящий момент времени (:

т(Ж)=<р(/з(/), т(/)):

 

 

Функция выходов устанавливает зависимость состояния выхода автомата

от состояния входа и внутреннего состояния автомата

в тот же

момент

времени V.

 

 

X(t)=v(p(i). т(/)),

При этом р(1)е{р\, ,р\},Х{1)е{Хи , /ц,}; т(/)е{ т,, ,T.S}. Здесь/?(/), А.(/), т(/) - состояние соответственно входа, выхода и внутреннее состояние автомата в момент (такт) /, принимающее одно из значений указанных множеств.

Автоматы, для которых функции переходов и выходов определены на всех парах (/?, т), называют полностью определёнными или полными автоматами. Имеется в виду, что алфавиты входов, выходов и внутренних состояний заданы.

Автоматы, для которых эти функции (или одна из них) определены не на всех парах (/7, т), называют недоопределёнными. Часто удобно использовать понятие «состояние автомата», которое в отличие от^внутреннего состояния автомата иногда называют полным.

Состояние автомата б(/) в момент времени (такте) t определяется внутренним состоянием и состоянием входа автомата в этот же момент времени /

Множество состояний А = {6,,..., 6R} (R=N*S) всегда конечно, т. к. N=1 /Н и 5Н 71 конечны (I Р\ , I 71 - мощности множеств, Р и Т - число элементов в них).

Состояние 6,у недоопределённого автомата, соответствующее паре (р„ т;),

на котором функция переходов не определена, называют неиспользуемым состоянием автомата. Остальные состояния - используемые. Если на какомлибо используемом состоянии автомата функция выходов не определена, то будем говорить, что ему соответствует безразличное состояние выхода.

Для описания алгоритма функционирования (т. е. для задания автомата) существуют различные средства или, как говорят, языки.

Простейшим языком описания автомата является так называемый неформальный язык, т. е. словесная формулировка условий функционирования автомата, которая оформляется на профессиональном языке конечного пользователя в терминах предметной области. Это - содержательная формулировка. Конечно, она должна в той или иной форме определять алфавиты входа, выхода, внутренних состояний и функции переходов и выходов.

Для технического использования неформальные языки неудобны. Поэтому для описания алгоритма функционирования автомата используются так называемые формальные языки.

Формальный, или формализованный язык - это формулировка задачи на языке математики. От неформального языка пользователя (содержательной формулировки) переходят к строгой формальной записи с использованием математических категорий.

«Языки формальные (формализованные) — это множество конечных последовательностей символов, описываемых системами правил определённого вида, называемыми грамматикой или синтаксисом языка.

В том случае, когда каждому слову формального языка сопоставляется его семантика (смысл, значение, интерпретация), формальный язык называется интерпретированным» (Энциклопедия кибернетики. М., 1975).

Формальные языки, позволяющие задать функции переходов и выходов автомата как однозначные отображения множества пар (р„ т7) (входов и состояний) в множества {т^} и {X/} (состояний и выходов) будем называть стандартными языками (таблицы переходов, таблицы включений).

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

Функция же переходов в явном виде не задаётся. Такой язык (формальный) условно называется начальным. В начале алгоритм функционирования

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

Вопросами изучения в общем смысле формальных языков и порождающих их грамматик занимается математическая лингвистика, в частности её раздел - теория грамматик.

1.2. Представление формальных языков с помощью грамматик

Формальная грамматика - это система правил, описывающая множество конечных последовательностей символов. Конечные последовательности (цепочки), входящие в указанное множество, называются предложениями (просто цепочками), а само множество - языком, описываемым данной формальной грамматикой. (В математике рассматриваются только формальные грамматики, поэтому иногда говорят просто - грамматика.)

Любой формальный язык представляет собой множество цепочек в некотором конечном алфавите. Для задания описания формального языка необходимо, во-первых’ указать алфавит, т. е. совокупность объектов, называемых символами (или буквами), каждый из которых можно воспроизводить в неограниченном количестве экземпляррв (подобно обычным буквам или цифрам), и, во-вторых, задать формальную грамматику языка, т. е. перечислить правила, по которым из символов строятся их последовательности, принадлежащие определённому языку, - правильные цепочки («слова», «предложения»).

В качестве базы для формального описания языков общепринята теория грамматик Н. Хомского (американский лингвист, впервые опубликовал работы по грамматике в 1956 - 1957 г г.). Рассмотрим её основы.

Пусть V - непустое конечное множество символов (элементов),* называемых словарём (алфавитом).

В качестве символов могут использоваться буквы, слова, математические знаки, геометрические образы и т.п.

Произвольную конечную последовательность символов со называют цепочкой в словаре V(«предложение», «слово»).

Число символов в цепочке называют её длиной и обозначают I (оI

Цепочки получаются из символов^адфавита (словаря) с помощью операции конкатенации (соединения). Например, со = а^СХз, где а ,е V

Множество всевозможных цепочек в словаре V называют языком. Языки задаются грамматикой - системой правил, порождающих все цепочки данного языка и только их. (Под термином «грамматика» понимаем «формальная грамматика»).

Различают порождающие, распознающие и преобразующие формальные грамматики.

Формальная грамматика называется порождающей, если может построить любую правильную цепочку.

Формальная грамматика называется распознающей, если для любой рассматриваемой цепочки она решает, является ли данная цепочка правильной в смысле данной грамматики.

Формальная грамматика называется преобразующей, если для любой правильно построенной цепочки она строит её отображение в виде правильной цепочки.

Это деление в значительной степени условно, т. к. любая распознающая грамматика по существу задаёт способ построения всех предложений (цепочек), т. е. «порождение», а порождающая грамматика позволяет по любой цепочке символов определить, является ли она предложением (т. е. правильной цепочкой данного словаря).

Таким образом, наиболее распространённым в настоящее время является класс порождающих грамматик, который, в основном, введён и рассмотрен Н. Хомским.

Итак, непустую цепочку записывают в виде со=/м,..., Ь„. Цепочка может не содержать элементов, тогда это пустая цепочка. Пустую цепочку обозначают символом X. Длина цепочки обозначается со. Длина пустой цепочки равна нулю.

Например, АЛКИЛАЛКОКСИСИЛАН - цепочка длины 17 в словаре Г,

состоящем из 32 русских букв, а также в словаре V' = {а, п, к, л, н, о, с} и

вообще в любом словаре, содержащем V'

Конкатенацией (или результатом конкатенации) непустых цепочек b\...bn и

с\...ср

называется цепочка

где d\ = />|.../>fl-i, d„ = />,„ dlt+\ =

d,i p =

cp (т. e. конкатенация -

это приписывание справа от первой второй

цепочки).

 

Конкатенация цепочек со и X, равно как и X и со, где со - произвольная цепочка, считается по определению равной со.

Конкатенацию цепочек со и ф будем обозначать соф.

Вместо око... будем писать со", (О1обозначает со, со0 обозначает X. Если

и

СО= фф, будем называть цепочку ф - началом, ф - концом. В частности, всякая цепочка (одна) есть начало и конец самой себя.

Введём также две операции, обратные для конкатенации: левое деление и правое деление («вычёркивание» слева или справа).

Левым (правым) частным от деления цепочки со на цепочку ф называется цепочка ф, такая, что фф = со (соответственно фф = со). Левое частное от деления со на ф будет обозначаться через ф\со, правое - через со/ф (левое

деление - у со убрать ф слева, правое - у со убрать ф справа).

Например, цепочка РОКОКО есть конкатенация цепочек РОК и ОКО, цепочка ОКОРОК - конкатенация цепочек ОКО и РОК.

РОК = ОКОЮКОРОК = РОКОКО/ОКО; ОКО = РОК\РОКОКО = ОКОРОК/РОК;

Частных РОКЮКОРОК, ОКОРОК/ОКО и т. п. - не существует. Произвольное множество цепочек в словаре V называется языком в этом

словаре. Пустой язык обозначается 0 .

Над языками можно производить обычные теоретико-множественные операции (теории множеств) - объединение (и), пересечение (п), вычитание ( -), взятые дополнения, а также некоторые специфические операции.

1.3. Класс порождающих формальных грамматик

Порождающей грамматикой называют четверку

G=(l\ N, /\ S),

где Т - конечное непустое множество символов, называемых терминальным (основным) словарем;

N - конечное непустое множество символов, называемых нетерминальным (вспомогательным) словарем;

Р - конечное непустое множество правил вывода (правил переписывания, продукций); правила вывода - это грамматические правила отдельного языка продукции;

S - начальный символ.

Терминальный словарь (7) представляет собой набор исходных символов, из которых строятся цепочки, порождаемые грамматикой.

Нетерминальный словарь (АО - набор вспомогательных символов, обозначающих классы исходных символов.

Конечное множество V= N'uT- есть полный словарь грамматики (}. Правила вывода (Р) - конечное непустое множество двухместных

отношений вида ср-»ф, где ср и ф - цепочки в словаре I ’, а интерпретируется как “заменить на”

Цепочка со' непосредственно выводима из цепочки О) с помощью правила

ф-И|/, если О) = смерен, О)' = оифаг, {q>— JеР

Последовательность цепочек cp=cpo,cpi,...,(p„=ф, п> 1 называется выводом (полным выводом) ф из ф, если для каждого / (0 < i < п) цепочка ф,-| непосредственно выводима из ф,. Длина вывода равна числу правил вывода. Вывод цепочки ф считается законченным, если не существует больше цепочки, которая следует из ц/, т.е. ф состоит только из терминальных символов.

Начальный символ (S') - выделенный нетерминальный символ, обозначающий класс языковых объектов, для которых предназначена данная грамматика. Начальный символ иногда называют целью грамматики или ее аксиомой.

Пример 1.

Пусть грамматика задана следующим образом:

7’= { a ,M ;W = { W } ;S = S;

Р={ 1. S->aB\ 2. S-+bA\ 3. A->aS: .... A-*bAA\

5. А-+а- 6. B-+bS\ 7. В-+аВВ- 8. B-+b}.

Типичные выводы предложений:

 

S

( 1) ->аВ- ( 8 ) ->ab

 

 

S -

( 1) ->аВ-

( 6 ) ->abS

> abbА — (5)

>abba

S -

4 2 ) -±ЪА

( 5 ) ->ba

 

 

S -

( 2 ) ->ЬА-

( 4 ) ->ЬЬАА

ЬЪаА- (5)

>bbaa

В скобках над стрелками указан номер используемого правила вывода.

S -

начальный нетерминальный символ. Надо, чтобы последний вывод

был цепочкой только из Т={а,Ь).

При описании естественного языка в терминах теории формальных грамматик терминальные символы интерпретируются как слова или морфемы - мельчайшие осмысленные единицы языка (корни, суффиксы и т. п ); нетерминальные символы - как названия классов слов и словосочетаний (подлежащее, сказуемое, группа глагола и т.п.). Цепочка символов обычно интерпретируется как предложение естественного языка.

Пример 2.

Пусть грамматика задана следующим образом:

Т = {везет, доставляет, контейнер, груз, машина, мощная, грузовая, большая};

N = {S - (сказуемое), П - (подлежащее), О - (определение), Д - (дополнение), ГП - (группа подлежащего), ГС - (группа сказуемого), ПГР - (предложение)};

S = {ПР - (предложение)}.

1.ПР -* (ГП) (ГС);

2.ГП - » (О) (П);

ЗГС —> (С) (Д);

Р= 4.0 —>(большая, мощная, грузовая);

5.П (машина);

6.С —> (везет, доставляет);

7.Д -> (контейнер, груз).

Построим некоторые цепочки языка:

ПР- ( 1 ) »(ГП) (Г С )-^ -Н О ) (П) (Г С )-^ -Н О ) (П) (С) (Д) И)

^большая (П) (С) (Д )—^-»болыыая машина (Г) (Д )—

^большая машина везет(Д)—^->большая машина везет контейнер.

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

Аналогично можно вывести цепочку ГРУЗОВАЯ МАШИНА ДОСТАВЛЯЕТ ГРУЗ и ряд других.

Заметим, что в этом примере нетерминальными символами являются синтаксические категории.

Вывод можно также описать структурным деревом, удовлетворяющим следующим требованиям:

1)каждая вершина дерева имеет в качестве метки символ из V;

2)корень дерева, т. е. вершина, в которую не входит не одна дуга, имеет метку S;

3)если вершина с меткой Д имеет хотя бы одну подчиненную вершину, то

ДеК

4)если некоторые п вершин с метками Д12,...,Д, подчинены

непосредственно вершине с меткой Д, то в Р существует правило Д —> Д1

Д».

Структурное дерево для примера 2 изображено на схеме:

0

п

с

д

1

I

I

I

большая

ывшнна

везет

контейнер

В лингвистике слова или последовательности, которые являются элементами какой-либо другой конструкции, называют составляющими. Поэтому структурное дерево называют маркером структуры составляющих или С-маркером.

Рассмотрим пример, показывающий, как можно использовать порождающую грамматику в качестве распознающей, т. е. способной определить, является ли рассматриваемая цепочка правильной в смысле данной грамматики (т. е. состоит ли она лишь из терминальных символов и математических операций).

Пример 3.

Пусть задана порождающая грамматика:

Т= {a,b},N = {5,р};5 = 5 ;/>= {1.5->5p;2.5->(flvA);3.p-»AJ

(знаки логического умножения (*) и сложения (v) - можно также включить в множество терминальных символов, но чаще их просто опускают).

Проверить, является ли цепочка ((avb)b)b правильной в смысле заданной грамматики.

Очевидно, что заданная цепочка является правильной, т. к. в заданной

грамматике существует вывод

 

S —^ - > 5 р — >Spp—^->(<7 v b)рр— — >(а v b)bp

v b)bb

Эта цепочка является правильной в смысле заданной грамматики.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]