Maksimum akış
Akış problemi s kaynak köşesidir t hedef köşesidir Akacak olanın (petrol, gaz veya veri) üretildiği yerdir t hedef köşesidir Akacak olanın ulaşması gereken yerdir Diğer tüm köşeler akacak olanın geçeceği ara köşelerdir Amaç: Kaynaktan hedefe olabildiğince maksimum akışı sağlamaktır
Örnek Model Örnek: petrol hattı Akış ağı: yönlü çizge G=(V,E) kaynak S S t t v2 v4 kaynak v2 v4 hedef
Kapasite Model Örnek: petrol hattı Akış ağı: yönlü çizge G=(V,E) 8 3 6 S t v1 v2 v3 v4 v1 v3 S t v2 v4 12 u v c(u,v)=12 c(u,v)=6 Büyük boru u v 6 Küçük boru
Introduction - capacity Representation Example: oil pipeline Flow network: directed graph G=(V,E) 3 v1 v3 v1 v3 6 8 3 S S t t 3 6 8 v2 v4 v2 v4 6 If (u,v) E c(u,v) = 0 6 v2 v4 v4 v3
Akış Model Örnek: petrol hattı Akış ağı: yönlü çizge G=(V,E) 8 3 6 S t v1 v2 v3 v4 v1 v3 S t v2 v4 6/12 u v f(u,v)=6 Kapasite altı akış 6/6 u v Tam kapasiteli akış
Akış Model Örnek: petrol hattı Akış ağı: yönlü çizge G=(V,E) 8 3 6 S t
Introduction – flow Representation Example: oil pipeline Flow network: directed graph G=(V,E) 8 3 6 6/8 6/6 S t v1 v2 v3 v4 v1 v3 S t v2 v4
Akış Model Örnek: petrol hattı Akış ağı: yönlü çizge G=(V,E) 8 3 6 6/8 6/6 S t v1 v2 v3 v4 v1 v3 S t v2 v4
Akış Model Örnek: petrol hattı Akış ağı: yönlü çizge G=(V,E) 3/8 3/3 3/6 6/8 6/6 3 S t v1 v2 v3 v4 v1 v3 S t v2 v4
Akış Model Örnek: petrol hattı Akış ağı: yönlü çizge G=(V,E) 3/8 3/3 3/6 6/8 6/6 3 S t v1 v2 v3 v4 v1 v3 S t v2 v4
Akış Model Örnek: petrol hattı Akış ağı: yönlü çizge G=(V,E) 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ışı iptal etme Model Örnek: petrol hattı Akış ağı: yönlü çizge G=(V,E) 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ışı iptal etme Model Örnek: petrol hattı Akış ağı: yönlü çizge G=(V,E) S t v1 v2 v3 v4 6/8 3/3 4/6 8/8 5/6 6/6 1/3 v1 v3 S t v2 v4 u u u u 10 4 8/10 4 8/10 3/4 5/10 4 v v v v
Akış özellikleri
The Ford-Fulkerson yöntemi 2 önemli kavram var: 1) kalan ağ 2) artırılan yol
Ford Fulkerson – kalan ağ Akış ağı 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ış ağı 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 Fulkersen-artırılan yol Definition: Kalan ağda s den t ye her hangi bir basit (döngüsüz) p yolu p yoluna göre kalan kapasite cf(p) = min{cf (u,v): (u,v) p üzerinde} Akış ağı 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 – artırılan yol 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 Artırılan yol
Ford Fulkerson – artırılan yol Akış: fp: V x V R: cf(p) eğer (u,v) p de ise fp(u,v) = - cf(p) eğer (v,u) p de ise 0 aksi durumda Akış ağı: 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
Ford Fulkerson – augmenting paths We define a flow: fp: V x V R such as: cf(p) if (u,v) is on p fp(u,v) = - cf(p) if (v,u) is on p 0 otherwise Flow network G = (V,E) residual network 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 3 v2 v4 -4/8 v2 v4 11/14 11 Our virtual flow fp along the augmenting path p in Gf
Ford Fulkerson – augmenting paths We define a flow: fp: V x V R such as: cf(p) if (u,v) is on p fp(u,v) = - cf(p) if (v,u) is on p 0 otherwise Flow network G = (V,E) residual network 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 3 v2 v4 -4/8 v2 v4 11/14 11 Our virtual flow fp along the augmenting path p in Gf
Ford Fulkerson – augmenting the flow We define a flow: fp: V x V R such as: cf(p) if (u,v) is on p fp(u,v) = - cf(p) if (v,u) is on p 0 otherwise Flow network G = (V,E) residual network 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 3 v2 v4 8 v2 v4 11/14 11 New flow: f´: V x V R : f´=f + fp Our virtual flow fp along the augmenting path p in Gf
The Ford-Fulkerson method 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 The algorithms based on this method differ in how they choose p in step 3. If chosen poorly the algorithm might not terminate.
Örnek (1) Left Side = Residual Graph Right Side = Augmented Flow
Örnek(2) Left Side = Residual Graph Right Side = Augmented Flow
En kötü durumda işlem zamanı En kötü durumda işlem zamanı O(E|f*|), burada f* maksimum akış değeridir Örnek: Augmenting path of 1 Resulting Residual Network Resulting Residual Network
Uygulama-Eşleştirme problemi Örnek-n erkek ve m kadın verilmiş olsun Her erkek ve her kadın evlenebileceklerini (karşılıklı olarak) söylemişler Problem: Maksimum evlilik sayısını bulmak Çok eşliliğe izin verilmemektedir
İki kümeli çizge G=(V,E) çizgesi verilmiş olsun. Eğer V kümesi, V1 ve V2 gibi 2 kümeye ayrılabiliyorsa ve (u,v) E olmasından u V1 ve v V2 veya tersi çıkıyorsa bu çizgeye 2 kümeli çizge denir.
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 En iyi eşleştirme
Maksimum akışla çözüm Sanal bir başlangıç ve sanal bir hedef seç, tüm kirişlerin kapasitesi 1 olsun A A X X B B t Y s Y C C Z Z D D
Dayanıklı evlilik problemi
Dayanıklı evlilik problemi N erkek ve N kadın var, her birinin evlenmek için tercih listesi var, bunları birbiriyle evlilikleri dayanıklı olacak biçimde evlendirmek gerekir
Dayanıklı mı? Evlilikler dayanıksızdır, eğer Öyle 2 çift varsa ki çiftlerden birinin eşi diğerinin eşini kendi eşinden daha çok tercih ediyor ve o da onu kendi eşinden daha çok tercih ediyor Örnek A1 B3 C2 D4 E5. Bu evlilik dayanıksızdır A 2 yi 1 den çok, 2 de A yı C den daha çok A B C D E 2 5 1 3 4
Akla gelen ilk çözüm (2) Çalışmaz! Örnek A1 B3 C2 D4 E5 A2 B3 C1 D4 E5
Çözüm X ilk erkek olsun. X in listesindeki en çok tercih ettiği kadına bak( Başlangıçta, listedeki ilk kadın!) Eğer listedeki ilk kadın α başka biri ile nişanlı değilse (X, α) nişanını yap ve sonra X=bir sonraki erkek (tüm erkekler bittiyse dur) ve adım 2 ye git, aksi durumda adım 4 e git Eğer α X i kendi nişanlısı olan Y den daha çok tercih ediyorsa, (X, α) nişanını yap, X=Y olsun ve adım 2 ye git
Örnek A B C D E 2 1 2 1 5 5 2 3 3 3 1 3 5 2 A B C D E 2 5 1 3 4 4
Zaman analizi N erkek ve N kadın varsa, O(N2) işlem zamanı olur