Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие ДМ2 15.10.11.doc
Скачиваний:
219
Добавлен:
31.05.2015
Размер:
16.53 Mб
Скачать

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

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

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

Определение: Словомилицепочкойв алфавитеV называют произвольный кортеж из множества(kдекартовой степениалфавитаV)для различныхk= 0,1,2,...

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

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

При k= 0 получаемпустой кортеж,называемый в данном контекстепустым словомилипустой цепочкойи обозначаемый Л. Множество всех слов в алфавитеVобозначают, а множество всех непустых слов вV— как. Слова, ради удобства чтения и простоты записи, будем записывать без скобок и запятых (ср. с записями кортежей в 1.2). Так, для записанных выше слов получим:а, b, с, аb, аbс, сbаас.

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

По определению, длина слова v) число компонент кортежа, т.е. еслито длина словаравнаr. Длину словадоговоримся обозначать ||. Ясно, что для пустого слова || = 0. Длину слова тем самым можно понимать как число составляющих это слово букв.

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

В данной нумерации пустому слову присваивается номер 0, а буквам алфавитаV— номера 1, ...,nсоответственно. Если словохимеет лексикографический номер, то словуприсваивается номер. Отсюда следует, что лексикографический номер словабудет равен

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

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

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

где .

Если , тоNесть номер слова. Иначе раскладываемв виде

где . Тогда

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

где каждое число находится в диапазоне от 1 доn.

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

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

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

1. Грамматики типа0, илиграмматики общего вида.Здесь на правила вывода не накладывается никаких дополнительных ограничений.

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

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

Если в КЗ-правиле снять требование непустоты цепочки , то получим грамматику, которую называютобобщенной КЗ-грамматикой(или, коротко,О КЗ-грамматикой).

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

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