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 N2 sıralama yerine, iki N/2-nesneli dizi ayrı ayrı 2*N2/4 zamanla sıralayıp son sonuçlara topladık Bu fikiri tekrar tekrar kullanırken N2 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(N2) Ekleme sıralama – O(N2) Kabarcık sıralama – O(N2) 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 C1 C2 C3 C5 C4 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 C1 C2 C3 C5 C4 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 C1 C2 C3 C5 C4 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+kA2(1-k)2P+kA3(1-k)3P =kP(A(1-k)+A2(1-k)2+A3(1-k)3+...)

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+kA2(1-k)2P+kA3(1-k)3P =kP(A(1-k)+A2(1-k)2+A3(1-k)3+...)

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+kA2(1-k)2P+kA3(1-k)3P =kP(A(1-k)+A2(1-k)2+A3(1-k)3+...)

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)+A2(1-k)2+A3(1-k)3+... “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 C1 C2 C3 C5 C4 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)+A2(1-k)2+A3(1-k)3+... 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ı