Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.

Benzer bir sunumlar


... konulu sunumlar: "Algoritmalar II Ders 2 Dinamik Programlama Yöntemi."— Sunum transkripti:

1 Algoritmalar II Ders 2 Dinamik Programlama Yöntemi

2 Introduction to Algorithms MIT Press (Chapter 15)
Dynamic Programming Introduction to Algorithms MIT Press (Chapter 15)

3 Dinamik Programlama Algoritma tasarlama yöntemidir (böl ve yönet yöntemine benzer) Böl ve yönet yöntemi Problemi bağımsız altproblemlere böler Her altproblemi özyinelemeli olarak çözer Altproblemlerin çözümlerini birleştirerek ana problemin çözümünü bulur

4 Dinamik programlama Dinamik programlama (DP) yönteminde
-Problem altproblemlere bölünür ama bu altproblemler bağımsız olmayabilirler, yani altproblemler altaltproblemleri paylaşabilirler -Her altproblem çözülerek sonuçlar bir tabloya yazılır, yani DP yönteminde hafızadan ek alan kullanılır -Tablodaki değerler kullanılarak ana problemin çözümü bulunur

5 Dinamik programlama Yani böl-yönet yönteminde aynı altproblem tekrar tekrar çözülebilir ama DP yönteminde her altproblem sadece bir defa çözülür

6 Dinamik Programlama Altproblemler bağımsız olmadığı durumlarda kullanılır Altproblemler altaltproblemleri paylaşabilriler Örnek: Kombinasyonlar Böl ve yönet yönteminde aynı altproblem tekrar tekrar çözülecektir Dinamik programlama yönteminde her altproblem sadece bir defa çözülecek ve sonucu bir tabloda tutulacaktır n k n-1 k-1 = + n 1 n =n =1

7 Örnek: Kombinasyonlar
= +

8 Dinamik programlama Optimizasyon problemlerinde kullanılır
Bir sürü seçenek arasından en iyi olanı (optimal çözümü) bulmak gerekir Yöntem optimal değeri (minimum veya maksimum) olan çözümü buluyor Optimal değeri veren çok sayıda çözüm olabilir Amaç: Bir optimal çözümü bulmaktır

9 Dinamik Programlama Yöntemi
Verilen problem için altproblemler tanımla ve optimal çözümün yapısı incele. Optimal çözümün değerini özyinelemeli tanımla Optimal çözümün değerlerini aşağıdan yukarı hesapla Hesaplanmış bilgilerden yola çıkarak optimal çözümü oluştur (her zaman gerekli olmayabilir)

10 Bellman Optimallık Prensibi
Bellman: Optimal çözümün altprobleme karşılık gelen parçası da altproblemin optimal çözümüdür. DP yönteminin ilk adımında altproblem tanımlandıktan sonra Bellman prensibinin bu tür tanımlanan altproblem için doğru olup olmadığı kontrol edilir. Eğer Bellman prensibi sağlanmıyorsa altproblem iyi tanımlanmamıştır ve DP yöntemi doğru sonucu bulmayabilir. Buna örenği gelecek derslerde Hırsız çantası probleminde göreceğiz.

11 Örnek1: Montaj hattı planlama
Araba fabrikasının 2 montaj hattı olsun Her hatta n tane terminal vardır: S1,1, , S1,n ve S2,1, , S2,n Hatlardaki uygun terminallerde S1, j ve S2, j aynı iş yapılır ama bu iş için gerekli süreler a1, j ve a2, j farklı olabilir Giriş zamanları: e1 ve e2; çıkış zamanları: x1 and x2

12 Montaj hattı planlama Her terminalden aşağıdakilerden biri yapılır:
Aynı hatta kalınır ve bunun bir bedeli olmaz (yani eksta süre geçmez) veya Diğer hatta geçilir: Si,j den sonra gerekli süre ti,j , j = 1, , n - 1

13 Montaj hattı planlama Problem:
1. veya 2. hattayken hangi terminali seçelim ki bir arabanın üretimi için geçen toplam süre en az olsun?

14 Bir çözüm Brute force Çözüm: Tüm seçilebilir terminalleri numarala
Tüm durumları hesapla ve en iyisini seç Çözüm: 2n durum vardır ways Büyük n için hesaplamak imkansız!! 1 1 demek 1. hattı seçildi j. (= n) adımda 2 3 4 n 0 demek 2. hatt seçildi j. (= 3) adımda

15 1. Optimal Çözümün Yapısı
Minimum zaman nasıl hesaplanır?

16 1. Optimal Çözümün Yapısı
S1,j terminalinde bulunduğumuzu varsayalım S1, j terminaline gelmek için 2 seçeneğimiz var S1, j - 1, den direk S1, j ye geçmişiz S2, j - 1, den transferle S1, j ye gelmişiz a1,j a1,j-1 a2,j-1 t2,j-1 S1,j S1,j-1 S2,j-1 Hatt1 Hatt 2

17 1.Optimal Çözümün Yapısı
S1, j ye gelen en kısa yolun S1, j – 1 den geçtiğini varsayalım Bu durumda S1, j – 1 yi seçmek gerekir ve S1, j - 1, ye gelen en kısa yolu bulmak gerekir Benzer olarak S2, j – 1 için yapılır a1,j a1,j-1 a2,j-1 t2,j-1 S1,j S1,j-1 S2,j-1 Hatt 1 Optimal altyapı Line 2

18 Optimal Altyapı Genelleme: “S1, j den geçen en kısa yolu bulunuz ” probleminin çözümü “S1, j - 1 ve S2, j – 1 ye gelen en kısa yolu bulunuz “ probleminin çözümüne dönüşür Bu özelliğe optimal altyapı özelliği denir Bu özelliği kullanarak altproblemlerin optimal çözümünden ana problemin optimal çözümü bulunur

19 2. Özyinelemeli çözüm Optimal çözümün değerini altproblemlerin optimal çözümünün değeri cinsinden ifade edelim

20 2. Özyinelemeli çözüm (devam)
Tanımlar: f* : tüm fabrika boyunca en kısa zaman fi[j] : başlangıç noktadan Si,j ye gelmek için geçen en kısa zaman f* = min (f1[n] + x1, f2[n] + x2)

21 2. Özyinelemeli çözüm (devam)
Temel durum: j = 1, i=1,2 f1[1] = e1 + a1,1 f2[1] = e2 + a2,1

22 2. Özyinelemeli çözüm (devam)
Genel durum: j = 2, 3, …,n, ve i = 1, 2 S1, j den geçen en kısa yol: a S1, j - 1 den geçer, sonra da direk S1, j ye gelir, yani f1[j - 1] + a1,j ya da S2, j - 1 den geçer, sonra da 2. hattan 1. hatta transfer olarak S1, j ye gelir, yani f2[j -1] + t2,j-1 + a1,j f1[j] = min(f1[j - 1] + a1,j ,f2[j -1] + t2,j-1 + a1,j) a1,j a1,j-1 a2,j-1 t2,j-1 S1,j S1,j-1 S2,j-1 Hatt1 Hatt 2

23 2. Özyinelemeli çözüm (devam)
e1 + a1,1 if j = 1 f1[j] = min(f1[j - 1] + a1,j ,f2[j -1] + t2,j-1 + a1,j) if j ≥ 2 e2 + a2,1 if j = 1 f2[j] = min(f2[j - 1] + a2,j ,f1[j -1] + t1,j-1 + a2,j) if j ≥ 2

24 3. Optimal değerleri hesapla
f* = min (f1[n] + x1, f2[n] + x2) f1[j] = min(f1[j - 1] + a1,j ,f2[j -1] + t2,j-1 + a1,j) f2[j] = min(f2[j - 1] + a2,j ,f1[j -1] + t1,j-1 + a2,j) Yukarıdan aşağıya çözüm yine de üstel işlem zamanı gerektirir 1 2 3 4 5 f1[j] f1(1) f1(2) f1(3) f1(4) f1(5) f2[j] f2(1) f2(2) f2(3) f2(4) f2(5) 4 defa 2 defa

25 3. Optimal çözümü hesaplama
Herj ≥ 2 için fi[j] değeri sadece f1[j – 1] ve f2[j - 1] değerlerine bağlıdır Fikir: fi[j] değerlerini aşağıdaki gibi hesapla: Aşağıdan yukarıya hesaplama Önce altproblemlerin optimal çözümlerini bul Altproblemlerin optimal çözümlerinden problemin optimal çözümünü bul j nin artan değerleri sırasıyla 1 2 3 4 5 f1[j] f2[j]

26 Örnek e1 + a1,1, if j = 1 f1[j] = min(f1[j - 1] + a1,j ,f2[j -1] + t2,j-1 + a1,j) if j ≥ 2 1 2 3 4 5 f1[j] 9 18[1] 20[2] 24[1] 32[1] f* = 35[1] f2[j] 12 16[1] 22[2] 25[1] 30[2]

27 FASTEST-WAY(a, t, e, x, n) O(N) f1[1] ← e1 + a1,1 f2[1] ← e2 + a2,1
for j ← 2 to n do if f1[j - 1] + a1,j ≤ f2[j - 1] + t2, j-1 + a1, j then f1[j] ← f1[j - 1] + a1, j l1[j] ← 1 else f1[j] ← f2[j - 1] + t2, j-1 + a1, j l1[j] ← 2 if f2[j - 1] + a2, j ≤ f1[j - 1] + t1, j-1 + a2, j then f2[j] ← f2[j - 1] + a2, j l2[j] ← 2 else f2[j] ← f1[j - 1] + t1, j-1 + a2, j l2[j] ← 1 Başlangıç değerler f1 ve f2 O(N) Hesapla: f1[j] ve l1[j] Hesapla f2[j] ve l2[j]

28 FASTEST-WAY(a, t, e, x, n) (devam)
if f1[n] + x1 ≤ f2[n] + x2 then f* = f1[n] + x1 l* = 1 else f* = f2[n] + x2 l* = 2 Fabrika boyunca en kısa zaman hesabı

29 4. Optimal çözümü oluşturma
Alg.: PRINT-STATIONS(l, n) i ← l* print “line ” i “, station ” n for j ← n downto 2 do i ←li[j] print “line ” i “, station ” j - 1 1 2 3 4 5 f1[j]/l1[j] 9 18[1] 20[2] 24[1] 32[1] l* = 1 f2[j]/l2[j] 12 16[1] 22[2] 25[1] 30[2]


"Algoritmalar II Ders 2 Dinamik Programlama Yöntemi." indir ppt

Benzer bir sunumlar


Google Reklamları