MIT503 Veri Yapıları ve algoritmalar Algoritmalara giriş

Slides:



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

PARÇACIĞIN KİNEMATİĞİ
MIT503 Veri Yapıları ve algoritmalar
LİMİT.
IT503 Veri Yapıları ve algoritmalar
İLİŞKİLERİ İNCELEMEYE YÖNELİK ANALİZ TEKNİKLERİ
MIT503 Veri Yapıları ve algoritmalar Algoritma Oluşturma – Açgözlü algoritmalar ve buluşsallar Y. Doç. Yuriy Mishchenko.
MIT563 Yapay Zeka ve Makine Öğrenmesi
MIT563 Yapay Zeka ve Makine Öğrenmesi
MIT563 Yapay Zeka ve Makine Öğrenmesi
MIT563 Yapay Zeka ve Makine Öğrenmesi
Cebirsel İfadeler’ de Toplama İşlemi
9. ADİ DİFERANSİYEL DENKLEMLERİN SAYISAL ÇÖZÜMLERİ
4.1. Grafik Yöntemleri 4.2. Kapalı Yöntemler 4.3. Açık Yöntemler
10. OPTİMİZASYON OPTİMİZASYON NEDİR?
Bölüm 8: EĞRİ UYDURMA Fizikte laboratuarda yapılan deneysel ölçümlerin ne kadar hata payı içerdiğini, veya belli teorik modellere ne kadar uyduğunu bilmek.
MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri
MIT563 Yapay Zeka ve Makine Öğrenmesi
MATEMATİKSEL PROGRAMLAMA
Ek 2A Diferansiyel Hesaplama Teknikleri
MIT505 İnternet ve Web Programlama: Dinamik web sayfaları, javascript
MIT563 Yapay Zeka ve Makine Öğrenmesi
Lineer Sistemlerin Deprem Davranışı
YMT 222 SAYISAL ANALİZ (Bölüm 2b)
MIT503 Veri Yapıları ve algoritmalar Sıralama algoritmaları
Sürekli Olasılık Dağılımları
PARAMETRİK VE HEDEF PROGRAMLAMA
MIT503 Veri Yapıları ve algoritmalar Veri ağaçları
Formüller Mustafa AÇIKKAR.
Abdulkerim Karabiber Ozan Gül
Bölüm 4: Sayısal İntegral
Bölüm6:Diferansiyel Denklemler: Başlangıç Değer Problemleri
CEBİRSEL İFADELER ŞEHİT POLİS İSMAİL ÖZBEK ORTA OKULU BURSA/KESTEL.
T Ü R E V TÜREV ALMA KURALLARI.
GEOMETRİK PROGRAMLAMA
Problem Yaklaşım Temelleri, Algoritma ve Akış Şeması
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.
RAYLEIGH YÖNTEMİ : EFEKTİF KÜTLE
Yıldız Teknik Üniversitesi Makina Mühendisliği Bölümü
SONLU ELEMANLAR YÖNTEMİ
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
Yrd.Doç.Dr. Mustafa Akkol
NEWTON-RAPHSON İTERASYON YÖNTEMİ
2 Birinci Mertebeden Adi Diferansiyel Denklemler
SONLU ELEMANLARA GİRİŞ DERSİ
DİFERANSİYEL DENKLEMLER
Problem Yaklaşım Temelleri, Algoritma ve Akış Şeması
Karar Bilimi 1. Bölüm.
DOĞRUSAL EŞİTSİZLİKLER
Lineer Programlama: Model Formulasyonu ve Grafik Çözümü
Optimizasyon.
SAYISAL ANALİZ Doç. Dr. Cüneyt BAYILMIŞ.
Yapay Sinir Ağları (YSA)
Sayısal Analiz Sayısal Türev
Lineer Olmayan Denklem Sistemlerinin Çözüm Yöntemleri
Lineer Olmayan Denklem Sistemlerinin Çözüm Yöntemleri
Sayısal Analiz Sayısal İntegral 3. Hafta
ALGORİTMA NEDİR? İster bilgisayarda, ister matematikte, isterse günlük hayatta karşımıza çıkan her problemin çözüm yolu vardır. Örneğin yemek yerken farkında.
BİL3112 Makine Öğrenimi (Machine Learning)
Yrd.Doç.Dr.Esra Tunç Görmüş
Bölüm10 İteratif İyileştirme Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
O R T L G İ M A A Ve Akış şemaları.
Matematik Artan-Azalan Fonksiyonlar Artan fonksiyon nedir?, azalan fonksiyon nedir?, artan-azalan fonksiyonların formülünü nasıl kullanırım?, artan-azalan.
ERZURUM TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK ve MİMARLIK FAKÜLTESİ İNŞAAT MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ MMF 202 SAYISAL YÖNTEMLER DERSİ DERS BİLGİLENDİRMESİ.
Geriye Yayılım Algoritması (Back-Propagation Algorithm)
Çok Katmanlı Algılayıcı-ÇKA (Multi-Layer Perceptron)
EK BİLGİ Bazı Eniyileme (Optimizasyon) Teknikleri Eniyileme problemi
SONLU ELEMANLAR YÖNTEMİ
TÜREV ve TÜREV UYGULAMALARI
Bilgisayar Bilimi Problem Çözme Süreci-2.
Sunum transkripti:

MIT503 Veri Yapıları ve algoritmalar Algoritmalara 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 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’)<0 koş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 olsun AB’nin orta noktası, O olsun AB’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 olsun D’nin ortasındaki nesnesi, A olsun A 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-Raphson metodu Ana fikir: eğer lineer olmayan denklem çözülemezse, lineer denklemi nasıl çözülebilmesini biliyoruz...

Newton-Raphson metodu 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-Raphson metodu Orijinal denklemi yaklaşık olarak lineer denklem kullanarak temsil etmek için türev kullanabiliriz; türev

Newton-Raphson metodu Bu yaklaşık denklemin çözümünün gerçek çözüme daha yakın olacağını umarız;

Newton-Raphson metodu 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-Raphson metodu 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

Sekant metodu Sekant metodunun ana fikir: a b

Sekant metodu 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 a b

Sekant metodu 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

Sekant metodu 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 f hem 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

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

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)

Sayısal optimizasyon ... sonuçta bir en yüksek noktaya ulaşıyoruz ... f değerini en hızlı artıran adımları yapıp o noktayı taşıyoruz ... Bir noktada başlıyoruz ...

Sayısal optimizasyon Bir fonksiyonu en hızlı artıran yöne fonksiyonun eğimi yani “gradient” denir Yani fonksiyonun değerini en hızlı artırmak için, fonksiyonun eğim vektörünün yönüne adımlar yapılmalıdır

Sayısal optimizasyon Fonksiyonun eğim vektörü bu şekilde verilir Türevler , şuanki noktaya göre hesaplanmalıdır

Sayısal optimizasyon Not: Dereceli artırma sadece lokal olarak bir max noktasını verir, başka başlangıçla başlayınca başka bir max noktasına gelmeye ihtimal var

Sayısal optimizasyon Not: Eğer fonksiyonun tek max noktası varsa, dereceli artırmanın o noktayı vermesi garantisi var

Sayısal optimizasyon Dereceli artırma algoritmasını evde yazın