Паросочетания-2: Stable matching, Венгерка, раскраски (5 сентября 2018)
- Паросочетание в произвольном графе
- Рандомизированный алгоритм поиска паросочетания: неправильная версия с раздвоением, правильная версия без раздвоения
- Классификация рёбер
- Задача: для каждого ребра графа определить "обязано", "может", "не может"
- Симметрическая разность, рассуждения для произвольного графа про чётные циклы и чётные пути
- Утверждение #2 про "рёбра из M, которые обязаны лежать". Утверждение #1 про "рёбра не из M, которые могут лежать".
- Алгоритм нахождения всех чётных циклов и путей для двудольного графа за O(E)
- Stable Matching
- Def: у каждого есть список предпочтений, нет одновременно двух человек, которые больше хотят перейти друг к другу, чем к партнёрам.
- Стабильное паросочетание не обязательно максимальное.
- Алгоритм: мальчики предлагают, девочки отказывают. Реализация за линейное от размера входных данных время.
- Доказательство корректности алгоритма (рассмотрим конечный момент, от противного)
− Перерыв −
- Паросочетание минимального веса в двудольном графе: Hungary, Hungry, Венгерский алгоритм.
- Постановка задачи: ищем совершенное паросочетание минимального веса в Kn,n
- Если ∀ i, j: aij ≥ 0, а мы нашли парсоч на нулях, победа. Основная операция: += к строке, столбцу.
- Запускаем Куна. Уменьшаем A+ ∪ B- до нуля, при этом увеличивается A- ∪ B+, но там нет рёбер паросочетания.
- Реализация за O(V3): чтобы найти минимум, действуем, как в Приме; чтобы быстро увеличить используем потенциалы row[], col[]
- Теоремы и алгоритмы о раскрасках (формулировки, простые алгоритмы)
- Что можно красить? Вершины, рёбра. И там, и там об этом можно думать, как о разбиении на независимые мн-ва (паросочетания).
- Вершинная покраска: жадность даёт алгоритм за D+1. Брукс говорит, что почти всегда можно в D. 3-Coloring ∈ NP-hard
- Вершинная покраска: годная жадность − удаляем вершину, красим без неё, её докрашиваем в min возможный цвет
- Рёберная покраска: жадность даёт 2D+1. Визинг говорит, что или D, или D+1.
- Рёберная покраска двудольного графа: дополним до регулярного, в регулярном существует, отщепим.
- Алгоритм построения паросочетания, покрывающего ровно нужные вершины, получаем алгоритм за O(E2).