1 / 31

Y. Doç. Yuriy Mishchenko

MIT503 Veri Yapıları ve algoritmalar Algoritma O luşturma – Açgözlü algoritmalar ve buluşsallar. Y. Doç. Yuriy Mishchenko. Algoritma geliştirme yaklaşımları. Ders planı Açgözlü yaklaşımı temel kavramları Açgözlü yaklaşımı uygulamaları. Böl-ve-Fethet Strateji.

trista
Download Presentation

Y. Doç. Yuriy Mishchenko

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MIT503 Veri Yapıları ve algoritmalarAlgoritma 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 N2vakit 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ü demektirki, • 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” C5 C1 B C2 A C4 C3

  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 C5 C1 B C2 A C4 C3

  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 C5 C1 B C2 A C4 C3

  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 kararne 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çindeneyim 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 - 25 + 4x4 = 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ğrucevabı 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 ... C5 C1 B C2 A C4 C3

  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 3 km yol uzunluğu: 0.5 km 1.5 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 bulunabilirV(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

More Related