Vlad/README.md
2026-09-15 00:28:59 +05:00

2.0 KiB
Raw Permalink Blame History

Теория конечных графов: Лабораторные работы 1-5

Проект представляет собой библиотеку на C++17 для работы с графами, реализующую фундаментальные алгоритмы.

Содержание

  1. ЛР1: Структуры данных
  2. ЛР2: MST
  3. ЛР3: Эйлеровы циклы/пути
  4. ЛР4: Паросочетания
  5. ЛР5: Потоки в сетях

ЛР1: Разработка класса Graph

Реализованы три представления графа:

  • C: Матрица смежности
  • L: Списки смежности (std::set)
  • E: Список рёбер

ЛР2: Остовное дерево минимального веса (MST)

  • Прим (на базе std::priority_queue)
  • Краскал (DSU)
  • Борувка (DSU)

ЛР3: Эйлеровы пути и циклы

  • Алгоритм Флери (поиск мостов)
  • Алгоритм Иерхольцера (эффективный O(M) обход)

ЛР4: Паросочетания

  • Алгоритм Куна для поиска максимального паросочетания в двудольных графах.

ЛР5: Потоки в сетях

  • Эдмондс-Карп (BFS)
  • Диниц (слоистая сеть)

Сборка и запуск

Сборка:

g++ -std=c++17 -O2 *.cpp -o graph

Запуск:

./graph [input_file] [output_file]

Формат входных данных

  • Первая строка: Тип (C, L, E) и количество вершин (N).
  • Вторая строка: Ориентированность (0/1) и Взвешенность (0/1).
  • Далее данные согласно выбранному формату.