Articulo de referencia

El algoritmo de Karger

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

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

En informática y teoría de grafos , el algoritmo de Karger es un algoritmo aleatorio para calcular un corte mínimo de un grafo conexo . Fue inventado 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.(,v){\displaystyle (u,v)}en un grafo no dirigidoGRAMO=(V,mi){\displaystyle G=(V,E)}. De manera informal, la contracción de una arista fusiona los nodos{\displaystyle u}yv{\displaystyle v}en uno, reduciendo el número total de nodos del grafo en uno. Todos los demás bordes que conectan{\displaystyle u}ov{\displaystyle v}se "reconectan" al nodo fusionado, produciendo efectivamente un multigrafo . El algoritmo básico de Karger contrae iterativamente aristas elegidas al azar hasta que solo quedan dos nodos; esos 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 .

El problema del corte mínimo global

Un corte(S,T){\displaystyle (S,T)}en un grafo no dirigidoGRAMO=(V,mi){\displaystyle G=(V,E)}es una partición de los vérticesV{\displaystyle V}en dos conjuntos no vacíos y disjuntosST=V{\displaystyle S\cup T=V}El conjunto de corte de un corte consta de los bordes{vmi:S,vT}{\displaystyle \{\,uv\in E\colon u\in S,v\in T\,\}}entre las dos partes. El tamaño (o peso ) de un corte en un grafo no ponderado es la cardinalidad del conjunto de corte, es decir, el número de aristas entre las dos partes,

w(S,T)=|{vmi:S,vT}|.{\displaystyle w(S,T)=|\{\,uv\in E\colon u\in S,v\in T\,\}|\,.}

Hay2|V|{\displaystyle 2^{|V|}}formas de elegir para cada vértice si pertenece aS{\displaystyle S}o paraT{\displaystyle T}, pero dos de estas opciones hacenS{\displaystyle S}oT{\displaystyle T}vacíos y no dan lugar a recortes. Entre las opciones restantes, intercambiar los roles deS{\displaystyle S}yT{\displaystyle T}no cambia el corte, por lo que cada corte se cuenta dos veces; por lo tanto, hay2|V|11{\displaystyle 2^{|V|-1}-1}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 positivosw:miR+{\displaystyle w\dos puntos E\rightarrow \mathbf {R} ^{+}}El peso del corte es la suma de los pesos de las aristas entre vértices en cada parte.

w(S,T)=vmi:S,vTw(v),{\displaystyle w(S,T)=\sum _{uv\in E\colon u\in S,v\in T}w(uv)\,,}

lo cual concuerda con la definición no ponderada dew=1{\displaystyle w=1}.

Un corte a veces se denomina “corte global” para distinguirlo de un “s{\displaystyle s}-t{\displaystyle t}cortar” para un par de vértices dado, lo cual tiene el requisito adicional de quesS{\displaystyle s\in S}ytT{\displaystyle t\in T}Cada recorte global es uns{\displaystyle s}-t{\displaystyle t}cortado para algunoss,tV{\displaystyle s,t\in V}Por lo tanto, el problema del corte mínimo se puede resolver en tiempo polinomial iterando sobre todas las opciones des,tV{\displaystyle s,t\in V}y resolviendo el mínimo resultantes{\displaystyle s}-t{\displaystyle t}problema de corte utilizando el teorema de flujo máximo-corte mínimo y un algoritmo de tiempo polinomial para flujo máximo , como el algoritmo push-relabel , aunque este enfoque no es óptimo. Mejores algoritmos deterministas para el problema de corte mínimo global incluyen el algoritmo Stoer-Wagner , que tiene un tiempo de ejecución deO(metronorte+norte2registronorte){\displaystyle O(mn+n^{2}\log n)}. [ 2 ]

Algoritmo de contracción

La operación fundamental del algoritmo de Karger es una forma de contracción de aristas . El resultado de contraer la arista es...mi={,v}{\displaystyle e=\{u,v\}}es un nodo nuevov{\displaystyle uv}Cada borde{w,}{\displaystyle \{w,u\}}o{w,v}{\displaystyle \{w,v\}}paraw{,v}{\displaystyle w\notin \{u,v\}}Los extremos del borde contraído se reemplazan por un borde.{w,v}{\displaystyle \{w,uv\}}al nuevo nodo. Finalmente, los nodos contraídos {\displaystyle u}yv{\displaystyle v}con todos sus bordes incidentes eliminados. En particular, el grafo resultante no contiene bucles propios. El resultado de la contracción del bordemi{\displaystyle e}se denotaGRAMO/mi{\displaystyle G/e}.

La arista marcada se contrae hasta convertirse en un único nodo.

El algoritmo de contracción contrae repetidamente aristas aleatorias en el grafo, hasta que solo quedan dos nodos, momento en el que solo hay un único corte.

La idea clave del algoritmo es que es mucho más probable que los bordes que no son de corte mínimo se seleccionen aleatoriamente y se pierdan por contracción, ya que los bordes de corte mínimo suelen ser superados en número por los que no lo son. Por consiguiente, es plausible que los bordes de corte mínimo sobrevivan a toda la contracción de bordes, y el algoritmo los identificará correctamente.

Ejecución exitosa del algoritmo de Karger en un grafo de 10 vértices. El corte mínimo tiene un tamaño de 3.
contrato de procedimiento (GRAMO=(V,mi){\displaystyle G=(V,E)}): mientras|V|>2{\displaystyle |V|>2} elegirmimi{\displaystyle e\in E}uniformemente al azar GRAMOGRAMO/mi{\displaystyle G\leftarrow G/e}devolver el único corte enGRAMO{\displaystyle G}

Cuando el grafo se representa mediante listas de adyacencia o una matriz de adyacencia , se puede implementar una única operación de contracción de aristas con un número lineal de actualizaciones de la estructura de datos, para un tiempo de ejecución total deO(|V|2){\displaystyle O(|V|^{2})}Alternativamente, el procedimiento puede verse como una ejecución del algoritmo de Kruskal para construir el árbol de expansión mínima en un grafo donde las aristas tienen pesos.w(mii)=π(i){\displaystyle w(e_{i})=\pi (i)}según una permutación aleatoriaπ{\displaystyle \pi }Al eliminar la arista más pesada de este árbol se obtienen dos componentes que describen un corte. De esta forma, el procedimiento de contracción se puede implementar como el algoritmo de Kruskal en tiempoO(|mi|registro|mi|){\displaystyle O(|E|\log |E|)}.

La selección aleatoria de aristas en el algoritmo de Karger corresponde a la ejecución del algoritmo de Kruskal en un grafo con rangos de aristas aleatorios hasta que solo queden dos componentes.

Las implementaciones más conocidas utilizanO(|mi|){\displaystyle O(|E|)}tiempo y espacio, oO(|mi|registro|mi|){\displaystyle O(|E|\log |E|)}tiempo yO(|V|){\displaystyle O(|V|)}espacio, respectivamente. [ 1 ]

Probabilidad de éxito del algoritmo de contracción

En un gráficoGRAMO=(V,mi){\displaystyle G=(V,E)}connorte=|V|{\displaystyle n=|V|}vértices, el algoritmo de contracción devuelve un corte mínimo con probabilidad polinómicamente pequeña.(norte2)1{\displaystyle {\binom {n}{2}}^{-1}}. Recuerda que cada grafo tiene2norte11{\displaystyle 2^{n-1}-1}recortes (según la discusión en la sección anterior), entre los cuales como máximo(norte2){\displaystyle {\tbinom {n}{2}}}pueden ser cortes mínimos. Por lo tanto, la probabilidad de éxito de este algoritmo es mucho mejor que la probabilidad de elegir un corte al azar, que es como máximo(norte2)2norte11{\displaystyle {\frac {\tbinom {n}{2}}{2^{n-1}-1}}}.

Por ejemplo, el gráfico de ciclos ennorte{\displaystyle n}vértices tiene exactamente(norte2){\displaystyle {\binom {n}{2}}}cortes mínimos, dados por cada elección de 2 aristas. El procedimiento de contracción encuentra cada uno de ellos con igual probabilidad.

Para establecer aún más el límite inferior de la probabilidad de éxito, seado{\displaystyle C}denotan los bordes de un corte mínimo específico de tamañok{\displaystyle k}El algoritmo de contracción devuelvedo{\displaystyle C}si ninguno de los bordes aleatorios eliminados por el algoritmo pertenece al conjunto de cortedo{\displaystyle C}. En particular, la primera contracción de borde evitado{\displaystyle C}, lo cual ocurre con probabilidad1k/|mi|{\displaystyle 1-k/|E|}. El grado mínimo deGRAMO{\displaystyle G}es al menosk{\displaystyle k}(de lo contrario, un vértice de grado mínimo induciría un corte más pequeño donde una de las dos particiones contiene solo el vértice de grado mínimo), por lo que|mi|nortek/2{\displaystyle |E|\geqslant nk/2}Por lo tanto, la probabilidad de que el algoritmo de contracción seleccione una arista dedo{\displaystyle C}es

k|mi|knortek/2=2norte.{\displaystyle {\frac {k}{|E|}}\leqslant {\frac {k}{nk/2}}={\frac {2}{n}}.}

La probabilidadpagnorte{\displaystyle p_{n}}que el algoritmo de contracción en unnorte{\displaystyle n}-el gráfico de vértices evitado{\displaystyle C}satisface la recurrenciapagnorte(12norte)pagnorte1{\displaystyle p_{n}\geqslant \left(1-{\frac {2}{n}}\right)p_{n-1}}, conpag2=1{\displaystyle p_{2}=1}, que puede ampliarse como

pagnortei=0norte3(12nortei)=i=0norte3nortei2nortei=norte2nortenorte3norte1norte4norte2352413=(norte2)1.{\displaystyle p_{n}\geqslant \prod _{i=0}^{n-3}{\Bigl (}1-{\frac {2}{n-i}}{\Bigr )}=\prod _{i=0}^{n-3}{\frac {n-i-2}{n-i}}={\frac {n-2}{n}}\cdot {\frac {n-3}{n-1}}\cdot {\frac {n-4}{n-2}}\cdots {\frac {3}{5}}\cdot {\frac {2}{4}}\cdot {\frac {1}{3}}={\binom {n}{2}}^{-1}\,.}

Repetir el algoritmo de contracción

10 repeticiones del procedimiento de contracción. La quinta repetición encuentra el corte mínimo de tamaño 3.

Al repetir el algoritmo de contracciónT=(norte2)lnnorte{\displaystyle T={\binom {n}{2}}\ln n}veces con elecciones aleatorias independientes y devolviendo el corte más pequeño, la probabilidad de no encontrar un corte mínimo es

[1(norte2)1]T1milnnorte=1norte.{\displaystyle \left[1-{\binom {n}{2}}^{-1}\right]^{T}\leq {\frac {1}{e^{\ln n}}}={\frac {1}{n}}\,.}

El tiempo total de ejecución paraT{\displaystyle T}repeticiones para un gráfico connorte{\displaystyle n}vértices ymetro{\displaystyle m}bordes esO(Tmetro)=O(norte2metroregistronorte){\displaystyle O(Tm)=O(n^{2}m\log n)}.

Algoritmo de Karger-Stein

Una extensión del algoritmo de Karger, realizada por David Karger y Clifford Stein, logra una mejora de un orden de magnitud. [ 3 ]

La idea básica es realizar el procedimiento de contracción hasta que la gráfica alcancet{\displaystyle t}vértices.

contrato de procedimiento (GRAMO=(V,mi){\displaystyle G=(V,E)},t{\displaystyle t}): mientras|V|>t{\displaystyle |V|>t} elegirmimi{\displaystyle e\in E}uniformemente al azar GRAMOGRAMO/mi{\displaystyle G\leftarrow G/e}devolverGRAMO{\displaystyle G}

La probabilidadpagnorte,t{\displaystyle p_{n,t}}que este procedimiento de contracción evita un corte específicodo{\displaystyle C}en unnorte{\displaystyle n}-grafo de vértices es

pagnorte,ti=0nortet1(12nortei)=(t2)/(norte2).{\displaystyle p_{n,t}\geq \prod _{i=0}^{n-t-1}{\Bigl (}1-{\frac {2}{n-i}}{\Bigr )}={\binom {t}{2}}{\Bigg /}{\binom {n}{2}}\,.}

Esta expresión es aproximadamentet2/norte2{\displaystyle t^{2}/n^{2}}y se vuelve menos que12{\displaystyle {\frac {1}{2}}}alrededort=norte/2{\displaystyle t=n/{\sqrt {2}}}. En particular, la probabilidad de que una arista dedo{\displaystyle C}La contracción aumenta hacia el final. Esto justifica la idea de cambiar a un algoritmo más lento después de un cierto número de pasos de contracción.

procedimiento fastmincut(GRAMO=(V,mi){\displaystyle G=(V,E)}): si|V|6{\displaystyle |V|\leq 6}: devolver contrato(GRAMO{\displaystyle G},2{\displaystyle 2}) demás : t1+|V|/2{\displaystyle t\leftarrow \lceil 1+|V|/{\sqrt {2}}\rceil }GRAMO1{\displaystyle G_{1}\leftarrow }contrato(GRAMO{\displaystyle G},t{\displaystyle t}) GRAMO2{\displaystyle G_{2}\leftarrow }contrato(GRAMO{\displaystyle G},t{\displaystyle t}) devolver min{fastmincut(GRAMO1{\displaystyle G_{1}}), corte mínimo rápido(GRAMO2{\displaystyle G_{2}})}

Análisis

El parámetro de contracciónt{\displaystyle t}se elige de manera que cada llamada a contraer tenga una probabilidad de éxito de al menos 1/2 (es decir, de evitar la contracción de una arista de un conjunto de corte específico).do{\displaystyle C}). Esto permite modelar la parte exitosa del árbol de recursión como un árbol binario aleatorio generado por un proceso crítico de Galton-Watson y analizarlo en consecuencia. [ 3 ]

La probabilidadPAG(norte){\displaystyle P(n)}que este árbol aleatorio de llamadas exitosas contiene un camino lo suficientemente largo como para llegar a la base de la recursión y encontrardo{\displaystyle C}viene dada por la relación de recurrencia

PAG(norte)=1(112PAG(1+norte2))2{\displaystyle P(n)=1-\left(1-{\frac {1}{2}}P\left({\Bigl \lceil }1+{\frac {n}{\sqrt {2}}}{\Bigr \rceil }\right)\right)^{2}}

con soluciónPAG(norte)=Ω(1registronorte){\displaystyle P(n)=\Omega \left({\frac {1}{\log n}}\right)}El tiempo de ejecución de fastmincut satisface

T(norte)=2T(1+norte2)+O(norte2){\displaystyle T(n)=2T\left({\Bigl \lceil }1+{\frac {n}{\sqrt {2}}}{\Bigr \rceil }\right)+O(n^{2})}

con soluciónT(norte)=O(norte2registronorte){\displaystyle T(n)=O(n^{2}\log n)}Para lograr una probabilidad de errorO(1/norte){\displaystyle O(1/n)}El algoritmo puede repetirseO(registronorte/PAG(norte)){\displaystyle O(\log n/P(n))}tiempos, para un tiempo total de ejecución deT(norte)registronortePAG(norte)=O(norte2registro3norte){\displaystyle T(n)\cdot {\frac {\log n}{P(n)}}=O(n^{2}\log ^{3}n)}Esto supone una mejora de un orden de magnitud con respecto al algoritmo original de Karger. [ 3 ]

Límite de mejora

Para determinar un corte mínimo, hay que tocar cada arista del grafo al menos una vez, lo cual esΘ(norte2){\displaystyle \Theta (n^{2})}tiempo en un grafo denso . El algoritmo de corte mínimo de Karger-Stein toma el tiempo de ejecución deO(norte2lnO(1)norte){\displaystyle O(n^{2}\ln ^{O(1)}n)}, que es muy parecido a eso.

Referencias

  1. 1 2 Karger, David (1993). "Cortes mínimos globales en RNC y otras ramificaciones de un algoritmo simple de corte mínimo" . Actas del 4.º Simposio Anual ACM-SIAM sobre Algoritmos Discretos .
  2. Stoer, M.; Wagner, F. (1997). "Un algoritmo simple de corte mínimo" . Journal of the ACM . 44 (4): 585. doi : 10.1145/263867.263872 . S2CID 15220291 . 
  3. 1 2 3 Karger, David R. ; Stein, Clifford (1996). "Un nuevo enfoque al problema del corte mínimo" (PDF) . Journal of the ACM . 43 (4): 601. doi : 10.1145/234533.234534 . S2CID 5385337 .