Календарный план

  • Общая информация

    Требования к программам-решениям

    1. Решения должны быть оформлены в виде одного файла.

    2. Все решения должны считывать входные данные из файла input.txt и записывать результат(ы) в файл output.txt, расположенные в одном каталоге с программой.

    3. Формат входных и выходных данных должен соблюдаться в соответствии с описанием задачи.

    Процесс сдачи задачи

    1. Решение отправляется в ejudge.

    2. Если ejudge сообщает о том, что все тесты пройдены, то нужно прийти и обсудить решение задачи с преподавателем.

    Регистрация на ejudge

    1. Идем на сайт http://ejudge.mmcs.sfedu.ru и жмем вход.

    2. Выбираем контест "Практика по курсу "Алгоритмы на графах".

    3. После регистрации в пункте "Информация о пользователе" надо нажать кнопку редактировать и в поле "Имя участника" указать ФИО полностью.

  • Лекция 1

    Вводная лекция. 

    На лекции обсуждаются термины из теории графов, которые будут использоваться в дальнейшем.

    Д/З.

    1. В стране из каждого города выходит 100 дорог и от любого города можно добраться до любого другого. Одну дорогу закрыли на ремонт. Докажите, что и теперь от любого города можно добраться до любого другого.
    2. Квадрат 8 на 8 выложили из спичек. Какое наименьшее число спичек надо убрать, чтобы с любого поля можно было пройти на любое другое, не перепрыгивая через спички?
    3. У князя Гвидона было трое сыновей. Среди его потомков 93 имели каждый по 2 сына и ни одной дочери, а все прочие умерли бездетными. Сколько всего потомков было у Гвидона?




  • Лекция 2

    Представление графов на компьютере.

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

  • Лекция 3

    Поиск в глубину. Определение двудольности. Построение эйлерового цикла. Проверка ацикличности. Поиск наименьшего общего предка (lca).

    Построение остовного дерева (дерева поиска в ширину). Время входа и выхода.


  • Лекция 4

    Определение компонент сильной связности. Определение мостов.

  • Лекция 5

    Правильная нумерация. Ориентированные ациклические графы (DAG). Алгоритм построения правильной нумерации через поиск источников в графе. 

  • Лекция 6

    Количество остовных деревьев. Теорема Кирхгофа.

    Построение минимального остовного дерева. Алгоритмы Краскала и Прима.

  • Лекция 7

    Поиск кратчайших расстояний на графе. Алгоритм Беллмана-Форда. Алгоритмы Дейкстры и его модификации.  Дерево кратчайших расстояний.
  • Лекция 8

    Алгоритм А*. Системы разностных ограничений.

    Задача о поиске кратчайших путей между всеми парами вершин. Алгоритм "перемножения матриц". Алгоритм Флойда-Уоршела.

    Транзитивное замыкание.


  • Лекция 9

    Потоки в сетях. Метод Форда-Фалкерсона.


  • Лекция 10

    Алгоритм Эдмондса-Карпа. Алгоритм Диница.

  • Лекция 11

    min cost - max flow

    Паросочетания. Алгоритм Куна.

  • Лекция 12

    Алгоритм Тата и алгоритм Рабина-Вазирани.
  • Лекция 13

    Алгоритм путей, деревьев и цветов.

  • Лекция 14

    Венгерский алгоритм.