Algoritmo de Karger

From Wikipedia, the free encyclopedia

Un grafo y dos de sus cortes. La línea punteada en rojo representa un corte con tres aristas que se cruzan. La línea discontinua en verde representa un corte mínimo de este grafo, que cruza solo dos aristas

En ciencias de la computación y teoría de grafos, el algoritmo de Karger es un procedimiento probabilista para calcular un corte mínimo de un grafo conexo. Fue ideado por David Karger y publicado por primera vez en 1993.[1]

La idea del algoritmo se basa en el concepto de contracción de una arista en un grafo no dirigido . Informalmente, la contracción de una arista fusiona los nodos y en uno, reduciendo el número total de nodos del grafo en uno. Todas las demás aristas que conectan o se reunirán al nodo fusionado, produciendo efectivamente un multigrafo. El algoritmo básico de Karger contrae iterativamente aristas elegidas aleatoriamente hasta que solo quedan dos nodos. Estos nodos representan un corte en el grafo original. Al iterar este algoritmo básico un número suficiente de veces, se puede encontrar un corte mínimo con alta probabilidad.

Un corte en un grafo no dirigido es una partición de los vértices en dos conjuntos no vacíos y disjuntos . El conjunto de cortes de un corte consiste en las aristas entre las dos partes. El tamaño (o peso) de un corte en un grafo no ponderado es la cardinalidad del conjunto de cortes, es decir, el número de aristas entre las dos partes.

Existen maneras para determinar si cada vértice pertenece a o a , pero dos de estas opciones hacen que o sean intersecciones vacías y no generan cortes. Entre las opciones restantes, intercambiar los roles de y no altera el corte, por lo que cada corte se cuenta dos veces; por lo tanto, hay cortes distintos. El problema del corte mínimo consiste en encontrar el corte de menor tamaño entre estos cortes.

Para grafos ponderados con pesos de arista positivos , el peso del corte es la suma de los pesos de las aristas entre los vértices de cada parte

lo que concuerda con la definición no ponderada de .

Un corte a veces se denomina corte global para distinguirlo de un corte - para un par de vértices dado, que tiene el requisito adicional de que y . Todo corte global es un corte - para algún . Por lo tanto, el problema del corte mínimo se puede resolver en tiempo polinómico iterando sobre todas las opciones de y resolviendo el problema de corte mínimo resultante - utilizando el teorema de flujo máximo y corte mínimo y un algoritmo de tiempo polinómico para el flujo máximo, como el algoritmo de inserción y reetiquetado, aunque este enfoque no es óptimo. Entre los mejores algoritmos deterministas para el problema de corte mínimo global se encuentra el algoritmo de Stoer-Wagner, cuyo tiempo de ejecución es .[2]

Algoritmo de contracción

Algoritmo de Karger-Stein

Referencias

Related Articles

Wikiwand AI