logo search
лекции по МОТС / ДИСКРЕТНАЯ МАТЕМАТИКА Графы

12.3.2. Приближенный алгоритм последовательного раскрашивания

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

Алгоритм 12.1. Алгоритм последовательного раскрашивания Вход: граф G.

Выход: раскраска графа — массив С : array [l..p] of l..p. for v € V do

C[v]: = 0 { все не раскрашены } end for for v e V do

A: ={!,... ,p} { все цвета } for u e T+(v) do

A: = A\{C[u]} { занятые для v цвета } end for

C[v] : = ттА { минимальный свободный цвет } end for

ЗАМЕЧАНИЕ

Таким образом, красить вершины необходимо последовательно, выбирая среди допусти­мых цветов минимальный.

обоснование

В основном цикле рассматриваются все вершины, и каждая из них получает допустимую раскраску, таким образом, процедура строит допустимую раскраску.