2.0 KiB
2.0 KiB
Теория конечных графов: Лабораторные работы 1-5
Проект представляет собой библиотеку на C++17 для работы с графами, реализующую фундаментальные алгоритмы.
Содержание
ЛР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).
- Далее данные согласно выбранному формату.