MAKSİMUM AKİŞ PROBLEMİ CLRS 26. Bölüm
Akış tanımları Kaynak köşe s Hedef köşe t Diğer tüm köşeler Ürünün üretildiği yer Hedef köşe t Ürünün gönderileceği yer Diğer tüm köşeler Kaynaktan hedefe giderken ara duraklar Amaç: kaynaktan hedefe maksimum sayıda ürün taşımak
Örnek Örnek: Petrol akışı Model Yönlü çizge G=(V,E) Kaynak Hedef v1 v3 S S t t v2 v4 Kaynak v2 v4 Hedef
Kapasite Büyük boru Küçük boru c(u,v)=12 c(u,v)=6 8 3 6 S t v1 v2 v3
Kapasite Eğer (u,v) E c(u,v) = 0 3 v1 v3 v1 v3 6 8 3 S S t t 3 6 8 v4 v3
Akış Kapasiteden az akış Bu boru için maksimum akış f(u,v)=6 8 3 6 S t 6/12 u v f(u,v)=6 Kapasiteden az akış 6/6 u v Bu boru için maksimum akış
Akış 8 3 6 6/8 6/6 S t v1 v2 v3 v4 v1 v3 S t v2 v4
Akış 3/8 3/3 3/6 6/8 6/6 3 S t v1 v2 v3 v4 v1 v3 S t v2 v4
Akış 5/8 3/3 3/6 8/8 6/6 2/3 3 S t v1 v2 v3 v4 v1 v3 S t v2 v4
Akış Özellikleri
Flow properties 12/12 11/16 15/20 10 1/4 7/7 4/9 4/4 8/13 11/14 v1 v3
Net Akış u u f(u,v) = 5 f(v,u) = -5 8/10 3/4 5/10 4 v v
Maksimum akış problemi Verilen ağırlıklı yönlü G çizgesinde kaynak köşeden hedef köşeye maksimum akışı bulmaktır. Ağırlıklar kapasiteleri göstermektedir.
Ford-Fulkerson Algoritması 2 önemli kavram içeriyor: 1) kalan ağ 2) büyüyen yol
Kalan Ağ G çizgesinde f akışına göre kalan ağ Gf aşağıdaki gibi tanımlanıyor: Kalan ağın her kirişinin kapasitesi cf(u,v) = c(u,v) – f(u,v) formülü ile belirleniyor. Akış çizgesi G = (V,E) Kalan ağ Gf = (V,Ef) 12/12 v1 v3 v1 v3 5 11 11/16 15/20 10 1/4 7/7 S t S t 4/9 8 5 4/4 8/13 v2 v4 v2 v4 11/14 cf(u,v) = c(u,v) – f(u,v)
Ford Fulkerson – Kalan Ağ Akış çizgesi G = (V,E) Kalan Ağ Gf = (V,Ef) 12/12 12 v1 v3 v1 v3 5 11/16 5 15/20 11 4 10 1/4 7/7 11 3 7 15 S t S t 4/9 5 5 4/4 4 8/13 8 3 v2 v4 v2 v4 11/14 11 cf(u,v) = c(u,v) – f(u,v)
Ford Fulkerson –Büyüyen yol Definition: Gf kalan ağında kaynak köşe s den hedef köşe t ye olan yol p yolunun kapasitesi aşağıdaki formülle hesaplanır: cf(p) = min{cf (u,v): (u,v) p yolunda ise} Akış çizgesi G = (V,E) Kalan ağ Gf = (V,Ef) 12/12 12 v1 v3 v1 v3 5 11/16 5 15/20 11 4 10 1/4 7/7 11 3 7 15 S t S t 4/9 5 5 4/4 4 8/13 8 3 v2 v4 v2 v4 11/14 11
Ford Fulkerson-Büyüyen yol Akış çizgesi G = (V,E) Kalan Ağ Gf = (V,Ef) 12/12 12 v1 v3 v1 v3 5 11/16 5 15/20 11 4 10 1/4 7/7 11 3 7 15 S t S t 4/9 5 5 4/4 4 8/13 v2 v4 8 3 v2 v4 11/14 11 Büyüyen yol
Ford Fulkerson – Büyüyen yol p yolunda akış fp: V x V R aşağıdaki gibidir: cf(p) eğer (u,v) p de ise fp(u,v) = - cf(p) eğer (v,u) p de ise 0 aksi durumda Flow network G = (V,E) residual network Gf = (V,Ef) 12/12 12 v1 v3 v1 v3 5 11/16 5 15/20 11 4 10 1/4 7/7 11 3 7 15 S t S t 4/9 5 5 4/4 4 8/13 v2 v4 8 3 v2 v4 11/14 11
Ford Fulkerson – Büyüyen yol Akış çizgesi G = (V,E) Kalan ağ Gf = (V,Ef) 12/12 12 v1 v3 v1 v3 5 11/16 4/5 15/20 11 4/4 10 1/4 7/7 11 3 7 -4/15 S t S t 4/9 -4/5 4/5 4/4 4 8/13 v2 v4 -4/8 3 v2 v4 11/14 11
Ford Fulkerson –Büyüyen yol Akış çizgesi G = (V,E) Kalan Ağ Gf = (V,Ef) 12/12 12 v1 v3 v1 v3 5 11/16 4/5 19/20 11 4/4 10 1/4 7/7 11 3 7 15 S t S t 0/9 5 4/5 4/4 4 12/13 8 3 v2 v4 v2 v4 11/14 11 Yeni akış: f´: V x V R : f´=f + fp
The Ford-Fulkerson Algoritması Ford-Fulkerson(G,s,t) 1 for each edge (u,v) in G.E do 2 f(u,v) ¬ f(v,u) ¬ 0 3 while there exists a path p from s to t in residual network Gf do 4 cf = min{cf(u,v): (u,v) is in p} 5 for each edge (u,v) in p do 6 f(u,v) ¬ f(u,v) + cf 7 f(v,u) ¬ -f(u,v) 8 return f
Execution of Ford-Fulkerson (1) Left Side = Residual Graph Right Side = Augmented Flow
Execution of Ford-Fulkerson (2) Left Side = Residual Graph Right Side = Augmented Flow
En kötü durum En kötü durumda işlem süresi O(E|f*|), burada f* maksimum akış değeridir. En kötü durum için örnek:
Uygulama-Eşleştirme problemi Örnek– n erkek ve m kadın veriliyor Her biri kimlerle evlenebileceğini belirtiyor (karşılıklı olarak) Örneğin, (A, X) veya (B, X) … Problem: Maksimum sayıda evlilik yapılmasını sağlamak Bir kişi sadece bir kişi ile evlenebilir Problem maksimum akış problemine dönüştürülerek çözülebilir
İki kümeli çizge G=(V,E) çizgesinde V kümesi birbiri ile kesişmeyen ve boş olmayan V1 ve V2 kümelerine öyle ayrılabiliyor ki (u,v) E ise u V1 ve v V2 veya tersi olur. Örnek:
Eşleştirme problemi A A A X X X B B B Y Y Y C C C Z Z Z D D D Erkekler Kadınlar Eşleştirme Maksimum eşleştirme
MAKSİMUM AKIŞ PROBLEMİNE DÖNÜŞTÜRME Sanal başlangıç, sanal hedef ekleyelim ve tüm kapasiteleri 1 alalım (her kişi sadece 1 kişi ile evlenebilir) A A X X B B t Y s Y C C Z Z D D
Çok kaynaklı ve Çok hedefli taşıma Verilen: yönlü çizge G=(V, E) Kaynak Si köşeleri ve üretim kapasiteleri si, i=1,…,p Hedef Di köşeleri ve kapasiteleri di, i=1,…,q Ara duraklar için kapasite fonksiyonu u: E R Amaç: Kaynaklardan hedeflere maksimum akışı sağlamak Örnek.: 11 2 19 4 5 15 9 17 A D1 B C S1 D2 S2 8 16
Dönüştürme Sanal başlangıç O olsun. OSi kirişinin kapasitesi si olsun . Sanal hedef T ve Di T kirişinin kapasitesi di olsun. 2 19 4 5 15 9 17 11 A D1 B C S1 D2 S2 17 11 T O 16 8 8 16