Algoritme de Ford-Fulkerson
L'algoritme de Ford-Fulkerson propon buscar camins en els que es puga aumentar el fluix, fins que s'alcance el fluix màxim. És aplicable als Fluix maximales. L'idea és trobar una ruta de penetració en un fluix positiu net que una els nodos orige i destí. El seu nom ve dau pels seus creadors, L. R. Ford, Jr. i D. R. Fulkerson.
Introducció
Siga un grafo, en vèrtiços, arestes i a on per cada aresta , tenim una capacitat i un fluix . Es busca maximizar el valor del fluix des d'una font fins a un sumidero .
El método inicia en per a tota en . En cada iteración, s'incrementa el fluix en per mig del resultat d'una busca d'un «camí d'aument» en una «ret residual» . Encara que cada iteración del método Ford-Fulkerson aumenta el valor del fluix, el fluix per aresta de pot aumentar o disminuir. En cada iteración el fluix s'aumentara fins que la ret no tinga més camins d'aument.[1]
El fluix a aumentar es deu considerar llegal, per a açò deu seguir que.
- El fluix de para tota aresta no deu ser major que la capacitat de dita aresta.
- El fluix que ix de la font deu ser igual al que aplega al sumidero .
Ret Residual
Definim una ret residual com la ret a on la capacitat de cada una de les arestes es definix com , a on és la capacitat de l'aresta i el fluix és el fluix de l'aresta en el camí d'aument seleccionat.
Intuitivamente, donat el grafo i un camí d'aument , la ret residual consistix en el grafo que representa el com canvia la capacitat de cada una de les arestes sobre el fluix del camí d'aument en el grafo .
Camins d'Aument
Un camí d'aument és un camí dirigit de la font al sumidero en , a on la capacitat del camí d'aument és el mínim de les capacitats de les seues arestes. Per a l'elecció d'un camí d'aument es poden usar algoritmes ya coneguts, algunes de les més famosos són DFS, BFS, A* o IDA* (Algoritmes de Busca).
Pseudocódigo
Ford-Fulkerson(G,s,t) {
Gf = Crear_grafo_residual(G);
for (cada aresta (o,v) d'I) {
f[o,v]= 0;
}
while (existixca un camí p des de s a t en la ret residual Gf) {
cf(p) = min{cf(o,v): (o,v) està sobre p};
for (cada aresta (o,v) en p) {
f[o,v]= f[o,v] + cf(p);
f[v,o]= f[v,o] - cf(p);
}
Actualisar_grafo_residual(Gf);
}
}Referències
- ↑ Cormen, Thomas H. (30 sep 2009). Introduction to Algorithms, MIT press.
Referències
- Este artícul conté una traducció derivada de «Algoritmo de Ford-Fulkerson» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.