Informatika gyűjtemény

Egy szinttel feljebb Megoldas

2004050607080910

NézetNyomtat

Algoritmus

A feladat átfogalmazható a maximális folyam problémára. Az irányított élek kapacitása legyen egységnyi. A két célpontból vezessen egy-egy irányított él egy "nyelő" csúcsba. A "forrás" legyen az eredeti 1-es pont. Ha tudunk 2 értékű folyamot csinálni, akkor van két éldiszjunkt út 1-ből a célpontokba.
Mivel az eredeti feladatban csúcsdiszjunkt utakat kell keresni, még egy kicsit átalakítjuk a gráfot: Minden csúcsot (a forrás és a nyelő kivételével) megduplázunk, egy "BE" és egy "KI" címkéjű csúcs lesz belőle. Az eredeti élek mindig a "KI" és a "BE" csúcsok között haladnak, és felveszünk minden csúcs "BE" és "KI" példánya között egy-egy irányított élet.
Az így átalakított gráfon lefuttatjuk az Edmonds-Karp-féle folyamalgoritmus első két lépését (első út, és egy javító-út), majd a kapott folyamnak megfelelő utakat adjuk meg csúcsdiszjunkt útként.

Kód