Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

MIT503 Veri Yapıları ve algoritmalar Algoritma Oluşturma – Açgözlü algoritmalar ve buluşsallar Y. Doç. Yuriy Mishchenko.

Benzer bir sunumlar


... konulu sunumlar: "MIT503 Veri Yapıları ve algoritmalar Algoritma Oluşturma – Açgözlü algoritmalar ve buluşsallar Y. Doç. Yuriy Mishchenko."— Sunum transkripti:

1 MIT503 Veri Yapıları ve algoritmalar Algoritma Oluşturma – Açgözlü algoritmalar ve buluşsallar Y. Doç. Yuriy Mishchenko

2 Algoritma geliştirme yaklaşımları Ders planı • Açgözlü yaklaşımı temel kavramları • Açgözlü yaklaşımı uygulamaları

3 Böl-ve-Fethet Strateji • Böl-ve-fethet yaklaşımı, genel algoritma geliştirmenin en çoğu metodudur • Sıralamada uygulamasını inceledik – N-nesneli dizi N 2 sıralama yerine, iki N/2-nesneli dizi ayrı ayrı 2*N 2 /4 zamanla sıralayıp son sonuçlara topladık – Bu fikiri tekrar tekrar kullanırken N 2 vakit gereken sıralama algoritmalar yerine N log N algoritmaları sağlanabilir

4 Böl-ve-Fethet Strateji • Sıralama – Naif sıralama • Seçme sıralama – O(N 2 ) • Ekleme sıralama – O(N 2 ) • Kabarcık sıralama – O(N 2 ) – Böl-ve-fethet sıralama • Quicksort sıralama – O(N log N) • Mergesort sıralama – O(N log N) – Heapsort sıralama – arama ağacı yada ikiye bölme kullanan ekleme sıralama – O(N log N) – Tamsayı sayım, kova ve radix sıralama – O(N)

5 Açgözlü Strateji • Açgözlü strateji, çok kullanılan genel algoritma geliştirme yaklaşımıdır • Genellikle, çok hızlı hesaplama ve kavramsal olarak çok basit bir stratejidir • Açgözlü demektir ki, • Orijinal problemin çözümünde birkaç adım/alt-sorun olabilir • Bu adımlar/alt-sorunları çözmek için her zaman lokal olarak en uygun seçimi yapıyoruz – “Açgözlü algoritmalar”da, çözümü sağlamak için bütün adımlarda en yararlı – yani “açgözlü” – kararları vermekteyiz

6 Açgözlü Strateji • Bozuk para vermek, en klasik açgözlü algoritmanın örneğidir • Bozuk para kullanırken bir toplamı vermek lazım • Şunu sağlamak için, toplamı sağlamaya kadar her zaman mümkünse büyük madeni parayı vermeye çalışıyoruz

7 Açgözlü Strateji • Seyahat eden satıcı problemi; • Bir seyahat eden satıcı birkaç şehir ziyaret etmeli, bunun için en kısa toplam yolu kullanmak istiyor • Bu problemin çözümünde dinamik programlama kullanırken sağlamalı, ama böyle çözüm çok fazla vakit gerekir • Açgözlü algoritma kullanılabilir: “her zaman en yakın şehire gidin” A C1C1 C2C2 C3C3 C5C5 C4C4 B

8 Açgözlü Strateji • Açgözlü algoritmalar, doğru (en iyi) çözüm vermeye garanti vermez • Açgözlü adımlar yapmak için çok sık buluşsal yöntemleri kullanılır A C1C1 C2C2 C3C3 C5C5 C4C4 B

9 Açgözlü Strateji ve Buluşsallar • Buluşsallar anlamı; – Eğer alt problemlerin adımları için doğru çözüm kullanılamazsa; • Doğru çözüm bilinemez • Doğru çözüm hesaplanamaz • Doğru çözüm çok fazla pahalı – Adımlarını çözmek için deneyim veya sağduyu veya sezgi kurallar kullanılmaktadır A C1C1 C2C2 C3C3 C5C5 C4C4 B

10 Açgözlü Strateji ve Buluşsallar • Açgözlü yaklaşımında, bütün alt-adımlar için en iyi/uygun kararı kullanmaktayız... • Spesifik adım için, en iyi karar ne olabilir? • Genellikle “açgözlü” karar vermek açıktır, ama ara sıra anlamlı bir karar olmayabilir

11 Açgözlü Strateji ve Buluşsallar • Dinamik programlamada, üretimin en büyük gelir veren yatırımlarını bulmak istiyoruz – Bu sorun doğru şekilde dinamik programlamayla çözülür (önümüzdeki ders) • Açgözlü karar – her zaman paraların hepsi alın! • Bu seçim çok iyi bir seçim değil sonunda, bu şekilde yatırımlarından hiç para kazanamaz :)

12 Açgözlü Strateji ve Buluşsallar • Doğru seçim olarak, beklenen yatarım gelirine göre biraz para tutup biraz parayla yatırım yapmak lazım. • Ne kadar?

13 Açgözlü Strateji ve Buluşsallar • Bu soruna dinamik programlama doğru cevap veriyor; • Şuna göre, bu anda doğru yatırım G fonksiyonu maksimumu bularak hesaplanabilir G(P,yatırım;t)=(P-yatırım)+V(A*yatırım;t+1) • G fonksiyonunun anlamı, zaman t’deki var olan “P” para kapitali için ve “yatırım” yatırım için beklenecek gelir belirlemek

14 Açgözlü Strateji ve Buluşsallar • Bu soruna dinamik programlama doğru cevap veriyor; • Şuna göre, bu anda doğru yatırım G fonksiyonu maksimumu bularak hesaplanabilir G(P,yatırım;t)=(P-yatırım)+V(yatırım;t+1) • V fonksiyonunun anlamı, zaman t+1’deki var olan “yatırım” kapitali için beklenecek gelir belirlemek

15 Açgözlü Strateji ve Buluşsallar • Bu soruna dinamik programlama doğru cevap veriyor; • Şuna göre, bu anda doğru yatırım G fonksiyonu maksimumu bularak hesaplanabilir G(P,yatırım;t)=(P-yatırım)+V(yatırım;t+1) • G fonksiyonu, zaman t’de yatırımdan kalan para artı beklenecek yatırımın geliri şekilde belirlenir

16 Açgözlü Strateji ve Buluşsallar • Fark edin ki, optimal durumda V(P,t) için bu formülü yazabiliriz (olacak gelir optimal yatırım seçimle belirtilir); V(P;t)=max[G(P,yatırım;t)] • Bu ilişki birkaç model için dinamik programlama kullanarak bulunabilir; ama bu denklemi çözme zordur

17 Açgözlü Strateji ve Buluşsallar • Daha çok durumda beklenecek gelir (V(P,t)) için deneyim veya sağduyu veya sezgi kullanılır • En basit seçeneklerinden biri şudur (%k alıp %1-k’den yatırım A geliri oluyor); V(P;t)=kP+kA(1-k)P+kA 2 (1-k) 2 P+kA 3 (1-k) 3 P+... =kP(A(1-k)+A 2 (1-k) 2 +A 3 (1-k) )

18 Açgözlü Strateji ve Buluşsallar • Bütün adımlarda en optimal, açgözlü yatırım kararı vermeye çalışıyoruz • Bu karar vermek için, buluşsal olacak “gelir fonksiyonunu” kullanıyoruz (bu tahminimiz) V(P;t)=kP+kA(1-k)P+kA 2 (1-k) 2 P+kA 3 (1-k) 3 P+... =kP(A(1-k)+A 2 (1-k) 2 +A 3 (1-k) )

19 Açgözlü Strateji ve Buluşsallar • Bu buluşsal karar fonksiyonunun “k” parametresini ya da deneyim ya da sezgi kullanarak belirtiyoruz; V(P;t)=kP+kA(1-k)P+kA 2 (1-k) 2 P+kA 3 (1-k) 3 P+... =kP(A(1-k)+A 2 (1-k) 2 +A 3 (1-k) )

20 Açgözlü Strateji ve Buluşsallar • Buradaki örnek çok genel durumdur ! – Buluşsal karar fonksyonunu, V(P;t), kullanarak açgözlü adımlarla çözümü alabiliriz; V(P;t)=kP(A(1-k)+A 2 (1-k) 2 +A 3 (1-k) – “k” parametresini, ya da deneyim ya da sezgi kullanarak seçiyoruz • Buluşsal karar fonksyonları açgözlü kararlar ile çok farklı durumda çok fazla kullanılır

21 Açgözlü Stratejinin Sınırları • Açgözlü algoritmalar çok sık doğru çözüm veremiyorlar

22 Açgözlü Stratejinin Sınırları • Bozuk para kullanırken bir toplamı vermek lazım; • Adımlar olarak her zaman mümkünse büyük madeni para veriyoruz • Mümkün problemler; • Eğer bizde 25, 10 ve 4 kuruş madeni para var, ve 41 kuruş vermek lazım ise • Açgözlü seçimler – 25 kuruş (16 kaldı), 10 kuruş (6 kaldı), ve şimdi... • Şimdi ne ??? • Doğru çözüm x4 = 41 kuruş tur;

23 Açgözlü Stratejinin Sınırları • 41 kuruş vermek için, açgözlü algoritma başaramadı, doğru çözümü (aslında herhangi çözümü) bulamadı !  Bozuk para probleminde açgözlü algoritma iyi çözüm vermeyebilir !  Aslında, hiç çözüm vermeyebilir

24 Açgözlü Stratejinin Sınırları • Seyahat satıcı: burdan hangi şehire gitmeliyim? • En doğru cevabı dinamik programlamayla bulunabilir, ama hesaplama çok zor • Bunun yerine buluşsal “sağduyu” kullanılabilir – her zaman en yakın şehire gidelim ! • İyi çözüm olmayabilir: böyle bir şehire gelince, sonraki şehir çok uzak mesafede olabilir ki... A C1C1 C2C2 C3C3 C5C5 C4C4 B

25 Açgözlü Stratejinin Sınırları • En kısa patika sorunu: bir haritayı takip ederek, yolların uzunluklarına göre, iki nokta arasında en kısa patika bulmak • Açgözlü karar – her zaman en kısa yola gidin ! • Bu çözüm iyi çözüm olmayabilir... Açgözlü seçim yol uzunluğu: 0.5 km 1.5 km 3 km 1 km Doğru seçim

26 Açgözlü Stratejinin Sınırları • Bozuk para verme – açgözlü algoritma iyi çözüm hem verebilir (mesela 25, 10, 5, 1 kuruş maden paralar için) hem vermeyebilir (25, 10, 4 kuruş maden paralar için) • Seyahat satıcı problemi – açgözlü çözüm en iyi çözüm olup olmayabilir • En kısa patika – açgözlü çözüm en kısa çözüm olup olmayabilir • Planlama – açgözlü çözüm genellikle iyi çözüm hiç değildir

27 Açgözlü Stratejinin Sınırları • Açgözlü algoritmalar birçok durumda doğru çözüm veremiyorlar... • Neden açgözlü algoritma kullanmak isteyebiliriz? – Kavramsal olarak kolaydırlar – açgözlü kararlar genellikle açıktır – Hızlı çözümler – açgözlü kararlar kolayca bulunabilip daha hızlı hesaplamaya yol açar – Lokal olarak en iyi çözümü – genellikle lokal olarak optimum çözümleri bulabilir; demek ki, çoğunlukla iyi bir çözüm bulunabilir (en iyi değilse bile) – Alternatif yok – doğru çözüm bilinmez veya hesaplanamaz

28 Açgözlü Stratejinin Sınırları • Ne zaman açgözlü algoritmalar doğru çözüm veriyorlar? – Açgözlü karar özelliği – şimdiki karar sadece geçen bilgiye bağlıdır – Şimdiki karar gelecekteki kararlara bağlı değildir – Optimum altyapı – orijinal problemin optimum çözümü altproblemlerin optimum çözümlerinden oluşturulabilir • Bu özellikler olan problemlerde, açgözlü algoritma çoğunlukla doğru cevabı sağlayabilirler

29 Özet • Açgözlü yaklaşım, çok fazla kullanılan algoritma geliştirme yaklaşımıdır • Burada, açgözlü demek ki • Orijinal problemde birkaç altproblemleri bulunabilir • Bu altproblemler için her zaman lokal olarak en iyi kararı seçmeye çalışıyoruz – Bu şekilde, açgözlü algoritma, “açgözlü” kararları kullanıyor

30 Özet • Açgözlü algoritmaların avantajları – Kavramsal olarak kolay – açgözlü kararlar genellikle çok açıktır – Hızlı hesaplama – açgözlü kararlar kolayca bulunabilip hızlı hesaplamaya yol açar – Lokal olarak en iyi çözümü – genellikle lokal olarak en iyi çözümü bulunabilir; iyi bir çözüm bulunabilir – Alternatif yok – doğru çözüm bilinmez veya hesaplanamaz • Açgözlü algoritmalar doğru çözüm vermeyebilirler

31 Özet • Karar fonksiyonları için buluşsal bilgi kullanarak daha iyi çözümleri bulunabilir V(P;t)= kP(A(1-k)+A 2 (1-k) 2 +A 3 (1-k) • Buluşsal açgözlü kararları, açgözlü algoritmalarda çok farklı durumda kullanılır • Açgözlü algoritmayla doğru cevap verilebilir sorunları; – Açgözlü karar özelliği – kararlar geçen bilgiye bağlıdır; gelecekteki kararlara bağlı değildir – Optimum altyapı – orijinal problemin optimum çözümü altproblemlerin optimum çözümlerinden oluşturulabilir


"MIT503 Veri Yapıları ve algoritmalar Algoritma Oluşturma – Açgözlü algoritmalar ve buluşsallar Y. Doç. Yuriy Mishchenko." indir ppt

Benzer bir sunumlar


Google Reklamları