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

Slides:



Advertisements
Benzer bir sunumlar
MIT563 Yapay Zeka ve Makine Öğrenmesi
Advertisements

Yığınlama Sıralaması (Heap Sort)
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
MIT503 Veri Yapıları ve algoritmalar
IT503 Veri Yapıları ve algoritmalar
Algoritmalar Ders 8 Dinamik Programlama.
MIT563 Yapay Zeka ve Makine Öğrenmesi
MIT563 Yapay Zeka ve Makine Öğrenmesi
MIT505 İnternet ve Web Programlama: Web Şablonları ve Web düzenleme
MIT563 Yapay Zeka ve Makine Öğrenmesi
MIT563 Yapay Zeka ve Makine Öğrenmesi
Filogenetik analizlerde kullanılan en yaygın metotlar
9. ADİ DİFERANSİYEL DENKLEMLERİN SAYISAL ÇÖZÜMLERİ
Algoritmalar En kısa yollar I En kısa yolların özellikleri
Algoritmalar DERS 2 Asimptotik Notasyon O-, Ω-, ve Θ-notasyonları
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
EMRE SEVİNDİK KONU: ANALİZ ÖNCESİ YAPILMASI GEREKEN İŞLEMLER
Algoritmalar DERS 3 Böl ve Fethet(Divide and Conquer) İkili arama
MIT505 İnternet ve Web Programlama: Dinamik web sayfaları, javascript
MIT563 Yapay Zeka ve Makine Öğrenmesi
Çok Etmenli Sistemlerde Yük Dengeleme ve Yük Paylaşımı
Optimizasyon Teknikleri
SORUNLARIM VE ÇÖZÜMLERİM
IT 504 İnternet ve Web Programlama Tanıtım Yrd. Doç. Yuriy Mishchenko.
MIT503 Veri Yapıları ve algoritmalar Sıralama algoritmaları
Hisse Senedi Değerlemesi
HESAP TABLOSU PROGRAMLARI
MIT503 Veri Yapıları ve algoritmalar Veri ağaçları
ÖZEL ÖĞRETİM YÖNTEMLERİ
Bölüm 4: Sayısal İntegral
Bölüm6:Diferansiyel Denklemler: Başlangıç Değer Problemleri
İNTERNET PROGRAMLAMA - 1
Bölüm5 :Kök Bulma Sayısal bilgisayarlar çıkmadan önce, cebirsel denklemlerin köklerini çözmek için çeşitli yollar vardı. Bazı durumlarda, eşitliğinde olduğu.
PEER SUPPORT TEAM.
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
SONLU ELEMANLARA GİRİŞ DERSİ
BİLGİSAYAR DESTEKLİ EĞİTİM UYGULAMALARI
Şahin BAYZAN Kocaeli Üniversitesi Teknik Eğitim Fakültesi
Karar Bilimi 1. Bölüm.
Lineer Programlama: Model Formulasyonu ve Grafik Çözümü
SORUNLARIM VE ÇÖZÜMLERİM
Python Programlama Dilini Oyun Oynayarak Öğreniyorum
KISIM II Matematiksel Kavram ve Prosedürlerin Gelişimi
Yanal düşünme Yanal düşünme, problemleri endirekt ve yaratıcı yaklaşımla, hemen belirmeyen ve geleneksel adım adım mantıkla elde edilemeyen gerekçe kullanarak.
Optimizasyon.
SAYISAL ANALİZ Doç. Dr. Cüneyt BAYILMIŞ.
Stok Yönetimi Planlı Sonradan Siparişli EOQ veya
Lineer Olmayan Denklem Sistemlerinin Çözüm Yöntemleri
Bulanık Mantık Kavramlar:
Adım Adım Algoritma.
BİL3112 Makine Öğrenimi (Machine Learning)
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,
Dinamik programlama ve açgözlü yaklaşım soruları.
Dinamik programlama ve Açgözlü algoritma
Algoritmalar II Ders 6 Açgözlü Algoritmalar.
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
Algoritmalar II Ders 5 Açgözlü Algoritmalar.
Algoritmalar II Ders 8 Açgözlü Algoritmalar.
Algoritmalar II Ders 7 Açgözlü Algoritmalar.
DERS 7 SAYISAL İNTEGRASYON DERS 7.1 TRAPEZOIDAL (YAMUK) KURAL
Tamsayılı Doğrusal Programlama Algoritmaları
SAĞLIK KURUMLARINDA KARAR VERME YÖNTEMLERİ
Optimizasyon Teknikleri
Problem Çözme Yaklaşımları
Problem Çözme ve Algoritmalar
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.
Sunum transkripti:

MIT503 Veri Yapıları ve algoritmalar Algoritma Oluş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 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

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)

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

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

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

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

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

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

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 :)

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?

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

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

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

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

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+...)

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+...)

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+...)

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

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

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;

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

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

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

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

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

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

Ö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

Ö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

Ö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