Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
китг-пми / Программа экзамена КиТГ.docx
Скачиваний:
0
Добавлен:
10.06.2026
Размер:
4.49 Mб
Скачать
  1. Алгоритм построения наибольшего паросочетания в двудольных графах и теорема о связи максимального паросочетания с минимальным вершинным покрытием.

Алгоритм построения максимального паросочетания: Ввести фиктивное начало S и конец F

Ориентировать все ребра от S к F

Цикл-пока есть путь из S в F

найти путь из S в F

поменять ориентированные ребра вдоль пути

удалить фиктивные ребра этого пути

Кц

Ребра, ориентированные справа налево образуют максимальное паросочетание

Теорема: 0(G) = 2(G), где 0(G) – мин. покрывающее вершинное множество, 2(G) – макс. паросочетание.

  1. Алгоритм Краскала и теорема о его корректности на основе нахождения циклов (алгоритмом поиска в глубину). Доказать корректность алгоритма с раскраской вершин. Сравнить трудоемкости алгоритмов.

Алгоритм Краскала: Отсортируем ребра по возрастанию весов

T = пустое множество

Цикл-пока не закончились ребра

Если очередное ребро e не образует цикла с ребрами из T то

T = T u {e}

КЕ

КЦ

  1. Матроиды. Определение. Матричный и графовый матроиды. Теорема Радо-Эдмондса.

Матроидом над множеством M называется набор его подмножеств I, удовлетворяющих:

  1. Алгоритм Прима и теорема о его корректности. Определить матроид в рамках решения этой задачи.

  1. Нахождение кратчайших длин путей в графе. Алгоритм Форда-Беллмана. Сформулировать алгоритм, инвариант цикла, доказать корректность алгоритма. Алгоритм Форда-Беллмана с построением дерева кратчайших путей. 

Алгоритм Форда-Беллмана: Цикл по v принадлежащим V

D(v) = A(s, v) (A - матрица весов ребер; A(u, v) - длина ребра)

КЦ

Повторить n-2 раза

Цикл по v принадлежащим V

Цикл по u принадлежащим V (т е по соседям из которых можно попасть в v)

D(v) = min(D(v); D(u) + A(u, v))

КЦ

КЦ

Применяется только к графам, у которых нет циклов отрицательной длины.

Алгоритм Форда-Беллмана с построением дерева кратчайших путей. 

// V — множество вершин, A(u,v) — вес ребра u→v или +∞, если ребра нет

// s — источник

// 1) Инициализация

Для всех v ∈ V:

D(v) ← +∞

π(v) ← NIL

Конец цикла

D(s) ← 0

// 2) Основной цикл релаксаций: |V|−1 раз

Повторить |V|−1 раз:

Для всех v ∈ V:

Для всех u ∈ V, таких что A(u,v) < +∞:

Если D(u) + A(u,v) < D(v) Тогда

D(v) ← D(u) + A(u,v)

π(v) ← u // фиксируем предшественника

КонецЕсли

Конец цикла по u

Конец цикла по v

КонецПовтора

// 4) Построение дерева кратчайших путей

T ← ∅

Для всех v ∈ V, v ≠ s:

Если π(v) ≠ NIL То

T ← T ∪ { (π(v) → v) }

КонецЕсли

Конец цикла

Возвратить (D, π, T)

  1. Нахождение кратчайших длин путей в графе. Алгоритм Дейкстры. Сформулировать алгоритм, инвариант цикла, доказать корректность алгоритма. Алгоритм Дейкстры с построением дерева кратчайших путей.

Цикл по v принадлежащим V

D(v) = A(s, v) (A - матрица весов ребер; A(u, v) - длина ребра)

КЦ

V’ ={s} - обр. вершины (вершины дерева кратчайших путей)

V’’=V\V’

Повторить пока V’’ != 0

V’’ = V’’ \ {v}

V’ = V’ u {v}

Цикл по w принадлежащим V’’ (соседям v)

D(w) = min(D(w); D(v) + A(v, w))

КЦ

КЦ

Инвариант: после выполнения k шагов внешнего цикла пометки означают: 1. Если v принадлежит V’, то D(v) – кратчайшее расстояние от s до v.

2. Если v принадлежит V’’, то D(v) – кратчайшее расстояние от s до v по путям, у которых все вершины, кроме последней, обработаны.

Соседние файлы в папке китг-пми