Voici une question d'un examen passé que j'essaie de résoudre:
Pour un graphique non orienté avec des poids positifs , j'essaie de trouver la coupe minimale. Je ne connais pas d'autres façons de faire cela en dehors de l'utilisation du théorème de coupure max-débit min. Mais le graphique n'est pas orienté, alors comment dois-je le diriger? J'ai pensé à diriger les bords aux deux extrémités, mais alors quel sommet serait la source et quel sommet serait le puits? Ou existe-t-il un autre moyen de trouver la coupe minimale?
algorithms
graph-theory
Jozef
la source
la source
Réponses:
Il existe de nombreux algorithmes pour trouver la coupe minimale d'un graphe non orienté. L'algorithme de Karger est un algorithme randomisé simple mais efficace.
En bref, l'algorithme fonctionne en sélectionnant les bords uniformément au hasard et en les contractant avec des boucles auto supprimées. Le processus s'arrête lorsqu'il reste deux nœuds et que les deux nœuds représentent une coupure. Pour augmenter la probabilité de réussite, l'algorithme randomisé est exécuté plusieurs fois. En faisant les descentes, on garde la trace de la plus petite coupe trouvée jusqu'à présent.
Voir l'entrée Wikipedia pour plus de détails. Pour peut-être une meilleure introduction, consultez le premier chapitre de Probability and Computing: Randomized Algorithms and Probabilistic Analysis de Michael Mitzenmacher et Eli Upfal.
la source
Pour chaque bord non dirigé créez deux bords dirigés ( u , v , w e i g h t ) et ( v , u , w e i g h t ) .(u,v,weight) (u,v,weight) (v,u,weight)
Peu importe.
la source
L' algorithme Ford-Fulkerson devrait fonctionner pour vous. Vous pouvez créer deux faux sommets, à savoir. la source et le puits.
Jetez également un œil à l' algorithme Edmonds-Karp . Il en existe deux variantes:
, par opposition à Ford-Fulkerson qui choisit une voie arbitraire.
Ceci est une bonne ressource.
la source