1 / 29

IT503 Veri Yapıları ve algoritmalar

IT503 Veri Yapıları ve algoritmalar. Y rd . Doç. Dr. Yuriy Mishchenko. Tanıştırma ve Temel Kavramlar. Ders planı Algoritmalar a g iriş, algoritmalar nedir? Algortima temsil yöntemleri Algoritma türleri Algoritma analizi. Algoritmalar nedir?. Algoritmalar

Download Presentation

IT503 Veri Yapıları ve algoritmalar

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Tanıştırma ve Temel Kavramlar Ders planı • Algoritmalaragiriş, algoritmalar nedir? • Algortima temsil yöntemleri • Algoritma türleri • Algoritma analizi

  3. Algoritmalar nedir? Algoritmalar • Algoritmalar, bilgisayar yazılım açısından çoğunlukla biliriz • Algoritmaların çoğunun matematiksel ve bilgisayar program olmasına rağmen, algoritmalar daha çok geniş kavramdır

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

  5. Algoritmalar nedir? • En basit matematiksel algoritma – ana okulda verilen sayı ekleme süreci: 127 326 453 + 1

  6. Algoritmalar nedir? • Matematiksel algoritmalar, • Matematiksel bir soru var, • Sorunun çözüm/amacına nasıl ulaşabileceğini açıklayan detaylı bir plan, bu problemin algoritmasıdır

  7. Algoritmalar nedir? • Daha genel anlamda algoritmalar, her hangi bir sorunun detaylı çözüm planı olarak düşünülebilir • Sadece matematikte yada bilgisayar programlamada değil, günlük hayatta hepimiz bol bol algoritma kullanırız

  8. Algoritmalar nedir? • Çorba pisirme tarifi, aslında bir algoritmadır • 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, bu da algoritmadır • 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. Algoritma temsilleri • Algoritma belirtmek için, çözüm planı/tarifi belirli, biçimsel ve biri tarafından kolayca anlanabilir şekilde tanımlanması gerekmektedir • Önceki örnekler gibi, bir talimat liste şeklinde sırayla tanımlanan algoritmalara sözde kod denir

  11. Algoritma temsilleri • Sözde kod, algoritmanın talimatları adım adım ve biçimsel şekilde belirtmek için normal dil ifadeleri kullanır • Sözde kod, normal bilgisayar programlara kollayca dönüştürülebilmesi için, algoritmaların temel tanımları vermek için genellikle kullanılır

  12. Algoritma temsilleri • Algoritmaların temsili için ikinci popüler yöntem akış şemalarıdır

  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

  14. Algoritma temsilleri • Bu şekilde temsil edilen algoritmalara akış şeması denir • Akış şeması, algoritmanın talimat sırasını veya algoritmanın işlem akışını belirtir

  15. Algoritma temsilleri • 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. Algoritma türleri Özyineleme(recursion) • Çözüm adımları aynı işlemin tekrarlanması şeklindedir • Sonuç aynı işlem yinelenen uygulamasıyla elde edilir • 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 uygulanması faktöriyeldir, yani F(n)=n*F(n-1)=n*(n-1)*F(n-2) ...=n*(n-1)*(n-2)*...*1

  17. Algoritmaların temel türleri Böl ve fethet (divide and conquire) • Problem birkaç daha küçük probleme bölünebilir • Daha küçük problemlerin çözümü daha çok kolaydır • Orijinal problem, altproblemlerin çözümlerini kullanarak daha hızlı çözülebilir • Sıralama böl-ve-fethet yaklaşımın klasik örneğidir • Bir n-elemanlı dizi sıralanması n2 karşılaştırma işlemi gerekir • Diziyi iki n/2-elemanlı parçaya bölüp parçaları ayrı ayrı sıralayıp böylece 2*(n/2)2= n2/2 karşılaştırma işlem olacak • Parçaları geri birleştirip orijinal dizi n2/2+n işlemle sıralanacaktır

  18. Algoritmaların temel türleri Açgözlü/yerel(greedy/local) • Genellikle optimizasyon problemlerinde kullanılan yaklaşım, yani bir soru için en uygun (optimal olan) cevabı bulmak gerekmektedir • Böyle cevabı adım adım ararken, tüm adımlarda o adımdaen iyi olarak görünen seçimiyapmak gerekmektedir • Açgözlü/yerel yol seçme örneği: • Evden çıktığımızda okula en yakın yere giden dolmuşu bineriz • Durakta inince, tekrar okula en yakın yere giden dolmuşu bineriz • ... VB • Bu yol seçme sorunun açgözlü çözümüdür

  19. Algoritmaların temel türleri Dinamik programlama(dynamic programming) • Bir tür optimizasyon problemlerinde kullanılan yaklaşım • Bütün olabilir cevapların uygunluğu bir özyinelemekullanarak hesaplanabilirse, dinamik programlama uygulanabilir • Dinamik programlama ile yol seçme örneği • Fikir: Bütün duraklar için o duraktan okula ulaşmak için optimal gereken zamanı t(DURAK) olsun; • t-hesaplanması: • Okulda olan A durağında t(A)=0 • A durağına bağlı duraklar için, t(B)=min(t(A)+t(A←B)) • Bu adım bütün duraklar için uygulayınca, bütün duraklar için t(B) elde edilebilir • A’dan başlayınca, bütün bağlı duraklar adım adım inceleyip ona optimal ulaşma zamanı seçin, bu duraklar için özyineleme şekilde ona bağlı duraklar için t(B) hesaplayın, vb

  20. Algoritmaların temel türleri 10 dk 5 dk 15 dk 10 dk 10 dk Ev 10 dk 5 dk 5 dk 5 dk 15 dk Okul 5 dk 5 dk 15 dk 10 dk

  21. Algoritmaların temel türleri 15=min(5+10,10+10) 5=0+5 10 dk 15 20 5 15 dk 10 dk 10 dk 5 dk Ev 10 10 dk 30 0 5 dk 5 dk 5 dk 15 25 15 dk Okul 5 dk 5 dk 20 30 5 15 dk 10 dk

  22. Algoritmaların temel türleri Bu şekilde bulunmuş en hızlı yolun tam zamanı 5+10+10+5=30 dk 10 dk 15 20 5 5 dk 15 dk 10 dk 10 dk Ev 10 10 dk 30 0 5 dk 5 dk 5 dk 15 25 15 dk Okul 5 dk 5 dk 20 30 5 15 dk 10 dk

  23. Algoritmaların temel türleri Fark edin ki açgözlü yolun zamanı 15+5+5+10=35 dk 10 dk 15 20 5 5 dk 15 dk 10 dk 10 dk Ev 10 10 dk 30 0 5 dk 5 dk 5 dk 15 25 15 dk Okul 5 dk 5 dk 20 30 5 15 dk 10 dk

  24. Algoritmaların temel türleri • Dinamik programlama yol seçme algoritması sadece “yol seçme” için değil birçok durumda faydalı olabilir; • Üretim süreç planlanması • Belge işletme planlanması • Benzer grafik şeklinde temsil edilebilir herhangi bir problem çözülebilir

  25. Algoritma analiz temelleri • Herhangi algoritma biri tarafından uygulanması düşünülmektedir (örneğin, bir kişi, bilgisayar, vb) • Bu açıdan, herhangi algoritmanın çok önemli olan bir noktası algoritmanın işlemlerini gerçekleştirmek için gereken zaman ve herhangi diğer önemli maliyetidir

  26. Algoritma analiz temelleri • Algoritmanın işletme zamanı kesin durumuna bağlıdır (örneğin, durakların sayısı, dizinin boyutu, ...) • Bunun gibi kesin “durumlara” algoritmanın girişi denir • Böylece, algoritmaların işletme zamanı ve diğer maliyetlerinin girişine bağlı dır

  27. Algoritma analiz temelleri • Algorıtma analizinin amacı, belirli bir giriş için algoritmanın zaman ve bellek gereksinimleri belirtmektedir • Algoritmaların zaman ve bellek gereksinimleri giriş boyutuyla genellikle artır • Giriş boyutuna genellikle “n” denir • Böylece “n”, girişin boyutunu herhangi şekilde belirten bir niceliktir – sıralanacak sayıların sayısı, yol için olabilir durak sayısı, vb

  28. Algoritma analiz temelleri • Böyle algoritmanın zamanı göstermek için genellikle Onotasyonu kullanılır; • O(n), algoritmanın zamanı lineerdir, yani büyük n’ler için yaklaşık olarak const*ngibi artır • O(n2), algoritmanın zamanı kareseldir, yani büyük n’ler için yaklaşık olarak const*n2gibi artır • VB • Örneğin, sıralamanın basit algoritmalarının zamanı O(n2) ve en iyi algoritmanın zamanı O(n log n) olarak bilinir

  29. Algoritma analiz temelleri Problem: veritabanında verileri sıralamak gerekir; • Veritabanında kayıt sayısı “n”=1,000,000=106 • O(n2)sıralama algoritmasının işletme zamanı n2=1012 • O(n log n) algoritmasının işletme zamanı n log n=6*106 • Eğer bilgisayar sanyede 10,000işlem yaparsa, O(n2) sıralama 108 saniyeve O(n log n) sıralama sadece 600 saniye gerekecektir! • Veritabanlarında sıralama herhangi bilgisayar uygulamalarında her gün defalarca yapılır, o yüzden algoritmanın işletme zamanı büyük fark yaratır

More Related