Algoritmalar II Ders 3 Dinamik Programlama Yöntemi.

Slides:



Advertisements
Benzer bir sunumlar
Algoritmalar Ders 8 Dinamik Programlama.
Advertisements

Özyinelemeli(Recursive) Algoritma Tasarımı
ODTÜ Bilgisayar Mühendisliği Tanıtım Günleri Temmuz 2005.
Hatırlatma Ortogonal bazlar, ortogonal matrisler ve Gram-Schmidt yöntemi ile ortogonaleştirme vektörleri aşağıdaki özeliği sağlıyorsa ortonormaldir: ortogonallik.
Determinant Bir kare matrisin tersinir olup olmadığına dair bilgi veriyor n- boyutlu uzayda matrisin satırlarından oluşmuş bir paralel kenarın hacmine.
Greedy Algorithms.
KİRİŞ YÜKLERİ HESABI.
Bazı kelimeler Pivot: that upon or around which something turns or depends; the central, cardinal or crucial factor, member, part, etc. Orthogonal: right-angled,
Dinamik programlama ve açgözlü yaklaşım soruları.
Bölüm10 İteratif İyileştirme Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
O R T L G İ M A A Ve Problem çözme.
MATEMATİK PROJE ÖDEVİ Adı-Soyadı:Nihat ELÇİ Sınıfı-Numarası:7/C 1057
ÇARPMA İŞLEMİ X x x x xx x.
HAZIRLAYANLAR ZELİHA OKÇU ÖZGÜL ERGÜL  Bir hesap tablosu programıdır. Excel, her türlü veriyi (özellikle sayısal verileri) tablolar ya da listeler halinde.
Dynamic Programming Introduction to Algorithms MIT Press (Chapter 15)
YÖNLENDİRME. Yönlendirme ● Statik ● Dinamik ● Kaynakta yönlendirme ● Hop by hop yönlendirme.
BİLGİSAYAR PROGRAMLAMA DERSİ
KONULAR BÖLÜM: Kesirler, Ondalık Kesirler, Yüzde
Excel 2007.
x* denge noktası olmak üzere x* sabit nokta olmak üzere
Algoritmalar II Ders 6 Açgözlü Algoritmalar.
0-1 Sırt Çantası Problemi
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
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 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.
Algoritmalar II Ders 7 Açgözlü Algoritmalar.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
Yrd. Doç. Dr. Mustafa Akkol
Bu teorem sayesinde öteleme dönüşümü için söylenenleri
ÖZDEŞLİKLER- ÇARPANLARA AYIRMA
DOĞAL SAYILAR TAM SAYILAR
İleri Algoritma Analizi
Derinlik öncelikli arama (Depth-first Search(DFS))
İleri Algoritmalar 2. ders.
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
İleri Algoritma Analizi
İleri Algoritma Analizi
9. Ders Tüm ikililer arasında en kısa yollar
İleri Algoritma Analizi
PROBLEM ÇÖZME VE ALGORİTMALAR
Prof.Dr.Şaban EREN Yasar Üniversitesi Fen-Edebiyat Fakültesi
İleri Algoritma Analizi
SAYI ÖRÜNTÜLERİ ANAHTAR KAVRAMLAR MODELLEME ÖRÜNTÜ SAYI ÖRÜNTÜSÜ ÜS
Chapter 6 Dönüştür ve Yönet (Transform-and-Conquer)
Algoritmalar II Ders 15 En Küçük Örten Ağaçlar.
Sonlu Özdevinirlere Giriş
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Fonksiyon Yazma.
Algoritmalar II Ders 3 Dinamik Programlama Yöntemi.
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
Prof. Dr. Halil İbrahim Karakaş Başkent Üniversitesi
İleri Algoritma Analizi
Algoritmalar II Ders 15 En Küçük Örten Ağaçlar.
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
8. Ders Tüm ikililer arasında en kısa yollar
Chapter 4 Divide-and-Conquer
PROBLEM ÇÖZME TEKNİKLERİ
D(s): Kapalı sistemin paydası H(s)  N(s)
Olasılık Bir deneme sonrasında ilgilenilen olayın tüm olaylar içinde ortaya çıkma veya gözlenme oranıdır Olasılık, denemelerin olası sonuçları ile ilgilenir.
Chapter 6 Transform-and-Conquer
Ortam-Bağımsız Gramerler (OBG)
NİŞANTAŞI ÜNİVERSİTESİ
Prof. Dr. Halil İbrahim Karakaş
Yazar 1a, Yazar 2a, Yazar 3b and Yazar 4a
Sunum transkripti:

Algoritmalar II Ders 3 Dinamik Programlama Yöntemi

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

Örnek2: Matris-Zincir Çarpımı Problem: A1, A2, …, An matrisleri veriliyor. Aşağıdaki çarpımı hesapla: A1  A2  An Matrislerin çarpılabilmesi koşulu: C = A  B C=A1  A2  Ai  Ai+1  An colA = rowB coli = rowi+1 rowC = rowA rowC = rowA1 colC = colB colC = colAn

rows[A]  cols[A]  cols[B] MATRIX-MULTIPLY(A, B) if columns[A]  rows[B] then error “incompatible dimensions” else for i  1 to rows[A] do for j  1 to columns[B] do C[i, j] = 0 for k  1 to columns[A] do C[i, j]  C[i, j] + A[i, k] B[k, j] rows[A]  cols[A]  cols[B] multiplications k j cols[B] j cols[B] k i i * = A B rows[A] C rows[A]

Matrisler-Zincir Çarpımı Aşağıdaki matrisleri hangi sıra ile çarpmalıyız? A1  A2  An Yani parantezleri nereye koymalıyız? Örnek: A1  A2  A3 = ((A1  A2)  A3) = (A1  (A2  A3)) Bu çarpımlardan hangisini seçelim? Seçilecek sıra çarpma maliyetini etkiler

Örnek A1  A2  A3 A1: 10 x 100 A2: 100 x 5 A3: 5 x 50 1. ((A1  A2)  A3): A1  A2 = 10 x 100 x 5 = 5,000 (10 x 5) ((A1  A2)  A3) = 10 x 5 x 50 = 2,500 Toplam: 7,500 çarpma var 2. (A1  (A2  A3)): A2  A3 = 100 x 5 x 50 = 25,000 (100 x 50) (A1  (A2  A3)) = 10 x 100 x 50 = 50,000 Toplam: 75,000 çarpma var çok önemli fark var!!

Matris-Zincir Çarpımı: Problem Tanımı A1, A2, …, An, matrisleri veriliyor, burada Ai matrisinin boyutları pi-1x pi dir. A1  A2  An çarpımında parantezleri öyle yerleştiriniz ki toplam çarpım sayısı en az olsun. A1  A2  Ai  Ai+1  An p0 x p1 p1 x p2 pi-1 x pi pi x pi+1 pn-1 x pn

Toplam parantezleme sayısı? Tüm durumları denemek çok verimsizdir! Matematiksel hesaplamalarla Ω(4n/n3/2) olduğu gösterilebilir (sayfa 333 CLRS ders kitabında)

1. Optimal Parentezleme yapısı Notasyon: Ai…j = Ai Ai+1  Aj, i  j Ai…j için optimal parantezleme Ak ile Ak+1 arasında olsun, burada i  k < j Ai…j = Ai Ai+1  Aj = Ai Ai+1  Ak Ak+1  Aj = Ai…k Ak+1…j

Optimal Altyapı Ai…j = Ai…k Ak+1…j Ai…k çarpımında parantezler optimal olmalıdır Eğer Ai…k çarpımı optimal değilse, parantezlerin yerini değiştirerek daha az çarpım elde edebiliriz bu da Ai…j çarpımını daha ucuza yapmamızı sağlar, yani optimal çözümden daha az maliyetli bir çözüm bulunur  çelişki! Matris-zinciri çarpımının optimal çözümü altproblemlerin optimal çözümlerini içermektedir

2. Özyinelemeli çözüm Altproblem: Aşağıdaki problemde optimal parantezlemeyi bulunuz Ai…j = Ai Ai+1  Aj 1  i  j  n için m[i, j] = Ai…j çarpımını hesaplamak için gereken minimum çarpma sayısı tam problem (A1..n): m[1, n] i = j: Ai…i = Ai  m[i, i] = 0, i = 1, 2, …, n için

2. Özyinelemeli çözüm Altproblemde parantezlemeye bakalım Ai…j = Ai Ai+1  Aj 1  i  j  n için = Ai…k Ak+1…j i  k < j için Ai Ai+1  Aj için optimal parantezlemenin k da olduğunu varsayalım (i  k < j) m[i, j] = pi-1pkpj m[i, k] m[k+1,j] m[i, k] + m[k+1, j] + pi-1pkpj Ai…k için minimum çarpım sayısı Ak+1…j için min sayı Ai…kAk…j için çarpma sayısı

2. Özyinelemeli çözüm (devam) m[i, j] = m[i, k] + m[k+1, j] + pi-1pkpj k nın değerini bilmiyoruz k için j – i tane imkan var : k = i, i+1, …, j-1 Förmül aşağıdaki gibi olur: 0 if i = j m[i, j] = min {m[i, k] + m[k+1, j] + pi-1pkpj} if i < j ik<j

3. Optimal değerleri hesapla 0 if i = j m[i, j] = min {m[i, k] + m[k+1, j] + pi-1pkpj} if i < j ik<j Yine de optimal çözümü hesaplama üstel zaman alabilir! Kaç tane altproblem var? Parentezle Ai…j 1  i  j  n için i ve j nin her seçimi için bir problem var 1 2 3 n n  (n2) j 3 2 1 i

3. Optimal değerleri hesapla (devam) 0 if i = j m[i, j] = min {m[i, k] + m[k+1, j] + pi-1pkpj} if i < j ik<j m[1..n, 1..n] tablosunu nasıl dolduracağız? m[i, j] tablosundaki hangi değerlerin Ai…j = Ai…k Ak+1…j çarpımında kullanıldığını belirle Altproblemin boyutu problemin boyutundan azdır Fikir: m tablosunu öyle doldurunuz ki uzunluğu artan problemi çözme imkanı versin

3. Optimal değerleri hesapla (devam) 0 if i = j m[i, j] = min {m[i, k] + m[k+1, j] + pi-1pkpj} if i < j ik<j Uzunluk = 1: i = j, i = 1, 2, …, n Uzunluk = 2: j = i + 1, i = 1, 2, …, n-1 ikinci birinci 1 2 3 n m[1, n] problemin optimal çözümünü verir n j 3 Satırları aşağıdan yukarı, soldan sağa doldur 2 1 i

Örnek: min {m[i, k] + m[k+1, j] + pi-1pkpj} m[2, 2] + m[3, 5] + p1p2p5 m[2, 3] + m[4, 5] + p1p3p5 m[2, 4] + m[5, 5] + p1p4p5 k = 2 m[2, 5] = min k = 3 k = 4 1 2 3 4 5 6 6 5 m[i, j] değerleri sadece önceden hesaplanmış değerlere bağlıdır 4 j 3 2 1 i

Örnek min {m[i, k] + m[k+1, j] + pi-1pkpj} 2 3 Compute A1  A2  A3 A1: 10 x 100 (p0 x p1) A2: 100 x 5 (p1 x p2) A3: 5 x 50 (p2 x p3) m[i, i] = 0 for i = 1, 2, 3 m[1, 2] = m[1, 1] + m[2, 2] + p0p1p2 (A1A2) = 0 + 0 + 10 *100* 5 = 5,000 m[2, 3] = m[2, 2] + m[3, 3] + p1p2p3 (A2A3) = 0 + 0 + 100 * 5 * 50 = 25,000 m[1, 3] = min m[1, 1] + m[2, 3] + p0p1p3 = 75,000 (A1(A2A3)) m[1, 2] + m[3, 3] + p0p2p3 = 7,500 ((A1A2)A3) 7500 2 25000 2 3 5000 1 2 1

Matrix-Chain-Order(p) O(N3)

4. Optimal Çözümü oluştur Benzer s matrisinde k nın optimal değerleri tutulur s[i, j] = k, burada optimal Ai..j çarpımının optimal parantezi Ak ve Ak+1 arasındadır 1 2 3 n k n j 3 2 1

4. Optimal Çözüm Oluşturma s[1, n] is associated with the entire product A1..n Son parantez k = s[1, n] de olacak, yani A1..n = A1..s[1, n]  As[1, n]+1..n Her altproblem için özyinelemeli olarak k değerlerini kullanrak optimal parentezlemeyi bul 1 2 3 n n j 3 2 1

4. Optimal Çözümü Oluşturma s[i, j] = k , burada Ai Ai+1  Aj parantezlemesi Ak ve Ak+1 arasındadır 1 2 3 4 5 6 3 5 - 4 1 2 6 s[1, n] = 3  A1..6 = A1..3 A4..6 s[1, 3] = 1  A1..3 = A1..1 A2..3 s[4, 6] = 5  A4..6 = A4..5 A6..6 5 4 3 j 2 1 i

4. Optimal Çözümü Oluşturma (cont.) PRINT-OPT-PARENS(s, i, j) if i = j then print “A”i else print “(” PRINT-OPT-PARENS(s, i, s[i, j]) PRINT-OPT-PARENS(s, s[i, j] + 1, j) print “)” 1 2 3 4 5 6 3 5 - 4 1 2 6 5 4 j 3 2 1 i

Örnek: A1  A6 ( ( A1 ( A2 A3 ) ) ( ( A4 A5 ) A6 ) ) 3 5 - 4 1 2 PRINT-OPT-PARENS(s, i, j) if i = j then print “A”i else print “(” PRINT-OPT-PARENS(s, i, s[i, j]) PRINT-OPT-PARENS(s, s[i, j] + 1, j) print “)” s[1..6, 1..6] 1 2 3 4 5 6 3 5 - 4 1 2 6 5 4 j 3 2 P-O-P(s, 1, 6) s[1, 6] = 3 i = 1, j = 6 “(“ P-O-P (s, 1, 3) s[1, 3] = 1 i = 1, j = 3 “(“ P-O-P(s, 1, 1)  “A1” P-O-P(s, 2, 3) s[2, 3] = 2 i = 2, j = 3 “(“ P-O-P (s, 2, 2)  “A2” P-O-P (s, 3, 3)  “A3” “)” 1 i …