Creo que el siguiente es un algoritmo de tiempo polinómico basado en el flujo máximo. Sea la entrada.G ( V, E) , b , c
- Construir un gráfico bipartito dirigido con L y R siendo las particiones izquierda y derecha y F siendo los bordes dirigidos de L a R .H( L , R , F)LRF LR
- Dejar . Hay n vértices en L y n vértices en R .El | VEl | =nnorteLnorteR
- Cada vértice tiene una "copia" en L (digamos v l ) y una copia en R (digamos v r ).v ∈ VLvlRvr
- Si agregue un borde dirigido de u l a v r . Cada borde tiene capacidad 1.( u , v ) ∈ Etulvr
- Añadir un nodo "fuente" y añadir bordes dirigidos desde s a cada vértice en L . Cada borde tiene una capacidad b .ssLsi
- Agregue un nodo "sumidero" y agregue bordes dirigidos desde cada vértice en R a t . Cada borde tiene una capacidad c .tRtC
- Encontrar el máximo flujo de a t .st
El gráfico dado tiene una solución si y sólo si el máximo de flujo calcula anteriormente se satura cada borde de s a L , es decir, el flujo en cada borde de s a L es igual a b .GsLsLb