Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.

Slides:



Advertisements
Benzer bir sunumlar
FEN BİLİMLERİ ENSTİTÜSÜ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Advertisements

MIT503 Veri Yapıları ve algoritmalar
BPR151 ALGORİTMA VE PROGRAMLAMA - I
IT503 Veri Yapıları ve algoritmalar
Algoritmalar Ders 8 Dinamik Programlama.
Dersin Adı:ALGORİTMA GELİŞTİME TEKNİKLERİ Dersin Kodu:YBS506 Konu:Kontrol Yapıları(if / if-else) 2.HAFTA.
MIT503 Veri Yapıları ve algoritmalar Algoritma Oluşturma – Açgözlü algoritmalar ve buluşsallar Y. Doç. Yuriy Mishchenko.
Enerji Sistemlerinde Yöneylem Araştırması EBT Bahar Yarıyılı
Problemi Çözme Adımları
MIT503 Veri Yapıları ve algoritmalar Algoritmalara giriş
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri
Lokal Arama Algoritmaları
Özyinelemeli(Recursive) Algoritma Tasarımı
Algoritmalar DERS 3 Böl ve Fethet(Divide and Conquer) İkili arama
İŞ SIRALAMA VE ÇİZELGELEME DERS 4
Bölüm 3 – Yapısal Programlama
Enerji Sistemlerinde Yapay Arı Kolonisi (YAK) Algoritması Kullanarak Yük Akışı Optimizasyonu Nihat Pamuk.
Yapısal Program Geliştirme – if, if-else
ALGORİTMA ve PROGRAMLAMA
TBF - Genel Matematik I DERS – 8 : Grafik Çizimi
Bölüm 2 – Kontrol Yapıları
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
GEOMETRİK PROGRAMLAMA
Bölüm 3 BİR BOYUTLU HAREKET
Analiz Yöntemleri Düğüm Analiz
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
Prof. Dr. Halil İbrahim Karakaş
TBF Genel Matematik I DERS – 11: Belirsiz İntegral
BAH TABLOSU.
YÜZDE PROBLEMLERİ Yüzde, paydası 100 yapılabilen kesirlerin özel bir yazım şeklidir. 2 kesrini 40 olarak yazabiliriz. O kesir de % 40 olarak yazılır.
SİMPLEKS METOT Müh. Ekonomisi.
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
Bazı Sorular Gerçekten de belirlenen ağırlıklar ile istenilen kararlı denge noktalarına erişmemizi sağlayacak dinamik sistem yaratıldı mı? Eğer evet ise,
Greedy Algorithms.
Dinamik programlama ve açgözlü yaklaşım soruları.
Bölüm10 İteratif İyileştirme Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
Dinamik programlama ve Açgözlü algoritma
Dynamic Programming Introduction to Algorithms MIT Press (Chapter 15)
Algoritmalar II Ders 6 Açgözlü Algoritmalar.
0-1 Sırt Çantası Problemi
Algoritmalar II Ders 5 Açgözlü Algoritmalar.
Algoritmalar II Ders 10 Dinamik Programlama ve Açgözlü Yaklaşım Soruları-2.
Algoritmalar II Ders 8 Açgözlü Algoritmalar.
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
Tüm ikililer arasında en kısa yollar
Algoritmalar II Ders 1: Alan zaman takası yöntemi.
Insertion Sort Fikir: Oyun kartlarını sıralamaya benzer.
Algoritmalar II Ders 7 Açgözlü Algoritmalar.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
Tamsayılı Doğrusal Programlama Algoritmaları
Algoritmalar II Ders 14 Çizgelerde tüm ikililer arasında en kısa yollar.
Algoritmalar II Ders 17 İteratif İyileştirme Yöntemi.
İleri Algoritma Analizi
9. Ders Tüm ikililer arasında en kısa yollar
Algoritmalar II Ders 3 Dinamik Programlama Yöntemi.
Optimizasyon Teknikleri
İleri Algoritma Analizi
İleri Algoritma Analizi
Chapter 6 Dönüştür ve Yönet (Transform-and-Conquer)
Chapter 3 Brute Force Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
doğal sayısındaki rakamların sayı değerleri toplamı kaçtır?
Algoritmalar II Ders 9 Dinamik Programlama ve Açgözlü Yaklaşım Soruları.
Algoritmalar II Ders 3 Dinamik Programlama Yöntemi.
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
8. Ders Tüm ikililer arasında en kısa yollar
Chapter 4 Divide-and-Conquer
Bölüm 5 Azalt ve yönet (Decrease-and-Conquer)
10. Ders Floyd-Warshal algoritması
Sunum transkripti:

Algoritmalar II Ders 2 Dinamik Programlama Yöntemi

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

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

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

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

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

Örnek: Kombinasyonlar = +

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

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)

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.

Ö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

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

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?

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

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

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

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

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

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

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)

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

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

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

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

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]

Ö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]

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]

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ı

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]