MIT503 Veri Yapıları ve algoritmalar

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İ
Karmaşıklık Giriş.
Karmaşıklık Giriş.
IT503 Veri Yapıları ve algoritmalar
Algoritmalar Ders 8 Dinamik Programlama.
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
MIT504 İnternet ve Web Programlama: Javascript programlama devam Yrd. Doç. Dr. Yuriy Mishchenko.
MIT505 İnternet ve Web Programlama: Web Şablonları ve Web düzenleme
MIT563 Yapay Zeka ve Makine Öğrenmesi
MIT563 Yapay Zeka ve Makine Öğrenmesi
Algoritmalar DERS 2 Asimptotik Notasyon O-, Ω-, ve Θ-notasyonları
BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ
CLUSTERING USING REPRESENTATIVES Hazırlayan: Arzu ÇOLAK
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
MIT503 Veri Yapıları ve algoritmalar Algoritmalara giriş
BPR151 ALGORİTMA VE PROGRAMLAMA - I
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Recursion (Özyineleme)
Algoritmalar DERS 3 Böl ve Fethet(Divide and Conquer) İkili arama
Özyineli Sıralama Algoritmaları
Algoritma ve Akış Diyagramları
ALGORİTMA ve PROGRAMLAMA
IT 504 İnternet ve Web Programlama Tanıtım Yrd. Doç. Yuriy Mishchenko.
MIT503 Veri Yapıları ve algoritmalar Sıralama algoritmaları
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 5: Fonksiyonlar
Görsel C# ile Windows Programlama
MIT503 Veri Yapıları ve algoritmalar Veri ağaçları
Bilgisayar Programlama
Veri Yapıları ve Algoritmalar
Problem Çözme Süreci.
Algoritmalar (Algoritms)
Temel tanımlar ve işleyiş
Recursion (Özyineleme)
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
Problem Yaklaşım Temelleri, Algoritma ve Akış Şeması
Tuğçe ÖZTOP İlköğretim Matematik Öğretmenliği 2. sınıf
Veri Yapıları ve Algoritmaları ders_1
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
SONLU ELEMANLARA GİRİŞ DERSİ
Problem Yaklaşım Temelleri, Algoritma ve Akış Şeması
Algoritmalar ve Programlama I Ders 2: Akış Diyagramları
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
• Smith-Waterman Algoritması • BLAST
ALGORİTMA VE AKIŞ ÇİZELGELERİ
KISIM II Matematiksel Kavram ve Prosedürlerin Gelişimi
Optimizasyon.
Sayısal Analiz 7. Hafta SAÜ YYurtaY.
PROGRAMLAMA MANTIĞI, ALGORİTMA PROBLEM ÇÖZME
Algoritma Analizi Algoritma Algoritma bir problemi çözmek için izlenen komutlar kümesidir. Verilen bir problemin birden fazla çözümü dolayısıyla.
Dinamik programlama ve Açgözlü algoritma
ALGORİTMA VE PROGRAMLAMA 
PROGRAMLAMA TEMELLERİ Burak UZUN Bilişim Teknolojileri Öğretmeni Burak UZUN.
Algoritma ve Akış Şemaları
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
Algoritmalar II Ders 5 Açgözlü Algoritmalar.
YAPAY ZEKA DERS NOTLARI UYGULAMALARI Bölüm 1 : Yapay Zeka
Algoritmalar II Ders 7 Açgözlü Algoritmalar.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
MALTEPE ÜNİVERSİTESİ Paralel Hesaplama MATLAB ve Paralel Hesaplama
Optimizasyon Teknikleri
Algoritma Nedir? Algoritmayı, herhangi bir problemin çözümü için izlenecek yolun adımlar halinde yazılması olarak tanımlayabiliriz. Algoritma, bir problemin.
Algoritmalar II Ders 9 Dinamik Programlama ve Açgözlü Yaklaşım Soruları.
İleri Algoritma Analizi
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
Sunum transkripti:

MIT503 Veri Yapıları ve algoritmalar Yrd. Doç. Dr. Yuriy Mishchenko

Tanıştırma ve Temel Kavramlar Ders planı Algoritmalara giriş, algoritmalar nedir Algortimaların temel temsili Algoritmaların temel türleri Algoritmaların temel analizi

Algoritmalar nedir? Algoritmalar Algoritmaları çoğunlukla bilgisayar yazılım anlamından biliyoruz Algoritmaların çoğunun matematiksel ve bilgisayar algoritmaların olmasına rağmen, algoritmalar çok daha geniş bir kavramdır

Algoritmalar nedir? Algoritmalar Matematiksel ve bilgisayar algoritmaları bilgisayar biliminin (computer science) konusudur Bilgisayar bilimi, matematiğin bir bölümüdür Bu anlamda algoritmalar, bir matematiksel problemin çözümünün talimatı yada planıdır

Algoritmalar nedir? En temel matematiksel algoritma – tamsayıların eklenmesi 127 326 453 + 1

Algoritmalar nedir? Bu anlamda matematiksel algoritmalar, Problem/amaç var Çözümüne/amaca nasıl ulaşabileceğini açıklayan talimat yada detaylı plan

Algoritmalar nedir? Algoritmalar sadece matematiksel problemler değiller

Algoritmalar nedir? Evde çorba pisirmek Sebzeleri hazırlamak Suyu kaynatmak Tavuğu ekleyip pişirmek Sebze kestirip kızartmak Herşeyi tencereye koymak Birkaç (birçok) dakika kaynatmak Ateşi kapatmak ve sakinleşmesini beklemek

Algoritmalar nedir? Okula ders için gelmek Evden çıkmak Evin kapısını kilitlelemek Dolmuşa binmek Dolmuşta para vermek Toros durağını beklemek Durağınızda durağını söyleyip inmek Dersliğe kadar yürümek

Algoritmaların temel temsili Algoritmalar formülleştirmek/belirtmek için çözüm planı/talimatı bir şekilde tanımlanması gerekiyor Önceki şekilde algoritmanın sırayla verilen bir talimat şeklinde tanımlanmasına sözde kod denir

Algoritmaların temel temsili Sözde kod, algoritmanın yazılı ve birazcık biçimsel talimat liste şeklinde yapılmış tanımıdır Sözde kod, normal programlara benzer ve algoritmalar daha temel seviyede belirtmek için çoğunlukla kullanılan alettir

Algoritmaların temel temsili Algoritmanın talimat sırası bir akış şeması şeklinde de belirtilebilir

Çorba algoritması: Sebzeleri hazırlamak Suyu kaynatmak Tavuğu ekleyip pişirmek Sebze kestirip kızartmak Herşeyi tencereye koymak Birkaç (birçok) dakika kaynatmak Ateşi kapatmak ve sakinleşmesini beklemek

Algoritmaların temel temsili Bu şekilde temsil edilmiş algoritmalara akış şeması şeklinde yazılmış olması denir Bu temsil algoritmaların talimatlarının sırasını yada işletme akışını belirtir Böyle algoritmaların temsillerine akış şeması denmektedir

Algoritmaların temel türleri Algoritma, normalde belirli bir soru için geliştirilir ve farklı sorular için farklı algoritmalara gerek vardır; bu anlamda genel bir algoritma olamaz Ancak genel algoritma geliştirme stratejileri veya birçok benzer soruyu çözen algortimalar olabilir Özyineleme (recursion) Böl ve fethet (divide and conquire) Açgözlü/yerel (greedy or local) Dynamik programlama (dynamic programming)

Algoritmaların temel türleri Özyineleme (recursion) Çözüm basamakları aynı şekildedir, sadece giriş bilgileri değişebilir Sonuç aynı hesaplama yinelenen uygulamasıyla sağlanır Factöriyel özyinelemenin klasik örnektir: Faktöriyel – “n!=1*2*3*…*n” Özyineleme adımı: n!=n*(n-1)! Özyineleme uygulaması: F(sayı)=sayı*F(sayı-1) Bunun çıktısı faktöriyeldir, yani F(n)=n*(n-1)*(n-2)*...*1

Algoritmaların temel türleri Böl ve fethet (divide and conquire) Problem, birkaç daha küçük problem şeklinde temsil edilebilir Sorun, ilk önce parçalara bölünür ve parçalar ayrı ayrı çözülür Final sonucu elde etmek için, parçalarının çözümleri birleştirilir Sıralama böl-ve-fethet yaklaşımın klasik örneğidir Bir n-elemenlı dizisi sıralamak için genellikle n2 zaman gerekiyor Diziyi iki eş parçaya bölün ve parçaları ayrı ayrı düzeltin, bunun için 2*(n/2)2 zaman lazım Parçaları geri birleştirip aynı dizi n2/2 zamanda sıralanabilmektedir

Algoritmaların temel türleri Açgözlü/yerel (greedy/local) Genellikle optimizasyon problemler Bir sorunu adım adım çözürken bütün adımları için o adımda optimal (yani en iyi) olarak görünen seçimi yapmak gerekmektedir Açgözlü/yerel algoritmanın yol bulma örneği: Evden çıktığımızda, okulda en yakın yere giden dolmuşu binin O durakta inince tekrar okula en yakın olan yere giden dolmuşu binin vb

Algoritmaların temel türleri Dinamik programlama (dynamic programming) Optimizasyon probleminin çözümü, yani bir soru için optimal (en uygun) cevabı sağlamayı istenmektedir Özyineleme kullanarak bütün mümkün cevaplar için onların maliyet/uygunluk hesaplanır Dinamik programlama yol bulma örneği Fikir: Bütün duraklar için o duraktan okula ulaşmak için gereken zamanı buluyoruz, t(DURAK) Nasıl yapılabilir: Okulda olan A durağında t(A)=0 Bütün diğer duraklar için t(B)=min(t(A)+t(A←B)) A’dan başlayınca adım adım bütün duraklar için yukarıdaki şekilde t(B) hesaplanır

Yol bulma algoritması Okul Ev 5 dk 10 dk 15 dk 10 dk

Yol bulma algoritması Ev Okul 15=min(5+10,10+10) 5=0+5 30 20 25 15 5 Okul Ev 5 dk 10 dk 15 dk 10 dk

En uygun yol, yol zamanı 5+10+10+5=30 dk Yol bulma algoritması En uygun yol, yol zamanı 5+10+10+5=30 dk 30 20 25 15 5 10 Okul Ev 10 dk 5 dk 15 dk 5 dk 10 dk

En “yakın” (açgözlü) yol, zamanı 15+5+5+10=35 dk Yol bulma algoritması En “yakın” (açgözlü) yol, zamanı 15+5+5+10=35 dk 30 20 25 15 5 10 Okul Ev 10 dk 5 dk 15 dk 5 dk 10 dk

Algoritmaların temel türleri Fark edin ki, bu yol bulma algoritması birçok diğer durumda da kullanılabilir Gerçek bir yol bulmak Üretim süreci planlamak Belge işlenme planlamak Benzer grafik şekilde temsil edilebilir herhangi bir problem!

Algoritma temel analizi Herhangi algoritmanın birinin tarafından yapılması düşünülmektedir (bilgisayar, kişi, vb) Bu açıdan herhangi algoritmanın çok önemli olan noktası, algoritmanın talimatları gerçekleştirmek için gereken zaman ve diğer maliyetleri

Algoritma temel analizi Algoritmanın işletme zamanı genellikle kesin durumuna bağlı (mesela, durakların sayısı, dizinin uzunluğu, vb) Bunun gibi algoritmanın durumlara giriş denir Algoritmanın işletme zamanı ve diğer maliyetleri algoritmanın girişine bağlıdır

Algoritma temel analizi Algorıtma analizinin amacı, belirli giriş boyutları için algoritmanın zaman ve bellek gereksinimleri belirtmektedir Girişinin boyut için genellikle “n” sayı ile temsil edilir, bu herhangi şekilde girişin boyutunu belirtilen nicelik olabilir – sıralanacak dizinin uzunluğu, bulunacak yol için toplam durak sayısı, vb

Algoritma temel analizi Bir girişe bağlı algoritmanın zaman gereksinimi belirtmek için genellikle O notasyonu kullanılır O(n), algoritmanın zamanı lineerdir, yani büyük n’ler için yaklaşık olarak const*n formula ile verilir O(n2), algoritmanın zamanı kareseldir, yani büyük n’ler için yaklaşık olarak const*n2 formula ile verilir VB Örneğin, sıralama’nın basit uygulamasının zamanı O(n2) ve en iyi olabilir zamanı O(n log n)’dir

Algoritma temel analizi Veritabanındaki verileri sıralamak için gereken zaman nekadardır? Veritabanında eleman sayısı “n”=1,000,000=106 O(n2) algoritmasının işletme zamanıdır n2=1012 O(n log n) algoritmasının işletme zamanıdır n log n=6*106 Eğer bilgisayar sanyede 10,000 operasyon yapabilirse, O(n2) sıralaması 108 saniye O(n log n) sıralaması sadece 600 saniye gerekecektir!