Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
discrete_math.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.33 Mб
Скачать

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

Графом G называется пара (V, E), где – непустое множество вершин графа, а – множество ребер графа, причем каждое ребро – это неупорядоченная пара различных вершин.

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

Определение. Эйлеров цикл – цикл, при котором происходит обход всех вершин через единичное прохождение каждого ребра.

Утверждение. Критерий существования эйлерова цикла - только тогда, когда в графе все вершины имеют четную степень; связность.

Утверждение. Критерии существования эйлеровой цепи - существует тогда и только тогда, когда в графе ровно две вершины имеют четную степень; связность.

Граф, в котором существует эйлеров цикл, называется эйлеровым графом. Существует алгоритм Флери для построения эйлерового цикла в эйлеровом графе. Этот алгоритм нумерует ребра графа в порядке их прохождения, а сам порядок определяется следующей схемой:

  • Из произвольной начальной вершины по любому инцидентному ей ребру переходим в следующую вершину, нумеруем это ребро цифрой 1 и удаляем его.

  • Если очередной вершине инцидентно только одно ребро, то переходим по нему в следующую вершину, нумеруем это ребро очередным числом и удаляем его. Если же очередной вершине инцидентны несколько ребер, то среди них обязательно найдется ребро, которое не является мостом в оставшемся графе. По этому ребру переходим в следующую вершину, нумеруем это ребро очередным числом и удаляем его. Этот этап повторяется до тех пор, пока не удалим все ребра графа.

Алгоритм заканчивает работу за конечное число шагов, равное количеству ребер в исходном графе. При этом номера ребер указывают, в каком порядке следуют ребра в эйлеровом цикле.

6. Обходы графов: гамильтоновы цепи и циклы, достаточные условия их существования.

Графом G называется пара (V, E), где – непустое множество вершин графа, а – множество ребер графа, причем каждое ребро – это неупорядоченная пара различных вершин.

Определение. Гамильтонова цепь – цепь, соединяющая разные вершины графа и проходящая через каждую вершину графа ровно по одному разу (связность графа – необходимое условие наличия).

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

Утверждение. Достаточное условие существования гамильтонова цикла - если в связном n-вершинном графе, где n ≥ 3, степень каждой вершины deg(v) ≥ n/2, то в этом графе имеется гамильтонов цикл.

Утверждение. Если в связном n-вершинном графе, где n ≥ 3, степень каждой вершины deg(v) ≥ n/2, то в этом графе имеется гамильтонов цикл.

Определение. Граф, в котором имеется гамильтонов цикл, называется гамильтоновым.

7. Деревья, их свойства, кодирование деревьев, остовные деревья.

Определение. Связный граф без циклов называется деревом. Графом G называется пара (V, E), где – непустое множество вершин графа, а – множество ребер графа, причем каждое ребро – это неупорядоченная пара различных вершин.

Свойство 1. Если две произвольные несмежные вершины дерева соединить ребром, то в нем возникнет простой цикл.

Свойство 2. В дереве любое ребро является мостом

Свойство 3. В дереве количество ребер на единицу меньше числа вершин.

Определение. Ребро дерева называется концевым ребром, если оно инцидентно концевой вершине (т.е. вершине степени 1).

Свойство 4. В любом n-вершинном дереве при существует не менее двух концевых вершин и не менее одного концевого ребра.

Свойство 5. В любом n-вершинном дереве при есть хотя бы одна неконцевая вершина.

Определение. Дерево с выделенной вершиной называется корневым деревом, а выделенная вершина – корнем дерева.

Построение кода основано на обходе дерева «в глубину», при котором каждое ребро проходится дважды: первый раз – в направлении от корня, второй раз – к корню. Каждое ребро кодируется двумя символами – 0 и 1. При этом ноль означает движение вдоль данного ребра от корня, а единица – к корню. В получающемся коде ноль и единица, соответствующие одному и тому же ребру, не обязательно стоят рядом.

Пример 1. Корнем дерева на рисунке является вершина . При его обходе «в глубину» из корня получаем последовательность вершин: v7, v5, v4, v1, v4, v2, v4, v3, v4, v5, v7, v6, v7. Такой обход порождает код (000101011101). Заметим, что иному обходу этого же дерева v7, v6, v7, v5, v4, v1, v4, v2, v4, v3, v4, v5, v7 соответствует другой код (010001010111).

рисунок

Определение. Остовным деревом связного графа называется дерево, получающееся из этого графа путем удаления некоторых ребер (все вершины графа при этом сохраняются).

Определение. Минимальное остовное дерево - остовное дерево минимально возможной длины. Для его построения существует алгоритм Краскала. Идея этого алгоритма состоит в том, что искомое остовное дерево «вырастает» из леса, отдельные деревья которого постепенно объединяются и на последнем шаге алгоритма объединяются в одну компоненту связности – остовное дерево. Схема алгоритма такова:

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

  • Из оставшихся ребер исходного графа убрать кратчайшее, которое после добавления его к полученному лесу не образует там циклов. Этот этап повторяется до тех пор, пока лес не превратится в остовное дерево исходного графа.

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