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

298

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

Каждой грамматике G = (Г, N, Р, S) однозначно соответствует язык /.(G), порожденный данной грамматикой. При этом один и тот же язык может порождаться различными грамматиками.

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

Пример 4.

Рассмотрим порождающую грамматику G с

Т = {<7,6,с}; N= {8,а,р,а,,р,}; S = 6 и правилами

1.б->а,8а,

2.8 -> а Д с,

3.с а —►(Зс,

Р = 4. р -» я,

5 Pi -► Ь, 6.6(7 -> 6(3,с, 7.сц —►#.

Эта грамматика порождает язык /.(G) = {д"Л"с" |л=1,2, ...). Например, цепочка

о У с2 в данной грамматике, на каждом шаге

которого последовательно

применяются продукции (правила перехода из Р) 1,2,3,4,5,6,5,7,7-

8 —^ - > а ,8 а —^ - ► ц а Д с а —^ -> а,аД (З с —

}ас

—— >0\0фас—^ - > а ,а ,/Д сс —^ -> а ,а , bbcc

{1--->аа^Ьсс^[-+aabbcc.

Чтобы получить другие цепочки языка /.(G) = {a"ti'c\ // -1,2,... нужно изменить порядок (последовательность) применения продукции.

Так, для п =1 получим цепочку uhc

8 — >а,Р,с—^ - » я Р ,с —{^—>abc.- И так далее.

1.4.Классификация порождающих грамматик и языков

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

Грамматики типа 0 (нуль) - это грамматики, в которых не накладывается никаких ограничений на правила вывода ф—му, где ф и vy могут быть любыми цепочками из V(V= TL>N).

Грамматики типа 1 - это грамматики, в которых содержатся правила ф-»\у, удовлетворяющие условиям ф = фИф2, \у = Ф1СОФ2, где А - нетерминальный символ, а ф, фь фг, vy и о) - цепочки из словаря V. Таким образом, в грамматиках типа 1 отдельный нетерминальный символ А переходит в непустую цепочку о) можно заменить на (О) только в контексте ф|, ф2. Цепочки ф1 и ф2 иногда называют левым и правым контекстами данной продукции.

Грамматики типа 1 называют контекстными или контекстно-зависимыми (КЗ-грамматика).

Язык L(G), порождённый КЗ-грамматикой, называется контекстно­ зависимым языком (КЗ-язык).

Грамматики типа 2 - это грамматики, в которых допустимы лишь правила вида А->(й, где AeN (нетерминальный символ), а 0) - любая непустая цепочка из V (т. е. /4—>0) в любом контексте). Грамматики типа 2 называются бесконтекстными или контекстно-свободными (КС).

Язык L(G), порождённый КС-грамматикой, называется контекстносвободным языком (КС-язык).

Грамматики типа 3 имеют правила вида А->аВ либо А->Ь, где A,BeN': a,beT. При этом А, В, а, b являются одиночными символами (не цепочками) соответствующих словарей. Такие грамматики называются автоматными или регулярными, а язык, порождённый такой грамматикой, называется автоматным или регулярным.

Кроме рассмотренной, существуют ещё и другие классификации грамматик. Приведем наиболее важные из них.

Грамматика непосредственно составляющих (НС-грамматика) - эта грамматика имеет правила вида ф/liy-Mp со\у или Л -хо, где AeN: (О, ф, vy - произвольные цепочки.

Очевидно, что НС-грамматика может быть как контекстно-зависимой (КЗ), так и контекстно-свободной (КС).

Класс грамматик непосредственно составляющих (НС) значительно шире классов контекстно-зависимых (КЗ) и контекстно-свободных (КС) грамматик.

Любая КС-грамматика (КЗ-грамматика) есть НС-грамматика (но не наоборот!).

В НС-грамматике на каждом шаге разрешается заменять только один символ. Поэтому вывод в НС-фамматике удобно представить в виде дерева составляющих ((.-маркера).

Язык /.(G), порождённый НС-фамматикой, называется языком непосредственно-составляющим (НС-языком).

Множество КЗ-языков и КС-языков являются подмножествами множества НС-языков.

Неукорачивающие грамматики - это грамматики, в которых для любого правила ср->\|/ справедливо соотношение I ср| <1 ц/| Таким образом, в результате использования правил вывода (продукций) получают цепочку, длина которой не меньше длины исходной цепочки.

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

Т={аМ\N={S}\S=S\ P={S->aa, S-*bb, S->aSa9S-+bSb.)

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

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

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

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

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

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

Грамматики, использующие такие правила, называют трансформационными.

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

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

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

Исходная НС-грамматика называется базовой, а правило преобразования - трансформациями.

Формально глубинная структура представляет собой С-маркер, порожденный категориальными правилами, т.е. правилами вывода, не содержащими терминальных символов.

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

Подстановка формальных символов в порождаемые предложения осуществляется с помощью специальных правил включения.

2. АВТОМАТЫ - РАСПОЗНАВАТЕЛИ ЯЗЫКОВ

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

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

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

Учитывая, что автомат - математическая модель устройства, предназначенного для преобразования последовательности (множества) входных дискретных сигналов в последовательность (множество) выходных дискретных сигналов, можно по заданному в том или ином виде автомату найти отображение «вход - выход», осуществляемое этим автоматом. Часто такое отображение можно интерпретировать как вычисление предиката. Напомним, что предикатом называется функция от любого числа аргументов, принимающая только два значения - истина (1) и ложь(О).

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

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

Говорят, что множество распознается автоматом. Можно упрощенно сказать, что автомат распознает множество отображений «вход-выход», т.е. распознает языки.

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

Таким образом, автоматы распознают языки, т.е. являются распознавателями. Можно указать в качестве распознавателей автоматы: машина Тьюринга, магазинный автомат, сеть Петри, конечный автомат. Рассмотрим кратко эти автоматы.

2.1. Машина Тьюринга

Энциклопедия кибернетики определяет машину Тьюринга как математическое понятие, введенное как формальное уточнение понятия алгоритма.

А. Тьюринг - английский математик (1912 - 1954) ввел это понятие в 1936 г., т.е. машина Тьюринга разработана еще до создания ЭВМ.

Машина Тьюринга (рис. 2.1) является теоретической моделью алгоритмов (процессов вычисления), основанной на использовании конечного автомата специального вида.

Машина Тьюринга включает в себя три отдельные части:

1.Неограниченная в обе стороны лента, разделенная на ячейки.

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

3.Считывающая и записывающая головка (Г) - устройство обращения к ленте, которая в каждый момент времени «обозревает» ячейку

Каждая машина Тьюринга (МТ) характеризуется двумя конечными алфавитами: алфавит внешних символов X {дг|^г2, , .г,,!, каждый из которых может быть записан в конкретной ячейке ленты, и алфавит внутренних состояний УУ Y {.Vi, yiy , Ук}- УУ может находиться в любом из состояний конечного множества Y Обычно среди состояний управляющего устройства выделяется начальное у\ и конечное (заключительное) состояние ук (к мнемонический знак окончания работы). В начальном состоянии МТ находится перед началом работы, в конечном - машина останавливается после окончания работы. Иногда конечное состояние ук не назначается. Работа прекращается, когда на каком-то такте изменения конфигурации не происходит.

В любой момент времени в каждой ячейке ленты записан один символ из множества X или пустой символ (пустая ячейка), обозначим его символом пробела X (иногда в качестве пустого символа (пробела) включается в алфавш X символ jc0), УУ находится в одном из состояний г еУ. Г обозревает одн\ из ячеек ленты.

УУ

Рис. 2.1. Общая схема машины Тьюринга

Совокупность сведений о состоянии УУ и записи на ленте машины с указанием обозреваемой ячейки называется конфигурацией машины.

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

момент времени / (/

1,2,...), в конфигурацию, в которой машина будет

находиться в момент t

1. Это преобразование зависит только от состояния УУ

и содержимого обозреваемой ячейки в момент / и заключается: а) в изменении состояния v, в некоторое состояние у\:

б) в замене символа ху , записанного в обозреваемой ячейке, некоторым символом хДили пустым символом Х-пробелом);

в) в сдвиге Г на одну ячейку влево или вправо или отсутствии сдвига. Такое преобразование называется командой машины Тьюринга.

Символически команда записывается в виде yfy—tyiXpR, где R - одна из букв Л, П, Н (Л означает сдвиг влево, П - сдвиг вправо, Н - отсутствие сдвига). Иногда пишут в латинском алфавите L, R и Е.

Совокупность всех команд, которые выполняет машина Тьюринга, называется ее программой.

Для каждого символа XJGX и состояния y ^ Y программа содержит в точности одну команду с левой частью у Поэтому работа МТ определяется однозначно, если фиксировать конфигурацию Kj, с которой она начинает работу: в первом такте Ki преобразуется в конфигурацию К2 выполнением единственной применимой к Ki команды, во 2-м такте К2 таким же образом преобразуется в конфигурацию К3 и т.д. Конфигурация, в которой машина останавливается, называется заключительной. Память машины Тьюринга - конечное множество состояний УУ (внутренняя память) и лента (внешняя память). Лента бесконечна в обе стороны, однако в начальный момент времениЧ только конечное число ячеек ленты заполнено символами, остальные пусты, т.е. содержат пустой символ.

Данные машины Тьюринга - это слова в алфавите ленты, на ленте записываются исходные данные и затем - результат. Элементарные шаги - это считывание и запись символов, сдвиг головки, переход УУ из состояния в состояние.

Структурная схема универсальной машины Тьюринга представлена на рис.2.2.

 

 

Ячейкиленты

 

"]

| Я | 1 |

|

|

Лента

Входной

 

Выходной

 

сигнал Xj

 

 

Л - влево

Управляющее

устройство

П - вправо

 

 

Н - на месте

Рис. 2.2. Структурная схема машины Тьюринга

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

Таким образом, конечный автомат (УУ) управляет обработкой информации, реализует алфавит. Тьюринг выдвинул тезис «всякий алгоритм может быть реализован машиной Тьюринга». Отсюда следует вывод - если

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

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

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

По существу, универсальную МТ можно считать идеализированной моделью универсальной ЭВМ. При этом отвлекаются от того обстоятельства, что ЭВМ обладает конечной памятью, поскольку ее внешнюю память по мере надобности можно дополнять.

В универсальной МТ лента (внешняя память) бесконечна.

Существует много различных конкретных вариаций (разновидностей) машин Тьюринга, например, машина Тьюринга с эластичной рабочей лентой, которая является удобным техническим средством для изучения грамматик (Э-машина). Ее особенности:

1. Э-машина является недетерминированной, т.е. допускает в один и тот же момент выполнение двух разных команд, в то время как классическая МТ - устройство для реализации алгоритма и не допускает выполнения двух различных команд в одном такте (детерминированная машина).

2.Э-машина имеет 2 ленты - «входную», на которой записывается исходная цепочка, которую машина в процессе работы прочитывает, не изменяя ее, и каждый символ читается только один раз; и «рабочую» ленту, на которой производится вся остальная работа. Соответственно Э-машина имеет две головки - «входную» и «рабочую».

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

4.«Эластичность» рабочей ленты. Это означает, что:

а) стирая символ в ячейке рабочей ленты, машина (головка) уничтожает и саму ячейку, так что соседние с ней ячейки становятся соседними между собой («стягивание» ленты);

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

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

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

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

Рассмотрим простейший пример реализации алгоритма сложения чисел а и b, записанных на ленте в виде an b единиц с разделителем *. Обозначим такую

запись 1*1* (1" = !_ Ы ,1 * = 11.. .1).

Следовательно, необходимо переработать слово 1**16 в слово Г +\ те. удалить символ * и сдвинуть одно из слагаемых, скажем, первое ко второму.

Такой алгоритм осуществляет машина Тьюринга, граф переходов управляющего устройства которой представлен на рис.2.3.

 

Рис. 2.3. Граф переходов УУ

На

графе УУ, которое является автоматом Мили, обозначены

У\...ук -

внутренние состояния.

Над дугами пишется:

вчислителе - входной сигнал (считываемый символ),

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

-стрелка (дуга) указывает состояние, в которое идет переход.

Пусть, например, заданы числа I2 (11) и I 1(1). Тогда последовательность работы машины может быть описана диаграммой (рис.2.4).

В исходном состоянии (yi) головка установлена напротив начала первого числа (напротив первой его единицы). Головка на месте первой единицы

записывает пробел X и движется вправо (переход у\-+уь —!_). Головка стоит ХП

снова против «1», идет переход уг->уъ ууу. Головка стала против «*», идет

переход уг->уъ — Т.е. вместо * записали 1 (это уже 1П). Головка влево

напротив 1 (111). Единица переписывается в этой ячейке, идет переход у*-*уъ

1

,

— и головка -

влево. Головка напротив X, значит, идет переход

Головка делает шаг вправо и останавливается, т.к. работа закончена.

Переход на графе У\-+Уку А*11 необходим для случая отсутствия первого числа, т.е. когда исходное слово имеет вид *\ь

Л

1

1

 

 

 

л

 

*

1

 

X | X

1

 

*

1

X

л

л

сь

л

1

 

=1|С

1

 

 

 

7

 

 

л

л

1

 

1

1

л

 

 

4-----

7

 

 

 

 

 

 

 

 

л

л

1

 

1

1

л

 

<---- 0

 

 

 

Л

л

1

 

1

1

А

 

 

 

- I 3

 

л

л

1

 

1

1

л

 

 

П

 

 

Рис.2.4. Диаграмма работы МТ

Система команд имеет вид:

у* ^ > у 2ХП, у,1^> у2ЛП,

у21-> у21П,

у2* -> у 31Л,

уг1 -+ у31Л,

у3Х -> ^ХП.

2.2.Магазинный автомат

Магазинный автомат - это автомат специального вида (как правило, бесконечный), в основе которого лежит понятие магазинной памяти или магазина. Автомат имеет специальную память типа «магазин».

Магазин удобно представлять в виде бесконечной в одну сторону ленты, состоящей из ячеек, пронумерованных числами 1,2,3,... Лента расположена вертикально таким образом, что первая ячейка (ячейка с номером 1) оказывается самой верхней. В каждый момент времени в магазине записано некоторое слово. Первая его буква (символ) записана в первой ячейке, вторая - во второй и т.д., остальные ячейки магазина «пусты», т.е. записаны специальными «нулевыми» символами.

Магазин работает в двух режимах - чтения и записи. При чтении (за один такт) воспринимается лишь верхняя буква слова, записанного в магазине. Эта буква стирается, а оставшаяся часть слова поднимается на одну ячейку вверх. При записи в магазин слова h длины т слово, записанное там, сдвинется на т ячеек вниз, а в освободившейся ячейке записываются символы слова h (рис.2.5).

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

<h_

а

<h_

<*2

а2

аг

 

 

Исходное

Чтение

состояние

символа

 

Запись

 

символа

Рис. 2.5. Магазинная память

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