Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

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

Benzer bir sunumlar


... konulu sunumlar: "MIT503 Veri Yapıları ve algoritmalar Yrd. Doç. Dr. Yuriy Mishchenko."— Sunum transkripti:

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

2 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

3 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

4 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

5 Algoritmalar nedir?  En temel matematiksel algoritma – tamsayıların eklenmesi

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

7 Algoritmalar nedir? • Algoritmalar sadece matematiksel problemler değiller

8 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

9 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

10 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

11 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

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

13 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 Çorba algoritması:

14 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

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

16 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

17 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 n 2 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 n 2 /2 zamanda sıralanabilmektedir

18 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

19 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

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

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

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

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

24 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!

25 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

26 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

27 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

28 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(n 2 ), algoritmanın zamanı kareseldir, yani büyük n’ler için yaklaşık olarak const*n 2 formula ile verilir • VB – Örneğin, sıralama’nın basit uygulamasının zamanı O(n 2 ) ve en iyi olabilir zamanı O(n log n)’dir

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


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

Benzer bir sunumlar


Google Reklamları