Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория языков программирования и методы трансляции..pdf
Скачиваний:
28
Добавлен:
05.02.2023
Размер:
3.41 Mб
Скачать

18

Дадим еще ряд определений:

1)множество S конечно, если оно равномощно множеству {1, 2, …, n}

для некоторого целого n;

2)множество S бесконечно, если оно равномощно некоторому своему собственному подмножеству;

3)множество S счетное, если оно равномощно множеству положи-

тельных чисел.

1.3МНОЖЕСТВА ЦЕПОЧЕК

1.3.1 ЦЕПОЧКИ

Алфавитом будем называть любое множество символов (оно не обяза-

тельно конечно и даже счетно), но в наших приложениях оно конечно. Пред-

полагается, что слово «символ» имеет достаточно ясный интуитивный смысл. Символ – элемент алфавита (синонимы: буква, знак).

· · · · · · · · · · · · · · · · · · · · · · · ·

 

Пример · · · · · · · · · · · · · · · · · · · · · · ·

 

 

 

Например, 01011 – цепочка в бинарном алфавите {0, 1}.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Особый вид цепочки – пустая цепочка [3, 5], обозначается как e. Пустая цепочка не содержит символов.

Соглашения:

Прописные буквы греческого алфавита – алфавиты.

Буквы a, b, c и d – отдельные символы.

Буквы t, u, v, w, x, y и z – цепочки символов.

Если цепочку из i символов a обозначить как ai, тогда a0 = e – пустая цепочка.

Цепочки в алфавите Σ определяются следующим образом:

1) e – цепочка в Σ;

19

2)если x цепочка в Σ и a Σ, то xa – цепочка в Σ;

3)y – цепочка в Σ тогда и только тогда, когда она является таковой в силу 1) и 2).

1.3.2 ОПЕРАЦИИ НАД ЦЕПОЧКАМИ

Пусть x, y – цепочки. Тогда:

Цепочка xy называется сцепленной (конкатенацией цепочек x и y).

Например, если x = ab и y = cd, то xy = abcd. Для любой цепочки x

можно записать, что = еx = x.

Обращением цепочки x (xR) называется цепочка x, записанная в обратном порядке: x = a1a2an, xR = anan–1a1, eR = e.

Пусть x, y, z – цепочки в некотором алфавите Σ, тогда, x префикс

цепочки xy, y суффикс цепочки xy, y подцепочка цепочки xyz.

Префикс и суффикс цепочки являются ее подцепочками. Если x y, x

префикс (суффикс) цепочки y, то x собственный префикс (суффикс) цепоч-

ки y.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Длина цепочки – это число символов в ней. Если x = a1a2an, то длина цепочки n. Длину цепочки обозначают |x|.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

· · · · · · · · · · · · · · · · · · · · · · · ·

 

Пример · · · · · · · · · · · · · · · · · · · · · · ·

 

 

 

Например:

|abc| = 3;

|e| = 0.

·· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

20

1.4ЯЗЫКИ

1.4.1ОПРЕДЕЛЕНИЯ

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Языком в алфавите Σ называют множество цепочек в Σ.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Через Σ* обозначается множество, содержащее все цепочки в алфавите,

включая e [6].

· · · · · · · · · · · · · · · · · · · · · · · ·

 

Пример · · · · · · · · · · · · · · · · · · · · · · ·

 

 

 

Пусть Σ – бинарный алфавит {0,1}, тогда Σ* = {e, 0, 1, 00, 01, 10, 11, 000, 001, …,}.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Каждый язык в алфавите Σ является подмножеством Σ*. Множество всех цепочек в Σ, за исключением e, обозначают Σ+.

Если язык L таков, что полная цепочка в L не является собственным подмножеством (суффиксом) никакой другой цепочки в L, то L обладает префиксным (суффиксным) свойством.

1.4.2 ОПЕРАЦИИ НАД ЯЗЫКОМ

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

ми применимы к ним. Операцию конкатенации можно применять к языкам так же, как и к цепочкам.

Пусть L1 – язык в Σ1, L2 – язык в Σ2. Тогда язык L1L2 называется конка-

тенацией языков L1 и L2 – это язык {xy | x L1 и y L2}. Итерация языка L обо-

значается L* и определяется следующим образом:

1)L0 = {e};

2)Ln = LLn–1 для n 1;

21

3) L* Ln .

n 0

Позитивная итерация языка L обозначается L+ – это язык

Ln , т.е. L* L {e}.

n 1

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Пусть Σ1 и Σ2 – алфавиты. Гомоморфизмом называется любое отображение h : 1 *2 .

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Область гомоморфизма можно расширить до 1* , полагая h(e) = e и

h(xa) = h(x)h(a) для всех x * и a Σ .

1

1

 

· · · · · · · · · · · · · · · · · · · · · · · ·

 

 

Пример · · · · · · · · · · · · · · · · · · · · · · ·

 

 

 

 

 

 

Если мы хотим заменить каждое вхождение в цепочку символа 0 на a, а

каждое вхождение символа 1 на bb, то можно определить гомоморфизм h так: h(0) = a, h(1) = bb. Если L = {0n1n | n 1}, то h(L) = {anb2n | n 1}.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Если h : 1 *2 , то отношение

h 1 : *2 P 1*

называется обращением гомоморфизма.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Если y *2 , то h–1(y) – это множество цепочек в алфавите Σ1, т.е. h–1(y) = {x | h(x) = y}. Если L – язык в алфавите Σ2, то h–1(L) – язык в алфавите Σ1, состоящий из тех же цепочек, которые h отображает в цепочки из L. Фор-

мально,