Grâce au théorème de min-cut max-flow, nous savons que nous pouvons utiliser n'importe quel algorithme pour calculer un flux maximum dans un graphe de réseau pour calculer une -min-cut. Par conséquent, la complexité du calcul d'une coupe minimale n'est pas plus que la complexité du calcul d'un débit maximal .( s , t ) ( s , t )
Serait-ce moins? Pourrait-il y avoir un algorithme pour calculer une coupe minimale plus rapide que n'importe quel algorithme de débit maximal?
J'ai essayé de trouver une réduction pour réduire le problème ) -max-flow au problème -min-cut, mais je n'ai pas pu en trouver un. Ma première pensée a été d'utiliser un algorithme de division et de conquête: trouver d'abord un min-cut, qui sépare le graphique en deux parties; trouver maintenant récursivement un max-flow pour la partie gauche et un max-flow pour la partie droite, et les combiner avec tous les bords traversant la coupe. Cela fonctionnerait en effet pour produire un débit maximum, mais son pire temps de fonctionnement pourrait être autant que fois plus grand que le temps de fonctionnement de l'algorithme de coupure min. Y a-t-il une meilleure réduction?( s , t ) O ( | V | )
Je me rends compte que le théorème de min-cut max-flow montre que la complexité du calcul de la valeur d'un max-flow est la même que la complexité du calcul de la capacité d'un min-cut, mais ce n'est pas ce que je demande. Je pose la question du problème de trouver un max-flow et de trouver un min-cut (explicitement).
Ceci est très étroitement lié au calcul d'un débit maximal à partir d'une coupe minimale , sauf: (1) je suis prêt à autoriser les réductions Cook (réductions Turing), pas seulement les réductions Karp (plusieurs réductions), et (2) peut-être, étant donné nous pouvons trouver un graphique tel que la coupe minimale de facilite le calcul du débit maximal de , ce qui est hors de portée pour cette autre question.G ′ G ′ G
Réponses:
Voici une approche possible:
Supposons que vous connaissiez la coupe S, puis trouver le flux de vers t est un problème de flux de réseau à coût min avec un coût nul, car vous connaissez exactement le flux sortant à chaque sommet de V ∖ S et à l'entrée à t . Supposons que f désigne un flux S - t et A la matrice nœud-arc (c'est-à-dire que la ligne i , col j a 1 si i est la queue de j , -1 si c'est la tête, zéro sinon), et soit b tel que A f = b si fS t V∖S t f S−t A i j i j b Af=b f satisfait l'offre / la demande et la conservation des flux. Ensuite, avec l'élimination gaussienne, nous pouvons trouver une solution réalisable dans opérations.|V|3
Pour trouver une coupe à partir d'un flux, nous devons construire le graphe résiduel qui prend au plus temps, puis potentiellement traverser | V | sommets.|E| |V|
Ainsi, pour des graphiques complets et la coupe minimale n'étant que la source ou le puits, la réduction prend le même temps dans les deux directions dans le pire des cas. Cependant, je pense que trouver une solution réalisable à peut être fait plus rapidement que | V | 3 étant donné la structure spéciale. Je ne sais pas comment le prouver.Af=b |V|3
la source