Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дискретная математика.doc
Скачиваний:
123
Добавлен:
10.05.2014
Размер:
905.22 Кб
Скачать

1. Алфавит, слова, операции над словами

Пусть V={v1, v2,…,vn}, n1 – некоторый алфавит. Тогда любая последовательность x1x2…xk, k0, где xiV – 1ik , слово в алфавите V, при k=0 –получается пустое слово, обозначим его. Множество всех слов алфавита V обозначается V*.

Слово X =x1…xkграфически совпадает со словом Y=y1…yl, если xiV (1ik), yjV (1jk), l=k, и для любого i ,1ik, xi=yi. Будем обозначать графическое совпадение слов X=Y.

Длиной слова Х (обозначается Х) будем называть число вхождений символов в слово Х. Если X =x1…xk, тоХ=k .=0

Конкатенацией слов X =x1…xk и Y=y1…yl называется слово Z= XY= x1…xky1…yl. Например, конкатенацией слов «авто» и «бус» будет слово «автобус».

Свойства конкатенации:

 является единицей для конкатенации, т.е. для любого слова Х верно, что Х=Х=Х.

Операция конкатенации является ассоциативной, т.е. (XY)Z=X(YZ).

Операция конкатенации не является коммутативной, XYYX.

Для конкатенации, как и для произведения, конкатенация n одинаковых слов X обозначается Xn. Считаем, что

X0=для любого слова Х. Множество V* всех слов алфавита V является полугруппой относительно операции конкатенации.

Полугруппа – множество с заданной на нем ассоциативной бинарной операцией.

Если слово Х=Х1Х2, то Х1начало слова Х, а Х2– конец слова Х.

Говорят, что слово P входит в слово Q, если существует пара слов R и S, такая, что R – первый элемент пары, S – второй элемент пары, и Q =R P S.

Легко доказать

Утверждение: Если слово P входит в слово Q, то существует некоторое слово U, такое, что P – начало U, а U - конец Q.

Следствие: Если слово P входит в слово Q, то P есть начало некоторого конца Q (или конец некоторого начала Q).

Если P есть некоторое начало (конец) Q и P Q, то P собственное начало (конец) Q.

Конкретные вхождения слова P в слово Q обозначаются RPS, где R, P,S – слова в алфавите V, V. Тогда R – левое крыло вхождения, S – правое крыло вхождения, P - основа.

Говорят, что вхождение P1 слова P в слово Q предшествует вхождению P2 слова P в это же слово, если левое крыло вхождения P1 является собственным началом левого крыла вхождения P2.

2. Языки. Операции над языками

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

Перечислением элементов.

Ограничивающим свойством.

Через известные множества

Порождающей процедурой.

В основном будем использовать 4 способ, но начнем с третьего.

Например, для любого Vмножество слов четной длины является языком. Множество слов нечетной длины также явля­ется языком, но в отличие от первого — не замкнутым относи­тельно операции конкатенации. Будем обозначать языки буквойL(с индексами или без них). Рассмотрим операции над языками.

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

В частности, L,  L.

Теоретико-множественные операции

Пусть L1иL2- два языка над алфавитомV. Язык L называется объединением этих языков(L = L1 L2 ), еслиL ={x / x L1 x L2}.

Пересечением языков L1иL2называется языкL (L = L1 L2 ),если L ={x / x L1 & x L2}.

Дополнением языка L1доV*называется языкL (L=V*\L1),еслиL={ x/ xV* & x L1}.

Специфические операции

Произведением (иначе конкатенацией) языков L1иL2 называется языкL (L=L1L2), еслиL={x y/xL1 & yL2}.

Например, L1={ ac, a }, L2={ cb, b}, тогдаL1L2 ={ acb, accb, ab}.

Свойства операции конкатенации:

Операция умножения языков ассоциативна:

L1 (L2 L3)= (L1 L2) L3

Операция умножения языков дистрибутивна от­носительно объединения

L (L1L2 ) = LL1 LL2.

(L1L2 ) L = L1L L2L

Операция умножения языков не коммутативна: L1 L2 L2 L1.

L {}= {} L = L

Однако L(L1L2 ) LL1 LL2 , в общем случае равенства нет, что легко показать, подобрав соответствующий пример.

В силу ассоциативности операции произведения, как и в случае конкатенации цепочек,

записывается как L=L1n. По определениюL0={}. Отме­тим, что{} . так как(пустой язык) вообще не со­держит никаких цепочек.

Итерацией языка L1называется язык L (L=L1*), если

. Как нетрудно видеть, итерация алфавитаV*(алфавит можно рассматривать как язык, состоящий из односимвольных слов) образует язык, состоящий из всех возможных цепочек, состав­ленных из символовV. Это обстоятельство и объясняет, по­чемуV*используется для обозначения всех слов над алфави­томV.

Вводится также операция усеченной итерации. Lназыва­ется усеченной итерацией языка L1 (L=L1+), если