Ключевые автоматы

44
Ключевые автоматы

description

Ключевые автоматы. Определение 14.6. Как было отмечено ранее, конечные автоматы являются простейшими распознавателями. Конечный автомат является моделью лексического анализатора языка. Недетерминированный конечный автомат – это пятерка M=(Q,  ,  , q0, F), где. - PowerPoint PPT Presentation

Transcript of Ключевые автоматы

Page 1: Ключевые автоматы

Ключевые автоматы

Page 2: Ключевые автоматы

Определение 14.6

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

• Недетерминированный конечный автомат – это пятерка M=(Q, , , q0, F), где

Page 3: Ключевые автоматы

• Q – конечное множество состояний управляющего устройства;

– конечное множество допустимых входных символов (алфавит входной ленты);

: Q 2Q (отображение множества Q в множество всех подмножество множества Q) - функция переходов конечного автомата;

• q0 Q – начальное состояние управляющего устройства;

• F Q – множество заключительных состояний.

Page 4: Ключевые автоматы

• Для того, чтобы определить будущее поведение конечного автомата, нужно знать лишь:

• текущее состояние управляющего устройства и

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

Page 5: Ключевые автоматы

Определение 14.7

• Если М = (Q, , , q, F) – конечный автомат, то пара (q,) Q * называется конфигурацией автомата М.

Определение 14.7

• Конфигурация (q0, ) называется начальной, а конфигурация (q, ), где qF, а - пустая цепочка, называется заключительной (или допускающей).

Page 6: Ключевые автоматы

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

• Такт автомата М представляется бинарным отношением |-M (или |-, если М подразумевается). Определим отношение |- следующим образом.

Page 7: Ключевые автоматы

Определение 14.9

• Будем говорить, что между двумя конфигурациями (q, a) и (q', ) имеет место отношение |- (записывается как (q, a) |- (q', )), если q' (q, a).

• Наличие отношения |- между двумя конфигурациями конечного автомата говорит о том, что если М находится в состоянии q, и входная головка обозревает символ a, то автомат М может сделать шаг, за который он переходит в состояние q' и сдвигает головку на один символ вправо.

Page 8: Ключевые автоматы

• Запись C |- 0M C' означает, что C=C', а C0 |- kM Ck (для k1) – что существуют такие конфигурации C1,…,Ck, что Ci |-M Ci+1 для всех 0i<k, C |- +M C' означает, что C |- kM C' для некоторого k1, а C |- *M C'– что C |- kM C' для k0.

• Таким образом, отношения |- +M, |-*M являются транзитивным и рефлексивно-транзитивным замыканием отношения |-M.

Page 9: Ключевые автоматы

Определение 14.10

• Будем говорить, что автомат М допускает цепочку , если (q0, ) |- *(q, ) для некоторого qF.

Определение 14.10

• Языком, определяемым (распознаваемым, допускаемым) автоматом М (обозначается L(M)), называется множество входных цепочек, допускаемых автоматом М, т. е.

• L(M)={ | * и (q0, ) |-* (q, ) для некоторого qF}

Page 10: Ключевые автоматы

• Язык, допускаемый конечным автоматом, будем называть конечно-автоматным языком.

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

• Одним из способов представления конечных автоматов является таблица переходов. Информация размещается в таблице переходов в соответствии со следующими соглашениями:

Page 11: Ключевые автоматы

• Столбцы помечены входными символами.• Строки помечены символами состояний.• Элементами таблицы являются множества

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

• Первая строка помечена символом начального состояния.

• В детерминированном автомате строки, соответствующие заключительным состояниям, помечены справа единицами.

Page 12: Ключевые автоматы

• Пример 14.1. • Пусть М=({p, q, r}, {0,1}, , p, {r}) – конечный

автомат, где задаётся следующей таблицей переходов:

Page 13: Ключевые автоматы

• М допускает все цепочки нулей и единиц, содержащие два стоящих рядом нуля.

• Начальное состояние p можно интерпретировать так: «два стоящих рядом нуля еще не появились, и предыдущий символ не был нулем».

• Состояние q означает, что «два стоящих рядом нуля еще не появились, но предыдущий символ был нулем».

• Состояние r означает, что «два стоящих рядом нуля уже появились».

• Заметим, что, попав в состояние r, автомат М остается в этом состоянии.

• Для входа 01001 единственной возможной последовательностью конфигураций, начинающейся конфигурацией (p,01001), будет

Page 14: Ключевые автоматы

• (p,01001) |– (q,1001) • |– (p,001)• |– (q,01)• |– (r,1)• |– (r, )• Таким образом, 01001 L (M).

• Часто бывает удобным использовать графическое представление конечного автомата в виде диаграммы (пример такого представления приведен на рис. 14.2).

Page 15: Ключевые автоматы

Определение 14.12• Пусть M = (Q, , , q0, F) – недетерминированный

конечный автомат. Диаграммой (или графом переходов) автомата М называют неупорядоченный помеченный граф, вершины которого помечены именами состояний и в котором есть дуга (p, q), если существует такой символ a , что q (p,a). Кроме того, дуга (p, q) помечается списком, состоящим из таких a, что q (p,a). Начальное состояние указывается на диаграммах направленной в него стрелкой, помеченной словом "начало", а заключительные состояния обводятся кружком.

Page 16: Ключевые автоматы

Определение 14.13

• Назовем автомат M = (Q, q0, F) детерминированным, если для любой пары q Q и a множество (q,a) содержит не более одного состояния для любых q Q и a .

Page 17: Ключевые автоматы

Определение 14.14• Пусть M = (Q, q0, F) - конечный автомат. Если

для любой пары q Q и a множество (q, a) не пусто, то автомат M назовем полностью определенным.

• Таким образом, можно ввести следующую классификацию конечных автоматов:

• 1. Недетерминированный не полностью определенный: для всех пар q Q и a имеет место ((q,a)) 0, причем существует хотя бы одна пара q Q и a такая, что ((q,a)) = 0, а также хотя бы одна пара q' Q и a' такая, что ((q',a')) > 1.

Page 18: Ключевые автоматы

• 2. Недетерминированный полностью определенный: для всех пар q Q и a имеет место ((q,a)) > 0, причем существует хотя бы одна пара q' Q и a' такая, что ((q',a')) > 1.

• 3. Детерминированный не полностью определенный: для всех пар q Q и a имеет место ((q,a)) 1, причем существует хотя бы одна пара q Q и a такая, что ((q,a)) = 0.

• 4. Детерминированный полностью определенный: для всех пар q Q и a имеет место ((q,a)) = 1.

• Конечный автомат примера 15.1. является полностью определенным детерминированным автоматом.

Page 19: Ключевые автоматы

Определение 14.15

• Состояние p называется достижимым, если существует такая цепочка w, что (q0, w) |– * (p, ).

Определение 14.16• Назовем два конечных автомата M и M' эквивалентными, если

имеет место L(M) = L(M') (т.е. два конечных автомата являются эквивалентными, если они допускают одинаковые языки).

Page 20: Ключевые автоматы

Теорема 14.1• Если L = L(M) для некоторого недетерминированного

конечного автомата M, то L= L(M') для некоторого детерминированного конечного автомата M'.

• Доказательство. Пусть M = (Q, q0, F). Построим M' = (Q', ' q'0, F') следующим образом:

• Q' есть множество всех подмножеств Q, т.е. состояниями автомата M' являются множества состояний автомата M;

• q'0 = {q0};• F' состоит из всех таких подмножеств S множества Q,

что S F ; '(S,a) = S' для всех S Q, где S' = {p p (q,a) для

некоторого q S}.• Легко показать, что оба автомата эквивалентны. • Далее будем говорить только о детерминированных

конечных автоматах.

Page 21: Ключевые автоматы

Лемма 14.1• Если L = L(M) для некоторого конечного автомата M,

то L = L(G) для некоторой праволинейной грамматики G.

• Доказательство. Пусть M = (Q, q0, F) – конечный (детерминированный) автомат. Возьмем грамматику G = (Q, , P, q0), где схема P определяется следующим образом:

• q ar P, если (q,a) = r,• p P, если p F.• Покажем индукцией по i, что • (*) q i+1 w для q Q тогда и только тогда, когда

(q,w) |– i (r, ) для некоторого r F.

Page 22: Ключевые автоматы

• Базис для i = 0 очевиден, т.е. q тогда и только тогда, когда (q, ) |– 0 (q, ) для q F.

• Шаг индукции. Предположим, что (*) истинно для i. Покажем что (*) истинно для i+1. Возьмем w = ax, где x = i. Тогда q i+1 w равносильно тому, что q as i ax для некоторого s Q. По определению грамматики q as равносильно (q,a) = s. По предположению индукции s i x тогда и только тогда, когда (s, x) |– i-1 (r, ) для некоторого r F. Следовательно, q i+1 w равносильно (q,w) |– i (r, ).

• Отсюда заключаем, что q + w тогда и только тогда, когда (q0,w) |– * (r, ) для некоторого r F. Таким образом, L(M) = L(G).

Page 23: Ключевые автоматы

Лемма 14.2• Пусть - конечный алфавит. Множества ,

{}, {a} для всех a являются конечно-автоматными языками.

• Доказательство. • Любой конечный автомат с пустым

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

• Пусть M = ({q0}, q0, {q0}), где ((q,a)) = 0 при всех a . Тогда L = {}.

• Пусть M = ({q0, q1}, q0, {q1}), где ((q0,a)) = q1, а в остальных случаях функция не определена. Тогда L = {a}.

Page 24: Ключевые автоматы

Лемма 14.3• Пусть L1 = L(M1) и L2 = L(M2) для конечных автоматов M1 и M2.

Множества L1 L2, L1 L2, L1* являются конечно-автоматными языками.

• Доказательство. Пусть M1 =(Q1, 1, 1, q1, F1) и M2 =(Q2, 2, 2, q2, F2), Q1Q2=

• I. Построим конечный автомат M, допускающий язык L1 L2: M = (Q1 Q2 {q0}, , , q0, F), где

• - = 1 2;

• - q0 Q1 Q2 – новое состояние;• - если L1 L2, то F = F1 F2;• - если L1 L2, то F = F1 F2 {q0};• - для всех q Q1 и a определим (q, a) = 1(q, a);

Page 25: Ключевые автоматы

• - для всех q Q2 и a определим (q, a) = 2(q, a);• - для всех a определим (q0, a) = (q1, a) (q2,

a).• Таким образом, данный автомат из начального

состояния может перейти к моделированию автомата M1 либо автомата M2.

• II. Построим конечный автомат M, допускающий язык L1 L2:

• M = (Q1 Q2, , , q1, F), где• (1) = 1 2;• (2) если q2 F2, то F = F2;• (3) если q2 F2, то F = F1 F2;• (4) для всех q Q1 \ F1 и a 1 определим (q, a) =

1(q, a);

Page 26: Ключевые автоматы

• (5) для всех q F1 и a 1 2 определим (q, a) = 1(q, a) 2(q2,a);

• (6) для всех q Q2 и a 2 определим (q, a) = 2(q, a).

• Таким образом, автомат M начинает работу с моделирования M1, а когда приходит в заключительное состояние автомата M1, может начать моделировать автомат M2.

• Докажем, что L(M) = L1 L2.• Вначале докажем L1 L2 L(M). Пусть x L1, y L2

(xy L1L2). Тогда (q1,xy) |–M *(q, y) для некоторого q F1. Если x = , то q = q1. Если y, то, применяя один раз (4) и нуль или более раз (5), получим (q,y) |–M+ (r,) для некоторого r F2. Если y = , то q2 F2 и, следовательно, q F, xy L(M) и L1L2 L(M).

Page 27: Ключевые автоматы

• Теперь докажем L(M) L1L2. Пусть w L(M). Тогда (q1,w) |–M+ (q,) для некоторого q F. Возможные случаи: q F1 либо q F2.

• Пусть q F2, тогда w = xay для a , причем (q1, xay) |–M* (r, ay) |–M (s, y) |–M*(q, ), где r F1, s Q2, s 2(r, a), следовательно, x L1, ay L2, w L1L2.

• Пусть q F1, тогда q2 F2 и L2, следовательно, w L1, w L1L2 и L(M) L1L2 , из чего следует, что L(M) = L1L2.

• III. Построим конечный автомат M, допускающий язык L1*:

• M = (Q1 {q'}, 1, , q', F1 {q'}), где q' – новое состояние (q'Q1), а функция переходов определяется следующим образом

Page 28: Ключевые автоматы

• (1) для всех q Q1 \ F1 и a 1 определим (q, a) = 1(q, a);

• (2) для всех q F1 и a 1 определим (q, a) = 1(q, a) 1(q1,a);

• (3) для всех a 1 определим (q', a) = 1(q1, a).

• Таким образом, когда M попадет в заключительное состояние, автомата M1, он может либо продолжить моделирование автомата M1, либо начать заново моделировать M1 с начального состояния. Цепочка L(M), т.к. q' F – заключительное состояние для автомата M.

Page 29: Ключевые автоматы

Теорема 14.2

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

• Доказательство следует из предыдущих лемм

Задание 15

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

• По данному конечному автомату M можно построить наименьший эквивалентный ему конечный автомат.

Page 30: Ключевые автоматы

Определение 14.17

• Пусть М=(Q, , , q0, F) – конечный автомат, а q1 и q2 – различные его состояния. Будем говорить, что цепочка x * различает состояния q1 и q2, если (q1, x) |–* (q3, ), (q2, x) |–* (q4, ) и одно из состояний q3 или q4 принадлежит F (является заключительным), а другое нет.

Определение 14.18• Будем говорить, что состояния q1 и q2 являются k-

неразличимыми (и писать q1 k q2), если не существует цепочки x, длина которой |x| k, которая бы различала q1 и q2.

Page 31: Ключевые автоматы

Определение 14.19

• Будем говорить, что состояния q1 и q2 неразличимы (и писать q1q2), если они k-неразличимы для любого k0.

Определение 14.19

• Состояние qQ называется недостижимым, если не существует такой входной цепочки x, что (q0, x) |–* (q, ).

Page 32: Ключевые автоматы

Определение 14.21

• Автомат М называется приведённым (каноническим), если множество Q не содержит недостижимых состояний и не существует двух неразличимых состояний.

Лемма 14.4• Пусть M = (Q, , , q0, F) — конечный автомат с n

состояниями. Состояния q1 и q2 неразличимы тогда и только тогда, когда они (n–2)-неразличимы.

Page 33: Ключевые автоматы

• Доказательство. • Необходимость условия тривиальна. Достаточность

тривиальна в тех случаях, когда F имеет 0 или n элементов.

• Покажем, что n-2 n-3... 2 1 0• Для этого заметим, что для любых состояний q1 и q2 • 1) q1 0 q2 тогда и только тогда, когда q1 и q2

оба либо принадлежат, либо не принадлежат F.• 2) q1 k q2 тогда и только тогда, когда q1 k–1

q2 и (q1,a) k–1 (q2,a) для всех a .• Отношение 0 грубейшее, оно разбивает Q на два

класса: F и Q\F.

Page 34: Ключевые автоматы

• Если k+1 k, то отношение k+1 тоньше, чем k, т.е. в нем по крайней мере на один класс эквивалентности больше, чем в k. Так как каждое из множеств содержит не более, чем (n-1) элементов, то можно получить не более (n-2) последовательных уточнений отношения 0. Если же k+1 = k, то в силу условия (2) k+1 = k+2 = ... . Таким образом, это первое из отношений k, для которых k+1 = k. Лемма доказана.

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

Page 35: Ключевые автоматы

Алгоритм 14.1• Построение канонического конечного автомата.• Вход: Конечный автомат M = (Q, , , q0, F).• Выход: Эквивалентный приведенный конечный

автомат M'.• Метод.• Шаг 1.Устранить все недостижимые состояния.• Шаг 2.Строить отношения эквивалентности 0, 1,

…, как описано в лемме 14.4. до тех пор, пока не будет найдено k, такого что отношение k+1 совпадет с отношением k. Взять в качестве отношения отношение k.

Page 36: Ключевые автоматы

• Шаг 3. Построить конечный автомат M'=(Q', , ', q0', F'), где

• а) Q' — множество классов эквивалентности отношения (обозначим через [p] класс эквивалентности отношения , содержащий состояние p);

• б) ([p],a) = [q], если (p,a) = q;• в) q0' — это [q0];• г) F' = {[q] | qF}.

Page 37: Ключевые автоматы

• Пример 14.2. Пусть конечный автомат задан таблицей 14.1.

• Отношения k для k 0 имеют следующие классы эквивалентности:

• классы отношения 0 : {A,F},{B,C,D,E}• классы отношения 1 : {A,F},{B,E},{C,D}• классы отношения 2 : {A,F},{B,E},{C,D}• Так как 2 = 1, то = 1. Приведенным

автоматом M' будет автомат ({[A],[B],[C]},{a,b},',A,{[A]}), где функция ' определяется таблицей 14.2.

Page 38: Ключевые автоматы
Page 39: Ключевые автоматы

Теорема 14.3

• Здесь мы выбрали [A] для представления класса {A,F}, [B] — для представления {B,E} и [C] — для {C,D}.

• Автомат M', который строится алгоритмом 14.1, имеет наименьшее число состояний среди всех конечных автоматов, допускающих язык L(M).

Page 40: Ключевые автоматы

• Разрешимые проблемы, связанные с конечными автоматами:

• Проблема принадлежности: «Даны определенного типа описание языка и цепочка w; принадлежит ли w этому языку?»

• Проблема пустоты: «Дано определенного типа описание языка; пуст ли этот язык?»

• Проблема эквивалентности: «Даны два описания одинакового типа; определяют ли они один и тот же язык?»

Page 41: Ключевые автоматы

Алгоритм 14.2

• Решение проблемы принадлежности для конечных автоматов.

• Вход: конечный автомат M=(Q, , , q0, F) и цепочка w*.

• Выход: «Да», если wL(M); «Нет», если wL(M).

• Метод: Пусть w=a1a2 … an. Найти последовательно состояния q1=(q0, a1), q2=(q1, a2), … , qn=(qn-1, an). Если qnF, сказать «Да»; если qnF, сказать «нет».

Page 42: Ключевые автоматы

Алгоритм 14.4

• Решение проблемы пустоты для конечных автоматов.

• Вход: конечный автомат M=(Q, , , q0, F).

• Выход: «Да», если L(M); «Нет» в противном случае.

• Метод: Вычислить множество состояний, достижимых q0. Если это множество содержит какое-нибудь заключительное состояние, то сказать «Да», в противном случае сказать «нет».

Page 43: Ключевые автоматы

Алгоритм 14.4• Решение проблемы эквивалентности для конечных

автоматов.• Вход: два конечных автомата• M1=(Q1, 1, 1, q1, F1) и• M2=(Q2, 2, 2, q2, F2), таких, что Q1Q2=.• Выход: «Да», если L(M1) = L(M2); «Нет» в

противном случае.• Метод: Построить конечный автомат

M=(Q1Q2, 12, 12, q1, F1F2). С помощью леммы определить, различимы ли состояния q1 и q2. Если да, то сказать «Нет», в противном случае сказать «Да».

Page 44: Ключевые автоматы

Задание 16

• Привести пример конечного автомата. Описать допускаемый им язык. Построить для него канонический конечный автомат.