Программа курса и примеры заданий.

  1. Бинарные отношения
    1. Определение
    2. Свойства: рефлексивность, симметричность, транзитивность, антирефлексивность, антисимметричность, асимметричность. При проверке свойств отсутствие свойства доказывается приведением одного контр-примера. Наличие свойства доказывается отсутствием контр-примеров.
    3. Представление отношения в виде матрицы и в виде графа.
    4. Проверка свойств отношений на основе матрицы и на основе графа отношения.
    5. Отношения эквивалентности и классы эквивалентности.
    6. Отношения строгого и нестрогого порядка. Частичный и линейный порядок. Задача топологической сортировки и простейший алгоритм топологической сортировки с повторением поиска минимального элемента.
    7. Транзитивное замыкание: определение.
  2. Неориентированный граф и основные понятия: вершины, рёбра, степень вершины.
  3. Пути в графе: замкнутый и незамкнутый путь, простой путь. Циклы и цепи.
  4. Связные графы, компоненты связности. Мосты, точки сочленения.
  5. Связь количества рёбер и суммы степеней вершин. Количество вершин нечётной степени чётно.
  6. Деревья. В дереве есть хотя бы две висячие вершины. Количество рёбер и вершин в дереве.
  7. Количество рёбер в полном графе.
  8. Планарные графы. Формула Эйлера в случае связного и несвязных графов. Связь количества вершин и рёбер: $m \le 3n-6$. Непланарные графы $K_5$ и $K_{3,3}$, теорема Понтрягина-Куратовского.
  9. Хроматизм
    1. Раскраска графа. Определение двудольного графа и критерий двудольности (все циклы чётные).
    2. Хроматическое число. Хроматическое число полного графа. Хроматическое число не больше максимальной степени вершин плюс один. Хроматическое число планарного графа не больше пяти (на самом деле — четырёх).
    3. Хроматические многочлены. Формулы для вычисления хроматических многочленов: для пустого, полного графов, дерева, цикла ($\chi(C_n, k) = (k-1)^n+(-1)^n(k-1)$). Удаление вершины степени 1 и степени 2. Добавление или удаление ребра.
    4. Свойства хроматического многочлена: старший коэффициент равен единице, степень многочлена равна количеству вершин. Коэффициент при предпоследней степени равен минус количеству рёбер. Знаки при коэффициентах чередуются. Младший коэффициент равен нулю.
  10. Эйлеров цикл и эйлеров путь. Критерий наличия Эйлерова цикла (все степени чётные) и Эйлерова пути (все степени четные кроме, возможно, двух нечетных. Путь начинается и заканчивается в нечетных вершинах). Алгоритм построения Эйлерова цикла или пути.
  11. Гамильтонов цикл и путь.
  12. Длина пути в графе, радиус графа, диаметр графа, центр графа. Диаметр не больше двух радиусов. В дереве может быть не больше двух центров.
  13. Длина путей в ориентированных графах. Пути между всеми парами вершин существуют равносильно отсутствию отрицательных циклов.
  14. Представление графов в компьютере: матрицы смежности, списки смежности, неявное представление.
  15. Алгоритмы поиска расстояний в графах
    1. Алгоритмы Форда-Беллмана. Релаксация ребра. Требует только отсутствие отрицательных циклов. Инвариант шага алгоритма: после шага $n$ все расстояния, соответствующие путям из не более, чем $n$ ребер, вычислены верно. Восстановление пути.
    2. Алгоритм Дейкстры. Требует положительных весов. Требует очередь с приоритетами для эффективной реализации. Инвариант шага алгоритма: после каждого шага все расстояния, соответствующие путям, где все вершины кроме последней обработаны, вычислены верно. Восстановление пути.
    3. Алгоритмы Флойда (Флойда-Уоршалла). Инвариант шага алгоритма: после шага $n$ все расстояния, соответствующие путям с промежуточными вершинами от $1$ до $n$, вычислены верно. Восстановление пути.
    4. Построение транзитивного замыкания с помощью алгоритма Флойда.
  16. Потоки в сетях
    1. Определение сети и определение потока в заданной сети.
    2. Суммарный поток на рёбрах, выходящих из истока равен суммарному потоку на рёбрах, входящих в сток. Эта величина называется величина потока.
    3. Разрез в сети. Прямые и обратные рёбра разреза. Величина разреза равна суммарной пропускной способности прямых ребер. Величина потока в сети равна суммарному потоку по прямым рёбрам разреза минус суммарный поток по обратным рёбрам разреза.
    4. Величина любого потока не больше величины любого разреза. Следовательно, величина максимального потока не больше величины минимального разреза.
    5. Теорема Форда-Фалкерсона: величина максимального потока равна величине максимального разреза (в случае целочисленной сети).
    6. Дополнительный граф для потока в сети. Минимальный разрез как множество вершин, достижимых из истока в дополнительном графе.
  17. Паросочетания в двудольном графе.
    1. Определение паросочетания и максимального паросочетания.
    2. Сведение задачи о поиске максимального паросочетания к задаче о поиске максимального потока.
    3. Контролирующее множество. Построение контроллирующего множества с помощью минимального разреза, полученного методом Форда-Фалкерсона (Пересекаем левую долю со вторым множеством разреза, а правую долю — с первым). Вывод, что минимальное контролирующее множество совпадает по размеру с паросочетанием.
  18. Обход графа в ширину и глубину.
    1. Структуры данных стек и очередь.
    2. Алгоритмы поиска в глубину (с помощью стека) и в ширину (с помощью очереди).
    3. Полный поиск в глубину или ширину: совершаем поиск из произвольной непосещенной вершины, пока они еще есть.
    4. Прямая и обратная нумерация вершин после поиска. Совпадение прямой и обратной нумерации в поиске в ширину.
    5. Поиск в ширину эквивалентен алгоритму Дейкстры с ребрами веса 1.
    6. Обратная нумерация в графе без циклов: если есть путь из $u$ в $v$, то номер первой — больше. Алгоритм топологической сортировки.
    7. Отношение взаимной достижимости вершин в ориентированном графе, компоненты сильной связности. Граф конденсации. Утверждение о максимальных значениях вершин каждой компоненты сильной связности в обратной нумерации: если из компоненты $u_0$ есть путь в компоненту $v_0$, то максимальный номер в компоненте $u_0$ больше максимального номера в компоненте $v_0$. Алгоритм поиска компонент сильной связности.