
Графы и деревья.
Рассмотрим
мн-во
,
соединенных некоторым образом точек.
Назовем
мн-вом вершин, а его элементы
вершинами. Направленным графом
называется совокупность конечного
мн-ва вершин и определенного на этом
мн-ве отношения
.
Направленный граф можно представить
графически следующим образом. Расположим
на листе бумаги все вершины мн-ва
.
Каждую вершину изобразим в виде
окружности, внутри которой вписан
элемент множества
.
Две вершины
и
соединим отрезком линии, если существует
пара
.
В этом случае будем говорить, что граф
содержит ребро
.
Если
в графе имеется некоторая последовательность
вершин
,
где
и
для
,
говорят, что в графе существует путь
длиной
из вершины
в вершину
.
Для
.
Граф
может содержать подграфы вида
,
если
и
.
Два подграфа, не имеющие общих вершин,
называются раздельными подграфами.
Рекурсивное
определение дерева. Деревом
называют такой направленный граф,
который имеет либо одну единственную
вершину, называемую корнем
,
либо совокупность корня, нескольких
раздельных подграфов-деревьев
и ребер от корня дерева
до вершин-корней деревьев
.
Дерево представляют в виде расположенного
вверху корня и направленных сверху вниз
ребер. В этом случае можно не указывать
направление ребер. Вершину дерева из
которой не выходит ни одного ребра
называют листом, остальные вершины -
внутренними вершинами дерева.
Строки.
Под
строкой всегда понимается некоторая
последовательность символов
,
каждый из которых принадлежит некоторому
конечному алфавиту
.
В дальнейшем для обозначения отдельных
символов будем использовать строчные
буквы
,
а для обозначения строк - буквы
.
Строка, состоящая из
символов
,
будет обозначаться
.
Длина произвольной строки
представляет собой число символов в
строке и обозначается. В общем случае
существует пустая строка
,
которая имеет нулевую длину
и обозначается
.
Формально
строки символов в алфавите
определяются следующим образом:
-
- строка в
;
-
если
- строка в
и
, то
- строка в
;
-
- строка тогда и только тогда, когда она является таковой в силу первых двух положений.
Если
и
строки, то строка
называется конкатенацией (сцеплением
или объединением)
и
.
Причём
,
но
.
Для пустой строки справедливо следующее
утверждение
для любого
.
Обращением строки
называется строка, записанная в обратном
порядке
.
Пусть
,
и
произвольные строки в некотором алфавите
и строка
,
тогда строка
называется префиксом строки
,
а строка
-
суффиксом строки
.
Формальные языки.
Обозначим
через
множество определенных над алфавитом
строк. Например, для
Множество
всех строк в
за исключением
обозначается
.
Таким образом
.
Формальным
языком
над алфавитом
называется произвольное подмножество
множества
.
Пусть
и
- два формальных языка, тогда их
конкатенация (объединение)
также является формальным языком.
Например, для языков
и
,
.
Конкатенация формального языка
с самим собой записывается в виде
.
В общем случае это выглядит так
,
,
для
.
Тогда
можно определить как
,
а