Algorithme de Karger
En algorithmique des graphes, l'algorithme de Karger est un algorithme probabiliste pour le problĂšme de la coupe minimum (MIN-CUT). C'est donc un algorithme utilisant une source d'alĂ©as, pour produire une solution correcte avec une bonne probabilitĂ©. Le problĂšme en question est le suivant : Ă©tant donnĂ© un graphe non orientĂ© trouver un ensemble de sommets non trivial minimisant le nombre d'arĂȘtes sortant de cet ensemble.
L'outil principal de l'algorithme est la contraction alĂ©atoire d'arĂȘtes, qui fait dĂ©croĂźtre le nombre de sommets.
Il est dû à David Karger et a été publié en 1993[1]. Plusieurs variations ont ensuite été proposées.
Notion de coupe minimum
L'objet du problĂšme est un graphe non orientĂ©, un objet mathĂ©matique qui permet par exemple de reprĂ©senter des rĂ©seaux de communications. Les nĆuds du rĂ©seau sont appelĂ©s les sommets et les connexions sont les arĂȘtes. MathĂ©matiquement, un graphe non orientĂ© G est la donnĂ©e d'un ensemble fini, notĂ© V (les sommets) et d'un sous-ensemble E de VĂV (les arĂȘtes).
On parle de coupe pour dĂ©signer deux concepts proches : une partition des sommets en deux sous-ensembles non vides ou bien les arĂȘtes ayant une extrĂ©mitĂ© dans chacun de ces sous-ensembles. Lorsqu'on parle du cardinal d'une coupe on entend le nombre d'arĂȘtes de cette coupe. Une coupe minimum dans un graphe non orientĂ© est une coupe de cardinal minimum. Il peut exister plusieurs coupes minimums.
Le concept de coupe minimum est reliĂ© Ă un autre concept fondamental en thĂ©orie des graphes, la notion de flot maximum. En effet le thĂ©orĂšme flot-max/coupe-min Ă©tablit qu'Ă©tant donnĂ© deux sommets particuliers s et t dans le graphe, le flot maximum pouvant passer par le rĂ©seau de s Ă t est Ă©gal au cardinal de la coupe minimum avec la contrainte que s doit ĂȘtre dans un sous-ensemble et t dans l'autre.
ProblĂšme de la coupe minimum
Le problĂšme de la coupe minimum consiste, Ă©tant donnĂ© un graphe, Ă dĂ©terminer une coupe minimum. Ce problĂšme peut ĂȘtre rĂ©solu de façon dĂ©terministe en cherchant un flot maximum entre toute paire de sommets grĂące au thĂ©orĂšme flot-max/coupe-min. Il existe de nombreux algorithmes pour cela, par exemple l'algorithme de Ford-Fulkerson ou l'algorithme de poussage/rĂ©Ă©tiquetage. L'algorithme de Karger est beaucoup plus simple[2] mais probabiliste.
Description de l'algorithme
Notion de contraction
L'algorithme est basĂ© sur une procĂ©dure de contraction d'arĂȘte. Cette procĂ©dure consiste, Ă©tant donnĂ© un graphe G et une arĂȘte e=(a,b), Ă fusionner a et b pour former un unique sommet ab reliĂ© Ă la fois aux voisins de a et au voisins de b (hormis a et b). Le graphe ainsi formĂ© est notĂ© G/e. Cette transformation peut faire apparaĂźtre des arĂȘtes en double si a et b partagent un voisin. AprĂšs plusieurs contractions on a des multi-arĂȘtes et on travaille donc avec des multigraphes. Le point important est qu'une coupe dans le graphe aprĂšs contraction, Ă©tait dĂ©jĂ une coupe dans le graphe de dĂ©part[3].
Description informelle
L'algorithme consiste simplement Ă contracter une arĂȘte tirĂ©e uniformĂ©ment dans le graphe, Ă la contracter, et Ă recommencer l'opĂ©ration jusqu'Ă n'avoir que deux sommets. Les deux sommets reprĂ©sentent la partition de sommets, et les arĂȘtes entre eux deux sont les arĂȘtes de la coupe.
Un exemple dâexĂ©cution de l'algorithme est donnĂ© par l'image suivante.
Pseudo-code
Le pseudo-code est le suivant :
fonction contraction(G=(V,E)): tant que |V| > 2 choisir e dans E alĂ©atoirement (*fonction alĂ©atoire uniforme*) G â G/e retourner l'unique coupure de G
Analyse de l'algorithme
Terminaison
Le nombre de sommets du graphe est réduit de un à chaque étape, il y a donc n-2 étapes, et l'algorithme termine.
Probabilité d'erreur
Soit k la taille de la coupe minimum du graphe G, et soit C une telle coupe (vue comme un ensemble d'arĂȘtes). Remarquons que le degrĂ© minimum de G est k sinon on pourrait isoler un sommet de bas degrĂ© et obtenir une coupe de taille infĂ©rieure Ă k. On cherche Ă savoir la probabilitĂ© d'avoir C Ă la fin de l'algorithme, c'est-Ă -dire la probabilitĂ© de n'avoir contractĂ© aucune arĂȘte de C.
En notant n le nombre de sommet et lâĂ©vĂ©nement « l'arĂȘte contractĂ©e Ă l'Ă©tape n'appartient pas Ă C » , on peut montrer[4] que
Donc la probabilité de succÚs est au moins .
En répétant l'algorithme fois, on peut avoir un algorithme avec une probabilité de succÚs constante. En effet la probabilité d'échec pour l'algorithme répété est au plus car les exécutions sont indépendantes. Cette quantité tend vers 1/e quand n tend vers l'infini.
Complexité
Pour un graphe donnĂ© sous forme de liste d'adjacence ou de matrice d'adjacence, un run de l'algorithme peut ĂȘtre implĂ©mentĂ© en temps , on a donc une complexitĂ© quadratique en fonction du nombre de nĆuds. Avec un nombre quadratique de rĂ©pĂ©titions on obtient un algorithme en .
Cette complexitĂ© peut ĂȘtre amĂ©liorĂ©e pour obtenir un algorithme quasi quadratique, de probabilitĂ© d'erreur tendant vers zĂ©ro avec n tendant vers l'infini[5].
Historique et extensions
L'algorithme de Karger a Ă©tĂ© inventĂ© par Karger, et publiĂ© en 1993[1]. Plusieurs variations et dĂ©veloppements ont ensuite Ă©tĂ© proposĂ©s. Par exemple la complexitĂ© a Ă©tĂ© amĂ©liorĂ©e par Karger et Stein[6]. Karger et Motwani ont montrĂ© que MIN-CUT Ă©tait dans la classe de complexitĂ© appelĂ©e NC, en dĂ©randomisant un autre algorithme utilisant le mĂȘme principe de contraction[7] - [8].
L'algorithme de Karger est connu pour sa simplicité et est parfois utilisé pour introduire la notion d'algorithme probabiliste[9].
Notes et références
- David Karger, « Global Min-cuts in RNC and Other Ramifications of a Simple Mincut Algorithm », dans Proc. 4th Annual ACM-SIAM Symposium on Discrete Algorithms, (lire en ligne)
- Pour la simplicité, voir la phrase suivante dans Motwani et Raghavan 1995 : Note the extreme simplicity of the randomized algoritm we have just studied. In contrast, most deterministic algorithms for this problem are based on network flows and are considerably more complicated.
- Motwani et Raghavan 1995.
- Voir par exemple Motwani et Raghavan 1995.
- L'algorithme amélioré est décrit dans notes de cours sur l'algorithme de Karger, par Eric Vigoda (Georgia Institute of Technology), et l'article original est (Karger et Stein 1993).
- Version conférence : Karger et Stein 1993, version journal : Karger et Stein 1996
- David R. Karger et Rajeev Motwani, « Derandomization through approximation: An NC algorithm for minimum cuts », dans Proceedings of the twenty-sixth annual ACM symposium on Theory of computing, , p. 497-506
- Une dérandomisation consiste en la transformation d'un algorithme randomisé en un algorithme déterministe. Celle de l'article en question utilise des marches aléatoires sur des graphes expanseurs.
- Voir par exemple Motwani et Raghavan 1995 et les notes du cours de Sanjeev Arora (UniversitĂ© de Princeton (Todayâs topic is simple but gorgeous: Kargerâs min cut algorithm and its extension.).
Bibliographie
- (en) David Karger, « Global Min-cuts in RNC and Other Ramifications of a Simple Mincut Algorithm », dans Proc. 4th Annual ACM-SIAM Symposium on Discrete Algorithms, (lire en ligne)
- (en) David R. Karger et Clifford Stein, « An algorithm for minimum cuts », dans STOC, , p. 757-765
- (en) David R. Karger et Clifford Stein, « A new approach to the minimum cut problem », Journal of the ACM, vol. 43, no 4,â , p. 601 (DOI 10.1145/234533.234534, lire en ligne)
- (en) Rajeev Motwani et Prabhakar Raghavan, Randomized Algorithms, Cambridge, New York et Melbourne, Cambridge University Press, (réimpr. 1997, 2000), 1re éd., 476 p. (ISBN 978-0-521-47465-8, lire en ligne), chap. 1 (« Introduction »), p. 7-9
Liens externes
- Nicolas Schabanel, « Description de l'algorithme en vidéo », sur Université Paris Diderot, .
- (en) Eric Vigoda, « Notes de cours sur l'algorithme de Karger », sur Georgia Institute of Technology,
- (en) Sanjeev Arora, « Notes de cours », sur Université de Princeton,
- (en) Sotiris Nikoletseas, « The Probabilistic Method - Randomized Algorithms (slides of lecture 1): A Monte Carlo Minimum Cut Algorithm », sur Université de Patras