Рекурсивный алгоритм наибольшего первого числа
Алгоритм Recursive Largest First ( RLF ) — это эвристика для решения NP-сложной задачи раскраски графов . Первоначально он был предложен Фрэнком Лейтоном в 1979 году. [1]
Алгоритм RLF присваивает цвета вершинам графа, создавая каждый цветовой класс по одному. Для этого он идентифицирует максимальный независимый набор вершин в графе, присваивает им один и тот же цвет, а затем удаляет эти вершины из графа. Эти действия повторяются с оставшимся подграфом до тех пор, пока не останется вершин.
Для формирования высококачественных решений (решений с использованием небольшого количества цветов) алгоритм RLF использует специализированные эвристические правила, чтобы попытаться идентифицировать независимые множества «хорошего качества». Эти эвристики делают алгоритм RLF точным для двудольных , циклических и колесных графов . [2] графа Однако в целом алгоритм является приблизительным и вполне может возвращать решения, в которых используется больше цветов, чем хроматическое число .
Описание
[ редактировать ]Алгоритм можно описать следующими тремя шагами. В конце этого процесса дает разбиение вершин, представляющих допустимое - раскраска графика .
- Позволять быть пустым решением. Кроме того, пусть это граф, который мы хотим раскрасить, содержащий набор вершин и набор кромок .
- Определите максимальный независимый набор . Для этого:
- Первая вершина, добавленная к должна быть вершиной в у которого наибольшее число соседей.
- Последующие вершины добавлены в следует выбирать те, которые (а) в данный момент не смежны ни с одной вершиной в и (б) имеют максимальное число соседей, смежных с вершинами в . Связи в условии (б) можно разорвать, выбрав вершину с минимальным числом соседей, не входящих в . Вершины добавляются в таким образом до тех пор, пока невозможно будет добавить дополнительные вершины.
- Теперь установите и удаляем вершины от . Если все еще содержит вершины, то вернитесь к шагу 2; иначе конец.
Пример
[ редактировать ]Рассмотрим график показано справа. Это круговой граф , поэтому его оптимально раскрасить с помощью RLF. В результате выполнения алгоритма вершины выбираются и раскрашиваются в следующем порядке:
- Вертекс (цвет 1)
- Вертекс , , а потом (цвет 2)
- Вертекс , , а потом (цвет 3)
Это дает окончательное трехцветное решение. .
Производительность
[ редактировать ]Позволять — количество вершин в графе и пусть быть числом ребер. Используя обозначение большого О , в своей оригинальной публикации Лейтон утверждает, что сложность RLF должна быть ; однако это можно улучшить. Большая часть затрат на этот алгоритм приходится на шаг 2, на котором выбор вершин производится в соответствии с эвристическими правилами, изложенными выше. Действительно, каждый раз, когда вершина выбирается для добавления в независимое множество , информацию о соседях необходимо пересчитывать для каждой неокрашенной вершины. Эти расчеты можно выполнить в время, а это означает, что общая сложность RLF . [2]
Если эвристику шага 2 заменить случайным выбором, то сложность этого алгоритма сводится к ; однако результирующий алгоритм обычно возвращает решения более низкого качества по сравнению с решениями RLF. [2] Теперь оно также будет неточным для двудольных , циклических и колесных графов .
В ходе эмпирического сравнения, проведенного Льюисом в 2021 году, было показано, что RLF дает значительно лучшую раскраску вершин, чем альтернативные эвристики, такие как жадный алгоритм и DSatur Алгоритм на случайных графах . Однако время выполнения RLF также оказалось выше, чем у этих альтернатив, из-за его более высокой общей сложности. [2]
Ссылки
[ редактировать ]- ^ Лейтон, Ф. (1979). «Алгоритм раскраски графов для больших задач планирования» . Журнал исследований Национального бюро стандартов . 84 (6): 489–503. дои : 10.6028/jres.084.024 . ПМК 6756213 . ПМИД 34880531 .
- ^ Jump up to: а б с д Льюис, Р. (2021). Руководство по раскраске графов: алгоритмы и приложения . Тексты по информатике. Спрингер. дои : 10.1007/978-3-030-81054-2 . ISBN 978-3-030-81053-5 . S2CID 57188465 .
Внешние ссылки
[ редактировать ]- Высокопроизводительные алгоритмы раскраски графов Набор алгоритмов раскраски графов (реализованных на C++), используемых в книге «Руководство по раскраске графов: алгоритмы и приложения» (Springer International Publishers, 2021).