Nous savons que le calcul d'un débit maximal resp. une coupure minimale d'un réseau avec des capacités est équivalente; cf. le théorème de min-cut max-flow .
Nous avons des algorithmes (plus ou moins efficaces) pour calculer les débits maximaux, et calculer une coupure minimale étant donné un débit maximal n'est ni difficile ni coûteux non plus.
Mais qu'en est-il de l'inverse? Compte tenu d'une coupe minimale, comment déterminer un débit maximal? Sans résoudre Max-Flow à partir de zéro, bien sûr, et de préférence plus vite que cela aussi.
Quelques idées:
De la coupe minimale, nous connaissons la valeur de débit maximale. Je ne vois pas comment ces informations aident les approches standard augmentant-path et push-relabel, bien que l'adaptation de ces dernières semble légèrement plus plausible.
Nous ne pouvons pas utiliser la coupure minimale pour diviser le réseau en deux parties et recurse car cela ne réduira pas le problème dans le pire des cas (si une partition est un singleton); nous n'aurions pas non plus de coupe minimale des petites instances.
Connaître la valeur du débit maximum accélère-t-il la résolution du Max-Flow LP, peut-être via les conditions de relâchement complémentaires?
la source
Réponses:
Dans le pire des cas, la coupe minimale elle-même ne transmet pas beaucoup d'informations sur le débit maximal. Considérons un graphe dans lequel le minimum s , t -cut a la valeur w . Si j'étends G en ajoutant un nouveau sommetG = ( V, E) s , t w g et une arête ( s ′ , s ) avec le poids w , un minimum s ′ , t -cut dans le nouveau graphique se compose uniquement de l'arête ( s ′ , s )s′ ( s′, s ) w s′, t (s′, s ) mais cela ne donne aucune information sur la façon d'obtenir unités de flux de s à t .w s t
En effet, la coupe minimale vous indique la valeur du débit, mais pas comment y parvenir. Cela signifie que connaître la coupure minimale peut accélérer la recherche du débit par au plus un facteur logarithmique, car nous pourrions faire une recherche binaire pour trouver la valeur de la coupure.
la source
Il existe certainement des algorithmes qui vous permettent de calculer le min cut avant de calculer le maxflow. Deux de ces algorithmes sont le push ré-étiquetage et les algorithmes pseudoflow qui sont étroitement liés. Ce dernier est plus efficace. Ces deux algorithmes utilisent des propriétés spéciales du graphe résiduel qu'ils améliorent de manière itérative pour dériver le débit maximal de la coupe minimale. Pour plus de détails, je recommande fortement de lire le code et les articles.
Pour élaborer sur le cas du réétiquetage push, lorsque l'algorithme ne peut plus envoyer de flux vers l'évier, il est garanti d'avoir calculé une coupe minimale. Cette partie de l'algorithme est appelée phase 1 faute d'un meilleur nom. La phase 2 est l'étape la plus efficace où elle transforme la coupe minimale en débit maximal en annulant de manière itérative les cycles dans le graphique résiduel en utilisant une première recherche de profondeur unique et en repoussant l'excès vers la source. Je crois que la phase 2 peut être prouvée asymptomatiquement plus efficace que la phase 1.
la source