Algoritmalar II Ders 17 İteratif İyileştirme Yöntemi
Bölüm10 İteratif İyileştirme Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
İteratİf İyİleştİrme Optimizasyon problemlerini çözmek için bir algoritma geliştirme yöntemi Uygun bir çözüm ile başla Aşağıdaki adımları iyileştirme bulunduğu sürece tekrar et: Mevcut uygun çözümü amaç fonksiyonun daha iyi değerine sahip olan başka bir uygun çözümle değiştir En son uygun çözümü optimal çözüm olarak geri gönder Eksik yönü: Yerel ekstremum değerine takılabilir These were discussed in the first lecture. At this point, the claims made then about “efficient” algorithms can be discussed in more concrete terms. Before launching into this lecture, I usually read to my students the introductory whimsical example from Garey and Johnson “Computers and Intractability”, while showing overhead transparencies of their cartoons. These are not reproduced here because it would require copyright clearance.
Önemli örnekler Maksimum akış problemi için Ford-Fulkerson algoritması Maximum eşleştirme problemi Dayanıklı evlilik için Gale-Shapley algoritması
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