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

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

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

    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

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