Algorytm Kernighana-Lina

W tym artykule szczegółowo zbadamy Algorytm Kernighana-Lina, analizując jego wpływ, znaczenie i konsekwencje dla dzisiejszego społeczeństwa. Od momentu powstania do chwili obecnej Algorytm Kernighana-Lina przyciąga uwagę wielu osób, wywołując debatę i refleksję w różnych sektorach. W trakcie tej analizy zbadamy kluczowe aspekty, które sprawiają, że Algorytm Kernighana-Lina jest tematem zainteresowania, a także jego możliwe reperkusje w sferze społecznej, politycznej, ekonomicznej i kulturalnej. Dzięki kompleksowej i krytycznej wizji będziemy starali się w pełni zrozumieć znaczenie Algorytm Kernighana-Lina w obecnym kontekście, oferując pełny przegląd, który pozwoli czytelnikowi zagłębić się w jego znaczenie i zakres.

Algorytm Kernighana-Lina
Rodzaj

problemu podziału grafu na 2 równe części

Struktura danych

graf ważony

Złożoność
Czasowa

Algorytm Kernighana-Linaheurystyczny algorytm o złożoności obliczeniowej rozwiązywania problemu podziału grafu na 2 równe części. Może pracować na grafach o dodatnich, jak i ujemnych wagach krawędzi.

Opis

Niech będzie grafem, gdzie to zbiór jego wierzchołków, a zbiór krawędzi. Algorytm próbuje znaleźć podział na dwa rozłączne, jednakowo liczne podzbiory i tak, by sumaryczna waga krawędzi między wierzchołkami z podzbioru i oznaczona przez była jak najmniejsza.

Niech będzie wewnętrznym kosztem , czyli sumą kosztów wszystkich krawędzi między i resztą wierzchołków z natomiast zewnętrznym kosztem czyli sumą kosztów krawędzi między i wierzchołkami z

Zdefiniujmy jako:

czyli różnicę między zewnętrznym i wewnętrznym kosztem W momencie wymiany i zysk wyraża się wyrażeniem:

gdzie jest kosztem krawędzi między i

Algorytm stara się znaleźć najkorzystniejszą sekwencję wymian wierzchołków między i przez maksymalizację funkcji celu określonej jako:

Należy pamiętać, że po wyborze optymalnych wierzchołków następuje ich zamiana, ale w kolejnej iteracji są one nie ruszane – rozpatruje się wierzchołków w każdym z podzbiorów, i tak dalej, aż nie pozostanie więcej wierzchołków do rozpatrzenia.

Co więcej, gdy wszystkie zyski z zamian w danej iteracji będą ujemne (zamiana zwiększy sumę krawędzi łączących podgrafy), to algorytm działa dalej, gdyż być może kolejne zamiany okażą się lepsze.

Pseudokod

 1  function Kernighan-Lin(G(V,E)):
 2      determine a balanced initial partition of the nodes into sets A and B
 3      do
 2         A1 := A; B1 := B
 4         compute D values for all a in A1 and b in B1
 5         for (i := 1 to |V|/2)
 6          find a from A1 and b from B1, such that g = D] + D] - 2*c is maximal
 7          move a to B1 and b to A1
 8          remove a and b from further consideration in this pass
 9          update D values for the elements of A1 = A1 / a and B1 = B1 / b
 10        end for
 11        find k which maximizes g_max, the sum of g,...,g
 12        if (g_max > 0) then
 13           Exchange a,a,...,a with b,b,...,b
 14     until (g_max <= 0)
 15  return G(V,E)

Zobacz też

Bibliografia

  • Kernighan, B.W.; Lin, Shen (1970). An efficient heuristic procedure for partitioning graphs. Bell Systems Technical Journal 49: 291–307.
  • Ravikumār, Si. Pi; Ravikumar, C.P (1995). Parallel methods for VLSI layout design. Greenwood Publishing Group. s. 73. ISBN 978-0-89391-828-6. OCLC 2009-06-12.