Interested Article - Алгоритм раскраски рёбер Мисры и Гриса
- 2020-02-25
- 1
Алгоритм раскраски рёбер Мисры и Гриса — это алгоритм полиномиального времени в теории графов , который находит рёберную раскраску любого графа. Раскраска требует максимум цветов, где — максимальная степень графа. Это значение оптимально для некоторых графов, а по теореме Визинга оно на один цвет больше, чем оптимальная раскраска остальных графов.
Алгоритм опубликовали в 1992 году Джаядев Мисра и Дэвид Грис . Он является упрощением алгоритма Белы Болобаша .
Этот алгоритм является самым быстрым из известных почти оптимальных алгоритмов раскраски рёбер, выполняющимся за время . Более быстрый алгоритм со временем объявлен в 1985 в техническом отчёте Габова и др., но так и не опубликован .
Как правило, оптимальная раскраска рёбер является NP-полной задачей, так что вряд ли для этой задачи алгоритм полиномиального времени существует. Существуют, однако, алгоритмы точной раскраски рёбер с экспоненциальным временем работы, которые дают оптимальное решение.
Веера
Говорят, что цвет x отсутствует в вершине u , если для всех (u, z) E(G).
Веер в вершине u — это последовательность вершин F[1:k], которая удовлетворяет следующим условиям:
- F[1:k] является непустой последовательностью различных соседей вершины u
- Ребро (F[1], u) E(G) не выкрашено
- Цвет ребра (F[i+1], u) отсутствует в вершине F[i] для
Если дан веер F, любое ребро (F[i], X) для является ребром веера . Пусть c и d будут двумя цветами. Путь cd X — это путь, который проходит через вершину X, содержит только рёбра с цветами c и d и является максимальным (мы не можем добавить какое-либо ребро цветом из {c, d}). Заметим, что существует для X только один такой путь, так как максимум одно ребро каждого цвета может быть смежно заданной вершине.
Вращение веера
Если дан веер F [1: k ] вершины X , операция «вращения веера» делает следующее (одновременно):
- c(F[i],X)=c(F[i+1],X)
- Снимает раскраску ребра (F[k],X)
Эта операция оставляет раскраску правильной, поскольку для каждого i цвет отсутствовал в .
Обращение пути
Операция «перекраска пути cd X » меняет все цвета c на пути на d и все цвета d на c . Обращение пути может быть полезным для освобождения цвета в X, если X является конечной вершиной пути — если вершина X была смежна цвету c , но не d , теперь она будет смежна цвету d , но не c , что освобождает цвет c для другого ребра, смежного X. Применение операции не нарушает допустимость раскраски, поскольку для конечных вершин только один из цветов из {c, d} может быть смежен вершине, а для других элементов пути операция лишь переключает цвета рёбер, никакого нового цвета не добавляется.
Алгоритм
Вход: Граф G.
Выход: Правильная раскраска рёбер графа G
Положим U := E(G)
Пока U ≠ ∅ выполнить
- Возьмём любое ребро (u, v) из U.
- Пусть F[1:k] будет максимальным веером u, начинающимся в F[1]=v.
- Пусть c будет цветом, который отсутствует в u и d будет цветом, отсутствующим в F[k].
- Обращаем путь cd u
- Пусть будет таким, что является веером, а d отсутствует в w.
- Вращаем F' и положим c(u, w)=d.
- U := U — {(u, v)}
конец Пока
Доказательство корректности
Корректность алгоритма доказывается в три этапа. Сначала показывается, что перекраска пути cd u гарантирует вершину w, такую что является веером и d отсутствует в w . Тогда эта раскраска рёбер будет правильной и требует не более цветов.
Инверсия пути
До перекраски пути возможны два случая:
- Веер не имеет рёбер, выкрашенных в d . Поскольку F является максимальным веером и d отсутствует в F [ k ], из этого следует, что не существует ребра с цветом d , смежного u . В противном случае, если бы такое ребро существовало, его можно было бы присоединить к F [ k ], так как d отсутствует в F [ k ], но F максимален, получаем противоречие. Тогда d отсутствует в u и, поскольку c также отсутствует в u , путь cd u пуст и инверсия не влияет на граф. Положим .
- Веер имеет одно ребро с цветом d . Пусть (u,F[x+1]) будет этим ребром. Заметим, что , поскольку (u,F[1]) не выкрашено. Тогда цвет d отсутствует в F [ x ]. Также , поскольку веер имеет длину k , но существует . Мы можем теперь показать, что после перекраски для каждого цвет отсутствует в F[y]. Заметим, что до перекраски цвет не совпадал ни с c , ни с d , поскольку c отсутствует в u , а содержит цвет d и раскраска правильна. Обращение влияет только на рёбра, которые выкрашены в c или d , так что (1) выполняется.
F [ x ] может содержаться в пути cd u или нет. Если оно не содержится в пути, то перекраска не влияет на множество отсутствующих цветов в F [ x ] и d останется отсутствующим в нём. Мы можем положить . В противном случае мы можем показать, что F остаётся веером и d остаётся отсутствующим в F [ k ]. Поскольку d отсутствовал в F [ x ] до перекраски, а F [ x ] находится на пути, F [ x ] является конечной вершиной пути cd u и c будет отсутствовать в F [ x ] после перекраски. Перекраска изменит цвет с d на c . Тогда, поскольку c теперь отсутствует в F [ x ] и выполняется (1), F остаётся веером. Также d остаётся отсутствующим в F [ k ], поскольку F [ k ] не на пути cd u (предположим, что оно на пути, но, поскольку d отсутствует в F [ k ], он должен быть конечной точкой пути, однако конечными точками являются u и F [ x ]). Выберем .
В любом случае, веер является префиксом F , откуда следует что также является веером.
Раскраска рёбер правильна
Это можно показать методом математической индукции по числу раскрашенных рёбер. База индукции: нет раскрашенных рёбер, раскраска правильная. Шаг индукции: предположим, что раскраска была правильной на предыдущей итерации. На текущей итерации после перекраски пути d становится отсутствующим в u и по предыдущему результату он будет отсутствовать в w . Вращение не разрушает правильности раскраски. Тогда, после того как положим , раскраска остаётся правильной.
Алгоритм требует максимум цветов
На заданном шаге используются только цвета c и d . Поскольку u смежна по меньшей мере с одним нераскрашенным ребром и её степень ограничена , по меньшей мере один цвет из доступен для c . Для d F [ k ] может иметь степень и не иметь нераскрашенных смежных рёбер. Тогда может потребоваться цветов.
Сложность
На каждом шаге вращение снимает раскраску ребра (u, w), раскрашивая при этом рёбра (u,F[1]) и (u, v), которые до этого цвета не имели. Таким образом, появляется одно дополнительное раскрашенное ребро. Следовательно, цикл будет выполнен раз. Поиск максимального веера, цветов c и d и перекраска пути cd u могут быть выполнены за время . Нахождение w и вращение F' занимает времени. Поиск и удаление ребра (u, v) могут быть осуществлены с помощью стека за постоянное время (операция выборки последнего элемента) и этот стек может быть заполнен за время . Таким образом, каждая операция цикла занимает времени и общее время работы алгоритма равно .
Примечания
- , с. 131–133.
- , с. 94.
- .
Литература
- Jayadev Misra, David Gries . // . — 1992. — Т. 41 , вып. 3 . — doi : .
- Béla Bollobás. Graph theory. — Elsevier, 1982.
- Harold N. Gabow, Takao Nishizeki, Oded Kariv, Daniel Leven, Osamu Terada. Algorithms for edge-coloring graphs. — Tohoku University, 1985. — (Tech. Report TRECIS-8501).
- 2020-02-25
- 1