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

Пособие ДМ2

.pdf
Скачиваний:
50
Добавлен:
31.05.2015
Размер:
1.54 Mб
Скачать

2.4.2. Моделирование автоматной функции с помощью схемы из функциональных элементов и задержки

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

Теорема 1. Схема из функциональных элементов и задержки осуществляет автоматное отображение.

Определение. Пусть автоматная функция отображает по-

следовательность конечного базиса A в последовательность B конечного базиса. Пусть СФЭЗΣ осуществляет преобразование последовательностей булевых векторов длины n в

последовательность с булевыми векторами длины m. Говорят, чтоΣ моделируетφ, если существуют отображения (кодирования) : и : , которые сопоставляют разным элементам алфавита разные векторы. Эти отображения обла-

дают

свойством: для

любой

последовательности ̅

 

в алфавите A , если

 

 

̅

̅

т (

̅ )

(̅),

где

̅

.

 

 

̅

 

 

 

 

 

 

Теорема 2. Для любой автоматной функции существует моделирующая ее СФЭЗ в функционально полной системе, состоящая из элементов дизъюнкции, конъюнкции, отрицания,

атакже элемента задержки.

2.4.3.Эксперименты с автоматами

Эксперимент с автоматами — это способ получений информации о внутренней структуре автоматов по их поведению. Основная задача экспериментов — получить сведения о стро-

ении автомата путем наблюдения его реакции на внешние воздействия.

Рассмотрим автоматы, в которых не выделены начальные состояния. В этом случае автомат задается пятеркой(A,S,B,φ, ).

обозначается множество всех конечных слов в алфавите.

Пусть автомат (A,S,B,φ,

)находится в состоянии и на вход

подаются слова ̅

. Тогда на выходе

будет некоторое слово ̅

и после подачи

всего слова автомат оказывается в

состоянии . Раcширяя

функции иψ, положим

̅

̅

̅

.

 

Определение 1. Два состояния

и

автомата (A,S,B,φ,

)

называются отличимыми, если существует

входное слово

̅

такое, что

̅

). При этом слово ̅ назы-

вается экспериментом,

отличающим от и

, а длину слова

I( ̅) называют длиной эксперимента.

 

 

 

Теорема 3 (Мури). Если в автомате (A,S,B,φ,

)состояния

и

отличимы и |S|=r, то существует эксперимент ̅, отличаю-

щий

и

 

длины

̅

.

 

 

Определение 2. Пусть

два автомата

 

и

 

 

 

, т.е. автоматы, имеющие одинаковые

входной и выходные алфавиты. Пусть

и

. Говорят,

что эксперимент ̅

 

отличает состояния, если

̅

).

 

 

 

 

 

 

Теорема

4.

Даны

два

автомата

 

и

 

 

 

 

 

причем

 

 

| |

|

|

и

 

. Тогда, если

состояния и

отличимы, то существует отличающий их эксперимент ̅ , длины которого ̅ .

2.5.Автоматные языки

2.5.1.Представление о формальных языках

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

Изучая языки, следует иметь в виду три основных аспек-

та.

Первый из них — синтаксис языка. Язык — это какое-то множество „слов", где „слово" есть определенная конечная последовательность „букв" — символов какого-то заранее фиксированного алфавита. Термины „буква" и „слово" могут пониматься по-разному (математическое определение этих терминов будет дано ниже). Так, „буквами" могут быть действительно буквы алфавита какого-нибудь естественного или формального языка, например русского языка или языка программирования „Паскаль". Тогда „словами" будут конечные последовательности „букв": „крокодил", integer". Такие слова называют „лексемами". Но „буквой" может быть „слово" („лексема") в целом. Тогда „слова" — это предложения естественного языка или программы языка программирования. Если фиксировано какое-то множество „букв", то не каждая их последовательность будет „словом", т.е. „лексемой" данного языка, а только такая последовательность, которая подчиняется определенным правилам. Слово „крыкадил" не является лексемой русского языка, а слово „iff" не является лексемой в „Паскале". Предложение „Я люблю ты" не является правильным предложением русского языка, точно так же,

как и запись „х:= =t," не есть правильно написанный оператор присваивания „Паскаля". Синтаксис* языка и представляет собой систему правил, в соответствии с которыми можно строить „правильные" последовательности „букв". Каждое слово языка характеризуется определенной структурой, специфичной именно для данного языка. Тогда необходимо, с одной стороны, разработать механизмы перечисления, или порождения, слов с заданной структурой, а с другой — механизмы проверки того, что данное слово принадлежит данному языку. Прежде всего именно эти механизмы и изучает классическая теория формальных языков.

Второй аспект — семантика языка. Семантика предполагает сопоставление словам языка некоего “смысла”, “значения”. Например, записывая математическую формулу, мы должны соблюдать определенные синтаксические правила (расстановка скобок, правописание символов, порядок символов и т.п.), но, кроме этого, формула имеет вполне определенный смысл, что-то обозначает.

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

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

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

2.5.2. Алфавит, слово, язык

Рассмотрим самое простое понятие теории языков — понятие алфавита.

Алфавит — это произвольное непустое конечное множество V {a1 ,..., an }, элементы которого называют буквами

или символами. Обычно задают определенную нумерацию алфавита (как, скажем, для русского алфавита: „а" — первая буква, „б" — вторая и т.д. до 33-й — „я"). Впредь договоримся, фиксируя алфавит, записывать его буквы в порядке их номеров.

Определение: Словом или цепочкой в алфавите V назы-

вают произвольный кортеж из множества V

k

(k декартовой

 

степени алфавита V) для различныхk = 0,1,2,...

Например, если V={а,b,с}, то (а), (b), (с), (а, b), (а, b, с),

(с, b, а, а, с) и т.д. есть слова в V.

При k = 0 получаем пустой кортеж, называемый в дан-

ном контексте пустым словом или пустой цепочкой и обо-

значаемый Л. Множество всех слов в алфавите V обозначают

V

 

, а множество всех непустых слов в V — как

V

 

. Слова,

 

 

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

Такая запись слова согласуется с его интуитивным пониманием как цепочки следующих друг за другом символов. Тогда пустое слово — это слово, не имеющее символов, „пустой лист бумаги", на котором еще ничего не написано.

По определению, длина слова V) — число компонент кор-

тежа, т.е. если V

r

то длина слова равна r. Длину слова

 

 

договоримся обозначать | |. Ясно, что для пустого слова |

 

| = 0. Длину слова тем самым можно понимать как число

составляющих это слово букв.

Докажем, что множество V*счетно. Для этого достаточно построить какую-либо нумерацию этого множества. Рассмотрим здесь нумерацию, называемую лексикографической.

В данной нумерации пустому слову присваивается номер

0, а буквам

a1 ,..., an алфавита V — номера 1, ..., n соответ-

ственно. Если слово х имеет лексикографический номер lx , то

слову

xai присваивается номер

 

nlx

i . Отсюда следует, что

лексикографический номер слова

ai

,..., ai

будет равен

 

 

 

 

 

 

 

1

 

k

 

 

n

k 1

n

k 2

i

 

... i

 

 

 

i

 

2

k

 

 

 

1

 

 

 

 

 

 

Заметим, что последняя сумма напоминает запись числа в системе счисления по модулю n(мощности алфавита) с тем

лишь различием, что используется цифра n, но не допускается цифра 0. Итак, по любому слову в алфавите V однозначно вычисляется его лексикографический номер. Обратно, любое натуральное число однозначно раскладывается по степеням пуказанным выше образом.

Действительно, если дано число N, то при 0 N n оно служит номером пустого слова = 0) или некоторой буквы алфавита. Иначе представим N в виде

 

N k n r

 

 

 

 

 

1

0

 

 

где 0 r0 n .

 

 

 

 

 

Если

k1 n , то N есть номер слова

ak

ar

 

 

 

 

 

1

0

дываем k1

в виде

 

 

 

 

 

 

k

k

n r

 

 

 

1

 

2

1

 

 

где 0 r1 n . Тогда

 

 

 

 

 

 

N k

n2 r n r

 

 

 

2

 

1

0

 

. Иначе раскла-

С числом

k

2

 

поступаем точно так же, как и с

k

1

 

. После

конечного числа шагов получим разложение числа N в виде

N n

m

r

n

m 1

r

... nr r

 

 

 

 

m

 

 

m 1

1

0

где каждое число ri (0 i m) находится в диапазоне от 1

до n.

По полученному разложению N однозначно восстанавливается слово в V, имеющее номер N:

a

r

a

r

...a

r

a

r

 

m

 

m 1

 

1

 

0

2.5.3. Классификация грамматик и языков

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

1.Грамматики типа 0, или грамматики общего вида.

Здесь на правила вывода не накладывается никаких дополнительных ограничений.

2.Неукорачивающие грамматики. Каждое правило такой

грамматики имеет вид

, где

| | |

|

. Таким обратзом,

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

3. Контекстно-зависимые грамматики (К3-

грамматики). Грамматику называют контекстно-зависимой грамматикой (КЗ-грамматикой), если любое ее правило вывода имеет вид A , где А — нетерминал, — неко-

торая цепочка, . Каждое такое правило, называемое КЗправилом, позволяет заменить нетерминал А в „контексте", образуемом цепочками и в объединенном алфавите, непустой цепочкой . Иногда цепочку называют левым кон-

текстом, а цепочку — правым контекстом данного КЗ-

правила. Из определения видно, что каждая КЗ-грамматика является неукорачивающей.

Если в КЗ-правиле снять требование непустоты цепочки

, то получим грамматику, которую называют обобщенной

КЗ-грамматикой (или, коротко, О КЗ-грамматикой).

4.

Контекстно-свободные грамматики (КС-

грамматики). Каждое правило такой грамматики имеет вид A , т.е. левая часть каждого правила вывода есть нетерминал, а правая — произвольная (может быть и пустая) цепочка в объединенном алфавите. С практической точки зрения это наиболее важный класс грамматик, поскольку именно в терминах КС-грамматик описывается синтаксис языков программирования.

5. Линейные грамматики. Каждое правило такой грамматики имеет вид A uBv или A u т.е. в правой части правила может содержаться не более одного вхождения нетерминала. Если во всех правилах вида A uBv имеет место v , то грамматика называется праволинейной, а если u

леволинейной.

2.5.4. Понятие формальной грамматики

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

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

1)Грамматики порождающие — это системы правил, позволяющие строить предложения языка.

2)Грамматики распознающие — это алгоритм,

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

Определение. Порождающей грамматикой называется четверка (V,T,P,A), где V — конечный алфавит, состоящий из символов, - подмножество терминальныхсимволов, - выделенный нетерминальный символ, обозначающий совокупность всех порождаемых объектов; P- конечное

множествоправил порождения вида u→ν, где u — непустая строка нетерминальных символов, а ν — некоторая строка. Множество всех строк терминальных символов, которые можно получить применением правил порождения, называется языком. Оно является подмножеством множества — всех строк символов из T.

В приложениях к грамматике естественных языков терминальными считаются обычные слова, а символы из — есть названия частей речи и других грамматических категорий. Правила порождения здесь могут быть следующего типа А = <предложение> →<подлежащее><сказуемое> и правила подстановки типа <подлежащее> →<мальчик> и <сказуемое>→ <улыбается>. Строки терминальных символов языка являются грамматически правильными предложениями.

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

Рассмотри примеры порождающих грамматик с ,т.е. грамматик с единственной грамматической категорией.

1.

Пусть

и P состоит из двух правил порождения

 

,

. Эта грамматика

порождает язык

 

 

, т.е. Множество

состоит из всех

 

конечных строк, составленных из символа C.

2.

Пусть

и P состоит из следующих правил

 

порождения:

 

 

 

 

,где

— пустая строка,

которая подчиняется

правилу

 

 

 

 

, т.е. она

 

 

 

 

исчезает в любой непустой строке. Эта грамматика

порождает пустую строку и две двоичные

последовательности

вида

 

,где

 

 

 

 

, а

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

— обращение строки

 

.

 

3. Пусть

и P состоит из

правил

порождения

,

. Она порождает

язык

.

4.Пусть , а P состоит из правил порождения

,, . Она порождает язык,

состоящий из всех строк в,

закончившихся на b.

Определение. Правило порождения

называетсякон-

текстно -свободным, если оно применимо к любой строке вида и дает строку . Язык, который порождается лишь контекстно-свободными правилами, называется контекстносвободным.

Если разрешается применять правило к строке лишь при некоторых a,b, то это правило называется зависящим от контекста. Заметим при этом, что правила естественных языков в сильной степени зависят от контекста. Искусственные языки обычно являются контекстно-свободными.

2.5.5. Автоматные грамматики.

Рассмотрим языки, которые «принимаются» или «распознаются» автоматами с конечным числом состояний. Такой после считывания символа в состоянии s переходит в новое состояние . Считав последний символ, автомат останавливается. Если он остановился в одном из «принимающих» состояний из отмеченного множества F, входная строка считается принятой. Есликонечное состояние автомата лежит в , то строка считается отвергнутой. Рассмотрим формальное определение.