Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

MIT503 Veri Yapıları ve algoritmalar

Benzer bir sunumlar


... konulu sunumlar: "MIT503 Veri Yapıları ve algoritmalar"— 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 + 1

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 Ç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

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

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 15 dk 10 dk

21 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

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

23 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ı =35 dk 30 20 25 15 5 10 Okul Ev 10 dk 5 dk 15 dk 5 dk 10 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(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

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


"MIT503 Veri Yapıları ve algoritmalar" indir ppt

Benzer bir sunumlar


Google Reklamları