-
Notifications
You must be signed in to change notification settings - Fork 0
Home
std::pair first - узел ИЗ которого идет ребро second - узел В который идет ребро
Конструктор класса Трансверсали является функцией поиска трансверсали для заданных множеств из элементов T. Этапы выполнения задачи:
- Инициализация:
- Объединение множеств.
- Построение графа
- Построение внутренних ребер - принадлежность элемента к одному из подмножеств
- Построение псевдоребер от начального узла прохода и конечного узла (на самом деле они не очень-то и нужны - можно начинать сразу с левого узла)
- Проход по графу в соответствии с алгоритмом КИО и удаление/смена направлений ребер
- Будут подпункты
- Преобразование оставшихся в графе ребер ориентированных справо налево в выходные данные.
Задание: Построение трансверсали максимальной мощности для произвольного набора частично пересекающихся подмножеств.
Двудольный граф реализуем как множество направленных ребер.
Множества реализуем как список.
Объединение всех подмножеств является множеством Е. Левой долей графа являются элементы множества Е. Правой долей - подмножества S1, S2 и тд, то есть исходные множества. Ребрами ориентированного графа являются элементы подмножеств. Причем элементы подмножества Ж а, б, в - ребра от элементов всего множества к узлу Ж.
При решении задачи нам понадобятся алгоритм КИО-Школы "Максимальных паросочетаний" http://kioschool.eltech.ru/manipulators/user_show?id=5&tab=description
Что такое Транверсаль? https://ru.wikipedia.org/wiki/Трансверсаль Для проверки можно ли вообще построить Трансверсаль может понадобиться это: https://ru.wikipedia.org/wiki/Теорема_Холла