Algoritme de Karger

En ciències de la computació i teoria de grafos, el algoritme de Karger és un procediment provabiliste per a calcular un tall mínim d'un grafo conexo. Va ser ideat per David Karger i publicat per primera volta en 1993.
L'idea de l'algoritme es basa en el concepte de contracció d'una aresta en un grafo no dirigit . Informalmente, la contracció d'una aresta fusiona els nodos i en un, reduint el número total de nodos del grafo en un. Totes les demés arestes que conecten o es reuniran al nodo fusionat, produint efectivament un multigrafo. L'algoritme bàsic de Karger contrau iterativamente arestes elegides aleatoriamente fins que solament queden dos nodos. Estos nodos representen un talle en el grafo original. Al iterar este algoritme bàsic un número suficient de voltes, es pot trobar un tall mínim en alta provabilitat.
El problema del tall mínim global
[editar | editar còdic]- Artícul principal → Tall mínim.
Un tall en un grafo no dirigit és una partició dels vèrtiços en dos conjunts no buits i disjuntos . El conjunt de corts d'un tall consistix en les arestes entre les dos parts. El tamany (o pes) d'un tall en un grafo no ponderat és la cardinalidad del conjunt de corts, és dir, el número d'arestes entre les dos parts.
Existixen maneres per a determinar si cada vèrtiç pertany a o a , pero dos d'estes opcions fan que o siguen interseccions buides i no generen corts. Entre les opcions restants, intercanviar els rols de i no altera el tall, per lo que cada cort es conta dos voltes; per lo tant, hi ha corts distints. El problema del tall mínim consistix en trobar el tall de menor tamany entre estos corts.
Per a grafos ponderats en pesos d'aresta positius , el pes del tall és la suma dels pesos de les arestes entre els vèrtiços de cada part
lo que concorda en la definició no ponderada de .
Un tall a voltes es denomina cort global per a distinguir-ho d'un tall - per a un parell de vèrtiços donat, que té el requisit adicional de que i . Tot cort global és un tall - per a algun . Per lo tant, el problema del tall mínim es pot resoldre en temps polinòmic iterando sobre totes les opcions de i resolent el problema de tall mínim resultant - utilisant el teorema de fluix màxim i tall mínim i un algoritme de temps polinòmic per al fluix màxim, com l'algoritme d'inserció i reetiquetado, encara que este enfocament no és òptim. Entre els millors algoritmes determinista per al problema de tall mínim global es troba l'algoritme de Stoer-Wagner, el temps del qual d'eixecució és .[1]
Algoritme de contracció
[editar | editar còdic]L'operació fonamental de l'algoritme de Karger és una variant de la contracció d'arestes. El resultat de contraure l'aresta és un nou nodo . Cada aresta o per a fins als extrems de l'aresta contreta es reemplaça per una aresta fins al nou nodo. Finalment, s'eliminen els nodos contrets i en totes les seues arestes incidents. En particular, el grafo resultant no conté bucles propis. El resultat de contraure l'aresta es denota com .
L'algoritme de contracció contrau repetidament arestes aleatòries en el grafo fins que solament queden dos nodos, moment en el qual solament hi ha un tall.
L'idea clau de l'algoritme és que és molt més provable que les arestes que no són de tall mínim se seleccionen aleatoriamente i es perguen per contracció, ya que les arestes en tall mínim solen ser àmpliament superades en número per les arestes que no són de tall mínim. Posteriorment, és plausible que les arestes en tall mínim sobrevixquen a tota la contracció d'arestes, i l'algoritme identificarà correctament l'aresta en tall mínim.

procediment contraure():
mentres
elegir uniformemente a l'encert
tornar l'únic tall en
Quan el grafo es representa utilisant una llista de adyacencia o una matriu de adyacencia, es pot utilisar una sola operació de contracció d'arestes en un número llineal d'actualisacions a l'estructura de senyes, per a un temps d'eixecució total de . Alternativament, el procediment pot considerar-se com una eixecució del algoritme de Kruskal per a construir l'arbre recubridor mínim en un grafo a on les arestes tenen pesos segons una permutació aleatòria . Eliminar l'aresta més pesada d'este arbre dona com a resultat dos components que descriuen un tall. D'esta manera, el procediment de contracció es pot dispondre com l'algoritme de Kruskal en el temps .

Els desenrolls més coneguts utilisen temps i espai de memòria, o temps i espai, respectivament.
Provabilitat d'èxit de l'algoritme de contracció
[editar | editar còdic]En un grafo en vèrtiços, l'algoritme de contracció torna un tall mínim en una provabilitat polinómicomente menuda, . Deu recordar-se que tot grafo té corts (segons lo explicat en la secció anterior), entre els quals poden ser, com a màxim, corts mínims. Per lo tant, la provabilitat d'èxit d'este algoritme és molt millor que la provabilitat d'elegir un tall a l'encert, que és, com a màxim, .
Per eixemple, un grafo cicle en vèrtiços té exactament corts mínims, donats per cada elecció de 2 arestes. El procediment de contracció troba cada u d'estos en la mateixa provabilitat.
Per a establir en major precisió el llímit inferior de la provabilitat d'èxit, siga el conjunt de les arestes en un tall mínim específic de tamany . L'algoritme de contracció torna si cap de les arestes aleatòries eliminades per l'algoritme pertany al conjunt de corts . En particular, la primera contracció d'aresta evita , lo que ocorre en una provabilitat de . El grau mínim de és a lo manco (de lo contrari, un vèrtiç de grau mínim induiria un tall més chicotet a on una de les dos particions conté solament el vèrtiç de grau mínim), per lo que . Per lo tant, la provabilitat de que l'algoritme de contracció elegixca una aresta de és:
La provabilitat de que l'algoritme de contracció en un grafo de -vèrtiços evite satisfà la recurrencia , en , que pot expandir-se com:
Repetició de l'algoritme de contracció
[editar | editar còdic]
En repetir l'algoritme de contracció voltes en eleccions aleatòries independents i obtindre el tall més menut, la provabilitat de no trobar un tall mínim és:
El temps total d'eixecució per a repeticions per a un grafo en vèrtiços i arestes és .
Referències
[editar | editar còdic]
Referències
[editar | editar còdic]
- Este artícul conté una traducció derivada de «Algoritmo de Karger» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.