Jump to content

Алгоритм MaxCliqueDyn

Разработчики: Insilab (Национальный институт химии Словении)
Статус разработки: Активный
Написано: С++
Тип: теория графов , алгоритм максимальной клики , задача клики
Лицензия: Стандартная общественная лицензия GNU
Веб-сайт: крест .org /maxclick /

Алгоритм MaxCliqueDyn — это алгоритм поиска максимальной клики в неориентированном графе.

MaxCliqueDyn основан на алгоритме MaxClique, который находит максимальную клику ограниченного размера. Граница находится с помощью алгоритма раскраски . MaxCliqueDyn расширяет MaxClique, включая динамически изменяющиеся границы.

Этот алгоритм был разработан Янесом Концем , а его описание было опубликовано в 2007 году. [1] По сравнению с более ранними алгоритмами, MaxCliqueDyn имеет улучшенный алгоритм раскраски (ColorSort) и применяет более точные и более затратные в вычислительном отношении верхние границы для части пространства поиска. [1] Оба улучшения сокращают время поиска максимальной клики. Помимо сокращения времени, улучшенный алгоритм раскраски также уменьшает количество шагов, необходимых для поиска максимальной клики.

Алгоритм MaxClique

[ редактировать ]

Алгоритм MaxClique [2] — это базовый алгоритм, на основе которого расширяется MaxCliqueDyn. Псевдокод : алгоритма

procedure MaxClique(R, C) is
    Q = Ø, Qmax = Ø

    while R ≠ Ø do
        choose a vertex p with a maximum color C(p) from set R
        R := R\{p}
        if |Q| + C(p)>|Qmax| then
            Q := Q ⋃ {p}
            if R ⋂ Γ(p) ≠ Ø then
                obtain a vertex-coloring C' of G(R ⋂ Γ(p))
                MaxClique(R ⋂ Γ(p), C')
            else if |Q|>|Qmax| then Qmax := Q
            Q := Q\{p}
        else
            return
    end while

где Q — набор вершин растущей в данный момент клики, Q max — набор вершин наибольшей найденной в данный момент клики, R — набор вершин-кандидатов, а C — соответствующий набор цветовых классов. Алгоритм MaxClique рекурсивно ищет максимальную клику, добавляя и удаляя вершины в Q и из Q .

Алгоритмы окраски

[ редактировать ]

Примерный алгоритм окраски

[ редактировать ]

MaxClique использует приблизительный алгоритм раскраски [2] чтобы получить набор цветовых классов C . В алгоритме приближенной раскраски вершины окрашиваются одна за другой в том же порядке, в котором они появляются в наборе вершин-кандидатов R , так что, если следующая вершина p не смежна со всеми вершинами того же цветового класса, она добавляется к этому классу, и если p смежна хотя бы с одной вершиной в каждом из существующих классов цветов, она помещается в новый класс цвета.

Алгоритм MaxClique возвращает вершины R, упорядоченные по цветам. Вершины с цветами никогда не добавляются в текущую клику Q . Следовательно, сортировка этих вершин по цвету бесполезна для алгоритма MaxClique.

Цветовая сортировка

[ редактировать ]

Алгоритм ColorSort улучшает алгоритм приблизительной раскраски, принимая во внимание приведенное выше наблюдение. Каждой вершине присвоен цветовой класс. . Если , вершина перемещается в множество R (за последней вершиной в R ). Если , то вершина остается в и не перемещается в R . В конце концов, все вершины, оставшиеся в (где ) добавляются в конец буквы R по мере их появления в каждом и в порядке возрастания по индексу . В алгоритме ColorSort только этим вершинам присваиваются цвета. .

Псевдокод алгоритма ColorSort: [1]

procedure ColorSort(R, C) is
    max_no := 1;
    kmin := |Qmax| − |Q| + 1;
    if kmin ≤ 0 then kmin := 1;
    j := 0;
    C1 := Ø; C2 := Ø;

    for i := 0 to |R| − 1 do
        p := R[i]; {the i-th vertex in R}
        k := 1;
        while Ck ⋂ Γ(p) ≠ Ø do
            k := k+1;
        if k > max_no then
            max_no := k;
            Cmax_no+1 := Ø;
        end if
        Ck := Ck ⋃ {p};
        if k < kmin then
            R[j] := R[i];
            j := j+1;
        end if
    end for

    C[j−1] := 0;

    for k := kmin to max_no do
        for i := 1 to |Ck| do
            R[j] := Ck[i];
            C[j] := k;
            j := j+1;
        end for
    end for

Пример

Приведенный выше граф можно описать как набор кандидатов из вершин R = {7 (5) , 1 (4) , 4 (4) , 2 (3) , 3 (3) , 6 (3) , 5 (2) , 8 (2) } и используется в качестве входных данных как для алгоритма приблизительной окраски, так и для алгоритма ColorSort. Любой алгоритм можно использовать для построения следующей таблицы:

к С к
1 7 (5) , 5 (2)
2 1 (4) , 6 (3) , 8 (2)
3 4 (4) , 2 (3) , 3 (3)

Приближенный алгоритм раскраски возвращает набор вершин R = {7 (5) , 5 (2) , 1 (4) , 6 (3) , 8 (2) , 4 (4) , 2 (3) , 3 (3) } и соответствующий ему набор цветовых классов C = {1,1,2,2,2,3,3,3}. Алгоритм ColorSort возвращает набор вершин R = {7 (5) , 1 (4) , 6 (3) , 5 (2) , 8 (2) , 4 (4) , 2 (3) , 3 (3) } и соответствующий ему набор цветовых классов C = {–,–,–,–,–,3,3,3}, где – представляет неизвестный класс цвета с k < 3.

Алгоритм MaxCliqueDyn

[ редактировать ]

Алгоритм MaxCliqueDyn расширяет алгоритм MaxClique, используя алгоритм ColorSort вместо алгоритма приблизительной окраски для определения классов цвета. На каждом шаге MaxClique алгоритм MaxCliqueDyn также пересчитывает степени вершин в R относительно вершины, на которой в данный момент находится алгоритм. Затем эти вершины сортируются в порядке убывания их степеней в графе G(R) . Тогда алгоритм ColorSort рассматривает вершины в R, отсортированные по их степеням в индуцированном графе G(R), а не в G . При этом количество шагов, необходимых для нахождения максимальной клики, сокращается до минимума. Несмотря на это, общее время работы алгоритма MaxClique не увеличивается, поскольку вычислительные затраты определения степеней и сортировки вершин в R остается прежним.

Псевдокод алгоритма MaxCliqueDyn: [1]

procedure MaxCliqueDyn(R, C, level) is
    S[level] := S[level] + S[level−1] − Sold[level];
    Sold[level] := S[level−1];

    while R ≠ Ø do
        choose a vertex p with maximum C(p) (last vertex) from R;
        R := R\{p};
        if |Q| + C[index of p in R] > |Qmax| then
            Q := Q ⋃ {p};
            if R ⋂ Γ(p) ≠ Ø then
                if S[level]/ALL STEPS < Tlimit then
                    calculate the degrees of vertices in G(R ⋂ Γ(p));
                    sort vertices in R ⋂ Γ(p) in a descending order
                    with respect to their degrees;
                end if
                ColorSort(R ⋂ Γ(p), C')
                S[level] := S[level] + 1;
                ALL STEPS := ALL STEPS + 1;
                MaxCliqueDyn(R ⋂ Γ(p), C', level + 1);
            else if |Q| > |Qmax| then Qmax := Q;
            Q := Q\{p};
        else
            return
    end while

значения T Предел можно определить путем экспериментирования на случайных графиках. В оригинальной статье было определено, что алгоритм лучше всего работает при T limit = 0,025.

  1. ^ Перейти обратно: а б с д Янез Конц; Душанка Янезич (2007). «Улучшенный алгоритм ветвей и границ для задачи максимальной клики» (PDF) . МАТЧ-коммуникации в математической и компьютерной химии . 58 (3): 569–590. Исходный код
  2. ^ Перейти обратно: а б Томита, Эцудзи; Секи, Томокадзу (2003). «Эффективный алгоритм ветвей и границ для поиска максимальной клики» (PDF) . В Калуде, CS; Диннин, MJ; Вайновски, В. (ред.). ДМТСС 2003 . ЛНКС. стр. 278–289. См. также: Э. Томита; Т. Секи (2007). «Эффективный алгоритм ветвей и границ для поиска максимальной клики». Джей Глоб Оптим . 37 : 95–111. дои : 10.1007/s10898-006-9039-7 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 18cd737650805811e428477bd5a1ea2b__1699978860
URL1:https://arc.ask3.ru/arc/aa/18/2b/18cd737650805811e428477bd5a1ea2b.html
Заголовок, (Title) документа по адресу, URL1:
MaxCliqueDyn algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)