560 likes | 934 Views
MIT503 Veri Yapıları ve algoritmalar Algoritmalar a giriş. Y. Doç. Yuriy Mishchenko. Algoritmalara giriş. Ders planı (en önemli genel matematiksel problemler) Lineer olmayan denklem çözme İkiye bölme metodu Newton-Raphson metodu Sekant metodu Lineer olmayan denklem sistemi çözme
E N D
MIT503 Veri Yapıları ve algoritmalarAlgoritmalara giriş Y. Doç. Yuriy Mishchenko
Algoritmalara giriş Ders planı (en önemli genel matematiksel problemler) • Lineer olmayan denklem çözme • İkiye bölme metodu • Newton-Raphson metodu • Sekant metodu • Lineer olmayan denklem sistemi çözme • Newton-Raphson metodu • Gaus metodu (lineer denklem sistemleri, Newton-Raphson metodunun adımı) • Sayısal optimizasyon metodları • Dereceli azaltma algoritması
Algoritmalara giriş • Algoritmaların çoğunun doğası matematiksel, yani matematiksel şekilde tanımlanmış ve matematiksel problemin çözümü sağlar • Bu durumda, temel matematiksel işlemler bilinir olarak varsayıyoruz yani basit matematiksel işlemler söz konusu değil, bunların üstündeyiz
Algoritmalara giriş • Matematiksel problemler arasında en temel olan biri genel denklem çözme
Lineer olmayan denklem çözme • Lineer olmayan denklem vardır, • ve burada f(x) lineer olmayan genel bir fonksiyon • Birçok gerçek problem ve soru gerçek hayatta ve uygulamalarda bu şekile götürülebilir
Lineer olmayan denklem çözme • Bu soru çok kolay durumda bile çözülemez;
İkiye bölme metodu İkiye bölme algoritması • Ana fikri: eğer bir [a,b] aralığında bir f fonksiyonunun sıfırı varsa, bu fonksiyonun aralığın sonunda hem pozitif hem de negatif olması genellikle beklenebilir b a pozitif negatif
İkiye bölme metodu İkiye bölme algoritması • Sıfır noktasını bulmak için, arama aralığını ikiye bölünce hangi tarafta f(a’)*f(b’)<0koşulun doğruluğunu kontrol ederiz, o tarafta sıfır aramaya devam ederiz b a pozitif negatif
İkiye bölme metodu b a pozitif negatif
İkiye bölme metodu İkiye bölme algoritması • Aralığın uzunluğu her zaman iki kat azalır, yani çok hızlı • f fonksiyonunun sıfırı herhangi gereken belirlilikle log zamanda bulunabilir
İkiye bölme metodu İkiye bölme denklem çözme algoritması: giriş [ab] aralığı, AB olsun fonksiyon, f olsunAB’nin orta noktası, O olsunAB’nin uzunluğu gereken belirlilikten büyük İKEN AB’nin sol sonu, A olsun EĞER f(A)*f(O) 0’den küçük İSE yeni AB AB’nin sol yarısı olsun AKSİ HALDE yeni AB AB’nin sağ yarısı olsun AB’nin orta noktası, O olsun
Bir boyutlu genel arama İkiye bölme arama algoritması: giriş nesne dizisi, D olsun hedef nesnesi, H olsunD’nin ortasındaki nesnesi, A olsunA H’ye eşit değil ve D’nin boyut 1’den büyük İKEN EĞER A H’den büyük İSE yeni D D’nin sol yarısı olsun AKSİ HALDE yeni D D’nin sağ yarısı olsun D’nin ortasındaki nesnesi, A olsun Eğer A H’ye eşit değil İSE Hedef bulunamadı
İkiye bölme metodu • Burada bir boyutlu fonksiyonun sıfırını aranması bir boyutlu genel arama sorunu olarak düşünülebilir, öyleyse genel ikiye bölme yaklaşımını çok verimli şekilde kullanabildik
Newton-Raphsonmetodu • Ana fikir: eğer lineer olmayan denklem çözülemezse, lineer denklemi nasıl çözülebilmesini biliyoruz...
Newton-Raphsonmetodu • Lineer olmayan denklemi çözmek için o zaman: • Orijinal genel denklemi yaklaşık olarak lineer denklem kullanarak yazarız • Bu “yaklaşık” lineer denklemi çözeriz • Bu “yaklaşık” çözüm gerçek çözüme daha yakın olacağını umarız • Gerekirse aşağıdaki adımlar son “yaklaşık” çözüm başlangıç nokta olarak kullanarak tekrarlarız
Newton-Raphsonmetodu • Orijinal denklemi yaklaşık olarak lineer denklem kullanarak temsil etmek için türev kullanabiliriz; türev
Newton-Raphsonmetodu • Bu yaklaşık denklemin çözümünün gerçek çözüme daha yakın olacağını umarız;
Newton-Raphsonmetodu Newton-Raphson yöntemi: • Orijinal denklemi türev kullanarak yaklaşık olarak lineer denklem olarak temsil ediyoruz • O “yaklaşık” lineer denklemi direkt olarak çözüyoruz • Nekadar gerekirse aşağıdakiler tekrarlıyoruz
Newton-Raphsonmetodu Newton-Raphson algoritması: giriş fonksiyonu, f giriş fonksiyonunun türevi, f’ başlangıç noktası, x gereken belirlilik, e x’nin değişimi e’den büyük İKEN yeni x, x-(f’(x)^-1)*f(x) olsun
Sekantmetodu • Sekant metodunun ana fikir: b a
Sekantmetodu • Sekant metodunun ana fikir: • Sekant metodunda Newton-Rhapson metodu gibi orijinal genel denklem yaklaşık lineer denklem kullanarak temsil ederiz • Burada bu lineer denklem (a,f(a)) ve (b,f(b)) noktaları geçen (kırmızı) çizgi olarak düşünülür, • Bu yöntemde fonksiyonun türevinin bilinmesi gerekmez, ve bu açıdan sekant metodu Newton-Raphson metodundan daha kolaydır b a
Sekantmetodu • Sekant metodunun ana fikir: • (a,f(a)) ve (b,f(b)) noktaları geçen lineer fonksiyonu kullanarak orijinal denklemin yaklaşık çözümü elde edilir • Bu yaklaşık çözümü x için f(a)*f(x) koşul kontrol edilir ve sıfırın yeni aralığı seçilir • Bu yeni aralığında aynı işlem tekrarlanır b a
Sekantmetodu Bu algoritmayı evde yazın
Denklem sistemi çözme • Birçok durumda bir problemi çözmek için aynı zamanda birçok fonksiyon/koşul sıfıra dönmesi gerekmektedir • Bu fonksiyonlarda tipik olarak birçok değişken vardır
Denklem sistemi çözme • Bu durumda, bir denklem sistemi olduğunu diyoruz, hem fhem de x birçok fonksiyon ve değişken içerebilir anlamındadır, yani f=(f1,f2,f3,...) ve x=(x1,x2,x3,...)
Denklem sistemi çözme • Bu problemin çözümünü elde etmek için yeni Newton-Rhapson yöntemi kullanılabilir, yani orijinal fonksiyonun yaklaşık lineer temsili aranıp o yaklaşık lineer denklem sistemi çözülür
Denklem sistemi çözme • Eğer bir değişken durumunda Newton-Rhapson yönteminde fonksiyonun türevi vardıysa, burada türevin rölü bir matris almaktadır
Denklem sistemi çözme • Burada yaklaşık denklem sistemi lineer denklem sistemi yani doğrusal denklem dizgesi, yani önceki Newton-Raphson adımı gerçekleştirmek için lineer denklem sistemi çözebilmemiz lazım
Denklem sistemi çözme • Lineer denklem sistemleri, temel seviyede önemli ve birçok durumda karşılayan bir matematiksel problem
Denklem sistemi çözme • Bu problemin en verimli genel çözüm Gaus yöntemidir
Denklem sistemi çözme • Gaus yönteminin ana fikri, ilk önce 2., 3., vb denklemlerden 1. denklemi çıkartıp 2., 3. vb denklemlerden x1 terimi kaldırılmaktır
Denklem sistemi çözme • Örneğin, eğer biz 2. denklemden 1. denklem a21/a11 ile çarpıp çıkartırsak, 2. denklemden x1 terimi kaldırılır, aynı şekilde x1 terimi 3., 4., vb denklemlerden kaldırılabilir
Denklem sistemi çözme • İkinci adım olarak, 1., 3., 4., vb denklemlerden 2. denklem kullanarak x2 terimi kaldırılır
Denklem sistemi çözme • Örneğin, eğer biz 1. denklemden 2. denklem a12/a22 ile çarpıp çıkartırsak, 1. denklemden x2 terimi kaldırılır
Denklem sistemi çözme • Bu şekilde devam denklem sistemi “koşegen” formuna getirilir, yani bütün denklemlerde tek x-terim kalır
Denklem sistemi çözme • Koşegen formundaki sistemi çözmek kolaydır, yani
“Gaus yöntemi” algoritması: giriş sistemin katsayıları, a(k,m)olsun giriş sistemin sabit terimleri, b(k) olsun denklem/bilinmeyenlerin sayısı, K olsun BÜTÜN b(k;0)=b(k); //hesaplama ilk değişkenleri belirtmek BÜTÜN a(k,m;0)=a(k,m); BÜTÜN k İÇİN //hangi denklem çıkartılacağız BÜTÜN m İÇİN a(k,m;k)=a(k,m;k-1); // i. denklem değişmez BÜTÜN n İÇİN (k≠n) // hangi denklemden çıkartacağız G=a(n,k;k-1) /a(k,k;k-1) // uygun bir çarpıcı BÜTÜN m İÇİN // iki denklem çıkartma işlemi a(n,m;k)=a(n,m;k-1)-G*a(k,m;k-1) // k. katsayı a(n,k;k)---->0 burada b(n;k)=b(n;k-1)-G*b(k;k-1) // sağ sabitin güncelleştirilmesi BÜTÜN m İÇİN x(m)=b(m;K)/a(m,m;K); //final çözüm
Denklem sistemi çözme • Genel problem için, orijinal denklem sistemi türevler kullanarak yaklaşık olarak lineer denklem sistemi kullanarak temsil edilip o Gaus yöntemi kullanarak çözüp Newton-Rhapson yöntemi uygulanabilir;
Denklem sistemi çözme • Yani, • Orijinal denklemi türevler kullanarak ve bir başlangıç noktasına göre yaklaşık lineer denklem sistemi şeklinde yazıyoruz • Bu yaklaşık lineer denklem sistemi çözümünü Gaus yöntemi kullanarak buluyoruz • Yaklaşık sistemin çözümü, yeni başlangıç noktası olarak kullanıyoruz • Bu çözüm gereken belirliliğe gelene kadar aşağıdaki adımları tekrarlıyoruz
Denklem sistemi çözme Bu algoritmayı evde yazın
Sayısal optimizasyon • Sayısal optimizasyon, birkaç değişkene bağlı bir fonksiyonun en büyük veya en küçük değerini bulmayı demektir
Sayısal optimizasyon • Optimizasyon çok önemli ve birçok uygulamalarda karşılayan problem, ve algoritma biliminin de çok büyük kısmıdır
Sayısal optimizasyon • En yüksek noktasında fonksiyon ne artabilir nede azalabilir, yani bu noktada tüm değişkenlere göre fonksiyonun türevi sıfıra eşit olması gerekmektedir
Sayısal optimizasyon • Yani, fonksiyonun max noktasını bulmak için genel denklem sistemi çözmek yeterlidir, ve bu Newton-Rhapson yöntemi kullanarak yapılabilir
Sayısal optimizasyon Sayısal optimizasyon: giriş fonksiyonu, f giriş fonksiyonunun xk türevleri, fk lineer-olmayan-denklem-sistemi-çöz( fk )
Sayısal optimizasyon • Alternatif olarak çok sık ve birçok durumda (özellikle değişken sayısı yüksek olursa) kullanılan yöntem, dereceli azaltma veya artırma yöntemidir (“gradient descent” veya “gradient ascent” yöntemi) • Dereceli artırma yöntemi, genel ve çok güclü sayısal optimizasyon yöntemidir
Sayısal optimizasyon • Bir (x1,x2,...) başlangıç noktası ile başlıyoruz • Var olan başlangıç noktasında fonksiyonun en hızlı artıran yönüne küçük adımı yapıp başlangıç noktasını güncelleştiriyoruz • Yukarıdaki adımı ne kadar gerekiyorsa tekrarlıyoruz • Fark edin ki, öyle adımlarla fonksiyonun değeri sürekli düşer yani sonuçta ola fonksiyonun en yüksek bir noktası sağlanması lazım
Sayısal optimizasyon • Artırılacak fonksiyon (iki değişken)