Эквивалентность классов автоматов Мура и Мили
Каждому автомату Мили, соответствует эквивалентный ему автомат Мура.
Каждому автомату Мура, соответствует эквивалентный ему автомат Мили.
Следовательно классы автоматов Мили и Мура эквивалентны
Построение автомата Мили по автомату Мура.
Из совмещенной таблицы автомата Мура выделить таблицу выходов, в которой каждому состоянию будет во всех строках (x) соответствовать одно и тоже значение выходного сигнала.
Если автомат задан графом, то обозначение выходного сигнала выносится из узла и добавляется на каждую входящую в состояние дугу.
Если автомат при входе в состоянии s может генерировать k различных выходных сигналов {yi1,yi2….,yik}, то состояние s расщепляется на k состояний {(s1/yi1)(s2/yi2),…,(sk/yik)}.
Если для состояния s автомат Мили и некоторого входного сигнала xt
· δ(s, xt)=p,
· λ(s, xt)=yt,
то для эквивалентного ему автомата Мура должно быть справедливо
· δ((s1/yi1), xt)=(pj1/yt)
· δ((s2/yi2), xt)= (pj2/yt)
· ………….
· δ((sk/yik), xt)= (pjm/yt)
Алфавит. Цепочки. Операции над цепочками. Понятие языка. Свойства языков. Примеры языков. Конструкторы и распознаватели языка.
Под алфавитом å будем понимать непустое конечное множество символов.
Цепочка, или строка – это последовательность символов некоторого алфавита, при этом символы в строке могут повторяться. Для цепочки важен ее состав, порядок символов и их количество.
Длиной цепочки является количество символов в ней.
Две цепочки α и β совпадают (равны): α = β, если они имеют один и тот же состав и порядок символов и их количество.
Цепочка, не содержащая символов, называется пустой цепочкой, обозначается через ε или λ.
Любая последовательно взятая часть цепочки является ее подцепочкой, собственный суффикс – это часть строки, содержащая ее последний символ и не содержащая первого, собственный префикс – это часть строки, содержащая первый символ и не содержащая последнего.
Над цепочками можно выделить следующие операции:
Конкатенацией, или сцеплением (сложением) цепочек, называется строка, полученная их объединением. Свойства: Так как в цепочке важен порядок символов, очевидно, что операция сложения не коммутативна. Конкатенация ассоциативна.
Обращение цепочки x – это запись ее символов в обратном порядке, обозначается xR.
Итерация цепочки n раз – это ее сцепление (повторение) n раз, обозначается an.
Свойства пустой цепочки
· | ε | = 0;
· ∀ α: ε α = α ε = α;
· ε R = ε;
· ∀ n≥0: ε n = ε ;
· ∀ α: α 0 = ε.
Определение языка.
Если å – некоторый алфавит, то:
· å+ – множество всех цепочек над алфавитом å без ε.
· å* – множество всех цепочек над алфавитом å, включая ε.
Языком L над алфавитом Σ называют произвольное множество цепочек из символов этого алфавита. Такой язык принято обозначать L(Σ).
Свойства языков:
· Для любого языка L(Σ) справедливо L(Σ) Í Σ*.
· Язык L(Σ) включает в себя язык L¢(Σ): L¢(Σ) Í L(Σ), если "aÎL¢(Σ) aÎL(Σ).
· Два языка совпадают (эквивалентны): L¢(Σ) = L(Σ), если L¢(Σ) Í L(Σ) и L(Σ) Í L¢(Σ).
· Конкатенацией (объединением) языков L1 и L2 называют язык L, состоящий из всевозможных сцеплений цепочек языков L1 и L2: L = L1·L2 = {x·y | x Î L1, y Î L2}.
· Замыкание Клини, или итерация языка L, обозначается L* и определяется рекурсивно: L0 = { ε }, ; Ln = L·Ln-1 для n > 0, L* = È Ln для всех n ³ 0.
Примеры языков:
Алфавит Σ = {a, b}.
· L1= ∅ — пустой язык;
· L2={e} - язык, содержащий только пустую цепочку (L1 и L2 - различные языки)
· L3 - язык, содержащий цепочки из a и b, длина которых не превосходит 2
· L4 - язык, включающий всевозможные цепочки из a и b, содержащие четное число a и четное число b
· L5 - язык цепочек из a, длины которых представляют собой квадраты натуральных чисел.
Cпособы задания языка:
· Перечисление всех допустимых цепочек языка (нереализуем для языков, содержащих бесконечное число цепочек).
· Указание способа порождения цепочек языка– применение т.н. генератора или конструктора.
· Задание метода распознавания цепочек языка – применение распознавателя.
Конструкторы языка представляют собой набор правил, по которым можно построить все слова языка и нельзя построить слово никакого другого языка. К конструкторам относятся грамматики, синтаксические диаграммы, регулярные выражения.
Распознаватель языка– некоторое абстрактное устройство. Подавая на его вход любое слово, от распознавателя получают ответ – принадлежит ли это слово языку. К распознавателям относятся различного вида конечные автоматы.
Определение порождающей грамматики. Терминальные и нетерминальные символы, правила, целевой (начальный) символ. Понятия вывода, выводимости, сентенциальной формы грамматики. Язык, порождаемый грамматикой.
Порождающей грамматикой G называется четверка G(T,N,P,S), где
T – конечное множество терминальных (основных) символов представляет собой алфавит языка, то есть из терминальных символов и состоят цепочки языка, порождаемого грамматикой. Будем обозначать терминальные символы малыми латинскими буквами.
N – конечное множество нетерминальных символов представляет собой вспомогательный алфавит, то есть это символы, которые используются при описании языка, но не входят в алфавит языка (слова, понятия, конструкции языка). Будем обозначать нетерминальные символы заглавными латинскими буквами.
P – множество правил вывода (продукций) вида a ® b, aÎV+, bÎV*, где V=TÈN–полный алфавит грамматики G.
SÎN – начальный (целевой) нетерминальный символ грамматики G, с которого начинается процесс порождения цепочек языка.
Выводимость.
Выводом называется процесс порождения цепочек языка на основе правил определяющей язык грамматики.
Цепочка b=d1gd2 называется непосредственно выводимой из цепочки a=d1wd2 (aÞb)в грамматике G d1,g,d2ÎV*,wÎV+,если в грамматике G существует правило w ® g.
Другими словами цепочка b выводима из цепочки a в том случае, если можно взять несколько символов в цепочке a, заменить их на другие символы согласно правилу грамматики и получить при этом цепочку b.
Цепочка b называется выводимой из цепочки a – обозначается a Þ* b, если выполняется одно из двух следующих условий:
§b непосредственно выводима из a: a Þ b;
§$g, такая, что: g выводима из a и b непосредственно выводима из g (a Þ* g и g Þ b).
Другими словами b выводима из цепочки a, если она либо непосредственно выводима, либо можно построить последовательность непосредственно выводимых цепочек от a к b: aÞg1Þg2Þ...Þgi Þ gi+1 Þ...gn Þb
Вывод называется левосторонним (правосторонним), если в нем на каждом шаге вывода правило грамматики применяется к самому левому (правому) нетерминальному символу в цепочке.
Вывод называется законченным, если из полученной цепочки нельзя сделать более ни одного шага, т.е. если полученная цепочка пустая или содержит только терминальные символы грамматики.
Сентенции.
Цепочка символов aÎV* называется сентенциальной формойграмматики G(T,N,P,S), если она выводима из целевого символа грамматики S: S Þ* a. Если цепочка получена в результате законченного вывода, она называется сентенцией.
Например, цепочка aabb является сентенцией грамматики G1.
Язык, порождаемый грамматикой – это множество всех сентенций этой грамматики.
n Очевидно, что язык порождаемой грамматикой G1 можно описать как L(G1)={anbn| n³0}.