stringtranslate.com

Жадная раскраска

Две жадные раскраски одного и того же графа короны с использованием разных порядков вершин. Правый пример обобщается на 2-раскрашиваемые графы с n вершинами, где жадный алгоритм расходует n /2 цветов.

При изучении проблем раскраски графов в математике и информатике жадная раскраска или последовательная раскраска [1] — это раскраска вершин графа , образованная жадным алгоритмом , который последовательно рассматривает вершины графа и назначает каждой вершине ее первый доступный цвет. Жадные раскраски можно найти за линейное время, но они, как правило, не используют минимально возможное количество цветов.

Различные варианты последовательности вершин обычно приводят к различным раскраскам данного графа, поэтому большая часть изучения жадных раскрасок была посвящена тому, как найти хорошую упорядоченность. Всегда существует упорядоченность, которая дает оптимальную раскраску, но хотя такие упорядочения можно найти для многих специальных классов графов, их трудно найти в общем случае. Обычно используемые стратегии упорядочения вершин включают размещение вершин более высокой степени раньше вершин более низкой степени или выбор вершин с меньшим количеством доступных цветов в предпочтение вершинам с меньшими ограничениями.

Вариации жадной раскраски выбирают цвета в режиме онлайн , без каких-либо знаний о структуре неокрашенной части графа, или выбирают другие цвета, чем первый доступный, чтобы сократить общее количество цветов. Алгоритмы жадной раскраски применялись к задачам планирования и распределения регистров , анализу комбинаторных игр и доказательствам других математических результатов, включая теорему Брукса о связи между раскраской и степенью. Другие концепции в теории графов, полученные из жадной раскраски, включают число Гранди графа (наибольшее количество цветов, которое может быть найдено жадной раскраской) и хорошо раскрашенные графы , графы, для которых все жадные раскраски используют одинаковое количество цветов.

Алгоритм

Жадная раскраска для заданного порядка вершин может быть вычислена алгоритмом , который работает за линейное время . Алгоритм обрабатывает вершины в заданном порядке, назначая цвет каждой из них по мере обработки. Цвета могут быть представлены числами , и каждой вершине присваивается цвет с наименьшим номером, который еще не используется одним из ее соседей. Чтобы найти наименьший доступный цвет, можно использовать массив для подсчета количества соседей каждого цвета (или, в качестве альтернативы, для представления набора цветов соседей), а затем сканировать массив, чтобы найти индекс его первого нуля. [2]

На языке Python алгоритм можно выразить так:

def  first_available ( colors ): """Возвращает наименьшее неотрицательное целое число, не входящее в заданный набор цветов.  """ color = 0 while color in colors : color += 1 return color             def  greedy_coloring ( G ,  order ): """Найти жадную раскраску G в заданном порядке.  Предполагается, что представление G похоже на https://www.python.org/doc/essays/graphs/,  позволяя перебирать соседей узла/вершины с помощью "for w in G[node]".  Возвращаемое значение — словарь, сопоставляющий вершины с их цветами.  """  coloring  =  dict ()  for  node  in  order :  used_neighbour_colors  =  { coloring [ nbr ]  for  nbr  in  G [ node ]  if  nbr  in  coloring }  coloring [ node ]  =  first_available ( used_neighbour_colors )  return  coloring

Подпрограмма first_availableзанимает время, пропорциональное длине ее списка аргументов, поскольку она выполняет два цикла, один по самому списку и один по списку счетчиков той же длины. Время для общего алгоритма раскраски доминирует над вызовами этой подпрограммы. Каждое ребро в графе участвует только в одном из этих вызовов, одном для конечной точки ребра, которая находится позже в порядке вершин. Таким образом, сумма длин списков аргументов в first_availableи общее время для алгоритма пропорциональны количеству ребер в графе. [2]

Альтернативный алгоритм, производящий ту же самую раскраску, [3] заключается в выборе наборов вершин с каждым цветом, по одному цвету за раз. В этом методе каждый цветовой класс выбирается путем сканирования вершин в заданном порядке. Когда это сканирование встречает неокрашенную вершину , у которой нет соседей в , она добавляется к . Таким образом, становится максимальным независимым набором среди вершин, которым еще не были назначены меньшие цвета. Алгоритм многократно находит цветовые классы таким образом, пока все вершины не будут окрашены. Однако это включает в себя выполнение нескольких сканирований графа, по одному сканированию для каждого цветового класса, вместо метода, описанного выше, который использует только одно сканирование. [4]

Выбор заказа

Различные порядки вершин графа могут привести к тому, что жадная раскраска будет использовать разное количество цветов, начиная от оптимального количества цветов и заканчивая, в некоторых случаях, количеством цветов, пропорциональным количеству вершин в графе. Например, граф короны (граф, образованный из двух непересекающихся наборов из n /2 вершин { a 1 , a 2 , ... } и { b 1 , b 2 , ... } путем соединения a i с b j всякий раз, когда ij ) может быть особенно плохим случаем для жадной раскраски. При порядке вершин a 1 , b 1 , a 2 , b 2 , ... жадная раскраска будет использовать n /2 цветов, по одному цвету для каждой пары ( a i , b i ) . Однако оптимальное количество цветов для этого графа равно двум, один цвет для вершин a i и другой для вершин b i . [5] Существуют также графы, в которых с высокой вероятностью случайно выбранный порядок вершин приводит к количеству цветов, намного большему, чем минимум. [6] Поэтому при жадной раскраске важно тщательно выбирать порядок вершин.

Хорошие заказы

Вершины любого графа всегда можно упорядочить таким образом, что жадный алгоритм даст оптимальную раскраску. Ведь при любой оптимальной раскраске можно упорядочить вершины по их цветам. Тогда при использовании жадного алгоритма с таким порядком результирующая раскраска будет автоматически оптимальной. [7] Однако, поскольку оптимальная раскраска графа является NP-полной , любая подзадача, которая позволила бы быстро решить эту задачу, включая нахождение оптимального порядка для жадной раскраски, является NP-трудной . [8]

В интервальных графах и хордовых графах , если вершины упорядочены в обратном порядке идеального исключения , то более ранние соседи каждой вершины будут образовывать клику . Это свойство заставляет жадную раскраску производить оптимальную раскраску, потому что она никогда не использует больше цветов, чем требуется для каждой из этих клик. Упорядочение исключения может быть найдено за линейное время, если оно существует. [9]

Более строго, любой идеальный порядок исключения является наследственно оптимальным , что означает, что он является оптимальным как для самого графа, так и для всех его индуцированных подграфов . Совершенно упорядочиваемые графы (включая хордовые графы , графы сравнимости и дистанционно-наследуемые графы ) определяются как графы, которые имеют наследственно оптимальный порядок. [10] Распознавание совершенно упорядочиваемых графов также является NP-полным. [11]

Плохие заказы

Число цветов, полученных жадной раскраской для наихудшего порядка заданного графа, называется его числом Гранди . [12] Так же, как найти хороший порядок вершин для жадной раскраски сложно, так же сложно найти и плохой порядок вершин. Для заданного графа G и числа k определить , существует ли порядок вершин G , который заставляет жадный алгоритм использовать k или более цветов, является NP-полной задачей. В частности, это означает , что трудно найти наихудший порядок для G. [12]

Графики, для которых порядок не имеет значения

Хорошо раскрашенные графы — это графы, для которых все упорядочения вершин производят одинаковое количество цветов. Это количество цветов в этих графах равно как хроматическому числу, так и числу Гранди. [12] Они включают в себя кографы , которые являются именно графами, в которых все индуцированные подграфы хорошо раскрашены. [13] Однако, это co-NP-полно , чтобы определить, хорошо ли раскрашен граф. [12]

Если случайный граф нарисован из модели Эрдёша–Реньи с постоянной вероятностью включения каждого ребра, то любой порядок вершин, выбранный независимо от ребер графа, приводит к раскраске, количество цветов которой близко к удвоенному оптимальному значению, с высокой вероятностью . Остается неизвестным, существует ли какой-либо метод полиномиального времени для нахождения значительно лучших раскрасок этих графов. [3]

Вырождение

Треугольная призма и квадратная антипризма — графы, жадная раскраска которых с использованием порядка вырождения дает большее, чем оптимальное, количество цветов.

Поскольку оптимальные упорядочения вершин трудно найти, были использованы эвристики , которые пытаются сократить количество цветов, не гарантируя оптимальное количество цветов. Обычно используемый порядок для жадной раскраски заключается в выборе вершины v минимальной степени , упорядочивании подграфа с удаленной v рекурсивно , а затем размещении v последней в порядке. Наибольшая степень удаленной вершины, с которой сталкивается этот алгоритм, называется вырожденностью графа , обозначаемой d . В контексте жадной раскраски та же стратегия упорядочивания также называется наименьшим последним упорядочением. [14] Это упорядочение вершин и вырожденность могут быть вычислены за линейное время. [15] Его можно рассматривать как улучшенную версию более раннего метода упорядочивания вершин, упорядочения по наибольшему первому, которое сортирует вершины в порядке убывания их степеней. [16]

С упорядочением вырожденности жадная раскраска будет использовать не более d  + 1 цвета. Это связано с тем, что при раскрашивании каждая вершина будет иметь не более d уже раскрашенных соседей, поэтому один из первых d  + 1 цветов будет свободен для использования. [17] Жадная раскраска с упорядочением вырожденности может находить оптимальные раскраски для определенных классов графов, включая деревья, псевдолеса и графы короны. [18] Маркосян, Гаспарян и Рид (1996) определяют граф как -совершенный, если для и каждого индуцированного подграфа хроматическое число равно вырожденности плюс один. Для этих графов жадный алгоритм с упорядочением вырожденности всегда оптимален. [19] Каждый -совершенный граф должен быть графом без четных дыр , потому что четные циклы имеют хроматическое число два и вырожденность два, что не соответствует равенству в определении -совершенных графов. Если граф и его дополнительный граф оба не имеют четных дырок, они оба являются -совершенными. Графы, которые являются как совершенными графами , так и -совершенными графами, являются в точности хордовыми графами . На графах, не имеющих четных дырок, в более общем случае порядок вырождения приближает оптимальную раскраску с точностью не более чем в два раза больше оптимального числа цветов; то есть его коэффициент аппроксимации равен 2. [20] На графах единичных дисков его коэффициент аппроксимации равен 3. [21] Треугольная призма является наименьшим графом, для которого один из ее порядков вырождения приводит к неоптимальной раскраске, а квадратная антипризма является наименьшим графом, который не может быть оптимально раскрашен с использованием любого из ее порядков вырождения. [18]

Адаптивные заказы

Брелаз (1979) предлагает стратегию, называемую DSatur , для упорядочения вершин в жадной раскраске, которая чередует построение упорядочения с процессом раскраски. В его версии алгоритма жадной раскраски следующая вершина для раскрашивания на каждом шаге выбирается как вершина с наибольшим числом различных цветов в ее окрестности . В случае связей вершина максимальной степени в подграфе неокрашенных вершин выбирается из связанных вершин. Отслеживая наборы соседних цветов и их мощности на каждом шаге, можно реализовать этот метод за линейное время. [22]

Этот метод может найти оптимальную раскраску для двудольных графов , [23] всех кактусовых графов , всех графов-колес , всех графов с не более чем шестью вершинами и почти любого -раскрашиваемого графа. [24] Хотя Левек и Маффрей (2005) изначально утверждали, что этот метод находит оптимальную раскраску для графов Мейниеля , позже они нашли контрпример к этому утверждению. [25]

Альтернативные схемы выбора цвета

Можно определить вариации алгоритма жадной раскраски, в которых вершины заданного графа раскрашиваются в заданной последовательности, но в которых цвет, выбранный для каждой вершины, не обязательно является первым доступным цветом. К ним относятся методы, в которых неокрашенная часть графа неизвестна алгоритму, или в которых алгоритму предоставляется некоторая свобода для выбора лучшего выбора раскраски, чем базовый жадный алгоритм.

Онлайн-выбор

Альтернативные стратегии выбора цвета были изучены в рамках онлайн-алгоритмов . В задаче онлайн-раскраски графа вершины графа по одной в произвольном порядке предъявляются алгоритму раскраски; алгоритм должен выбрать цвет для каждой вершины, основываясь только на цветах и ​​смежностях среди уже обработанных вершин. В этом контексте качество стратегии выбора цвета измеряется ее конкурентным отношением , отношением между количеством используемых ею цветов и оптимальным количеством цветов для данного графа. [26]

Если на граф не наложены дополнительные ограничения, оптимальное конкурентное отношение будет лишь слегка сублинейным. [27] Однако для интервальных графов возможно постоянное конкурентное отношение, [28] в то время как для двудольных графов и разреженных графов может быть достигнуто логарифмическое отношение. Действительно, для разреженных графов стандартная жадная стратегия раскраски с выбором первого доступного цвета достигает этого конкурентного отношения, и можно доказать соответствующую нижнюю границу конкурентного отношения любого онлайн-алгоритма раскраски. [26]

Экономная окраска

Экономная раскраска для заданного графа и порядка вершин была определена как раскраска, произведенная жадным алгоритмом, который раскрашивает вершины в заданном порядке и вводит новый цвет только тогда, когда все предыдущие цвета смежны с заданной вершиной, но может выбирать, какой цвет использовать (вместо того, чтобы всегда выбирать наименьший), когда он может повторно использовать существующий цвет. Упорядоченное хроматическое число — это наименьшее количество цветов, которое может быть получено для заданного порядка таким образом, а охроматическое число — это наибольшее упорядоченное хроматическое число среди всех раскрасок вершин заданного графа. Несмотря на свое различное определение, охроматическое число всегда равно числу Гранди. [29]

Приложения

Поскольку он быстрый и во многих случаях может использовать несколько цветов, жадную раскраску можно использовать в приложениях, где требуется хорошая, но не оптимальная раскраска графа. Одним из ранних применений жадного алгоритма было решение таких задач, как планирование курса, в котором набор задач должен быть назначен заданному набору временных интервалов, избегая назначения несовместимых задач одному и тому же временному интервалу. [4] Его также можно использовать в компиляторах для распределения регистров , применяя его к графу, вершины которого представляют значения, которые должны быть назначены регистрам, а ребра представляют конфликты между двумя значениями, которые не могут быть назначены одному и тому же регистру. [30] Во многих случаях эти интерференционные графы являются хордовыми графами , что позволяет жадной раскраске производить оптимальное назначение регистров. [31]

В комбинаторной теории игр для беспристрастной игры , заданной в явной форме как направленный ациклический граф , вершины которого представляют игровые позиции, а ребра представляют допустимые ходы из одной позиции в другую, алгоритм жадной раскраски (использующий обратный топологический порядок графа) вычисляет ним-значение каждой позиции. Эти значения могут быть использованы для определения оптимальной игры в любой отдельной игре или любой дизъюнктной сумме игр. [32]

Для графа максимальной степени Δ любая жадная раскраска будет использовать не более Δ + 1 цветов. Теорема Брукса утверждает, что за двумя исключениями ( клики и нечетные циклы ) требуется не более Δ цветов. Одно доказательство теоремы Брукса заключается в нахождении упорядочения вершин, в котором первые две вершины смежны с конечной вершиной, но не смежны друг с другом, и каждая вершина, кроме последней, имеет по крайней мере одного более позднего соседа. Для упорядочения с этим свойством алгоритм жадной раскраски использует не более Δ цветов. [33]

Примечания

  1. ^ Митчем (1976).
  2. ^ Аб Хоанг и Шритаран (2016), теорема 28.33, стр. 738; Хусфельдт (2015), Алгоритм G
  3. ^ ab Frieze & McDiarmid (1997).
  4. ^ ab Уэлш и Пауэлл (1967).
  5. ^ Джонсон (1974); Хасфельдт (2015).
  6. ^ Кучера (1991); Хусфельдт (2015).
  7. ^ Хусфельдт (2015).
  8. ^ Маффрей (2003).
  9. ^ Роуз, Люкер и Тарьян (1976).
  10. ^ Хватал (1984); Хусфельдт (2015).
  11. ^ Миддендорф и Пфайффер (1990).
  12. ^ abcd Закер (2006).
  13. ^ Кристен и Селков (1979).
  14. ^ Митчем (1976); Хусфельдт (2015).
  15. ^ Матула и Бек (1983).
  16. ^ Уэлш и Пауэлл (1967); Хасфельдт (2015).
  17. ^ Матула (1968); Секерес и Уильф (1968).
  18. ^ ab Косовски и Манушевски (2004).
  19. ^ Маркосян, Гаспарян и Рид (1996); Маффрей (2003).
  20. ^ Маркосян, Гаспарян и Рид (1996).
  21. ^ Греф, Штумпф и Вайсенфельс (1998).
  22. ^ Брелаз (1979); Левек и Мафре (2005).
  23. ^ Брелаз (1979).
  24. ^ Янчевски и др. (2001).
  25. ^ Левек и Маффрей (2005).
  26. ^ ab Irani (1994).
  27. ^ Ловас, Сакс и Троттер (1989); Вишванатан (1992).
  28. ^ Кирстед и Троттер (1981).
  29. ^ Симмонс (1982); Эрдеш и др. (1987).
  30. ^ Полетто и Саркар (1999). Хотя Полетто и Саркар описывают свой метод распределения регистров как не основанный на раскраске графа, он, по-видимому, аналогичен жадной раскраске.
  31. ^ Перейра и Палсберг (2005).
  32. ^ Например, см. раздел 1.1 Ниваша (2006).
  33. ^ Ловас (1975).

Ссылки