2010-11-22 35 views
0

pouvons-nous trouver un algorithme qui calcule (en temps linéaire) le débit maximum pour les réseaux arborescents, c'est-à-dire pour les réseaux tels que la suppression du puits (et de ses bords associés) laisse un arbre.Calcul du débit maximal pour les réseaux

Répondre

0

Ford-Fulkerson est O (E * f) où E est le nombre d'arêtes et f le flux maximum, ce qui serait considéré comme linéaire si vous avez une borne supérieure constante sur E ou f dans votre problème.

+0

Le problème d'arrêt est O (1) si vous avez une limite supérieure constante sur le nombre d'états dans la machine de Turing. Tout ce que vous devez savoir est BB (| S |), où | S | est le nombre d'états. –

2

Oui, lancez simplement quelque chose comme ce qui suit:

maxf(s) { 
    if (s == sink) return s.in_capacity; 
    ret = 0; 
    foreach(c in children(s)) ret += maxf(c); 
    return min(ret, s.in_capacity); 
} 

Utilisez un premier appel avec s égal à la source (nous supposons que la source a une in_capacity de l'infini).

+0

L'algorithme semble correct. C'est juste une "incapacité" que je n'ai pas reçue – conapart

+0

C'est la capacité du bord entrant vers ce nœud. – jonderry

+0

Merci, vraiment apprécié vos efforts. – conapart