Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

ALGORİTMA ANALİZİ DERS NOTU, Lecture notes of Design and Analysis of Algorithms

ASİMPTOTİK NOTASYONLAR TETA OMEGA VE BÜYÜK O NOTASYONU

Typology: Lecture notes

2018/2019
On special offer
30 Points
Discount

Limited-time offer


Uploaded on 11/17/2019

semsinisa
semsinisa 🇹🇷

1 document

1 / 87

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
YMT316
Algoritma Analizi
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
Discount

On special offer

Partial preview of the text

Download ALGORİTMA ANALİZİ DERS NOTU and more Lecture notes Design and Analysis of Algorithms in PDF only on Docsity!

YMT

Algoritma Analizi

1

1.Hafta

Algoritmaların

Analizi

Algoritma Analizine Giriş Asimptotik Analiz Diziler İkili Arama 2

Dersin Gereksinimleri

 Bu dersteki öğrencilerin Nesne tabanlı

programlama dillerinden birisini (Java, C++ veya

C#) ve Veri Yapıları dersini almış olması gerekir.

Ders İşleme Kuralları

 Derse devam zorunludur. Ders başlangıç saatlerine özen gösteriniz. Derse geç gelen öğrenci ara verilinceye kadar bekleyecektir.  Her ders iki imza alınacaktır.  Ödevler zamanında teslim edilecektir. Verilen tarihten sonra getirilen ödevler kabul edilmeyecektir.  Ders esnasında lütfen kendi aranızda konuşmayın, fısıldaşmayın, mesajlaşmayın v.s. Dersi anlatan ve dinleyen kişilere lütfen saygı gösterin.  Ders ile ilgili merak ettiğiniz her konuda soru sormaktan çekinmeyin.  Cep telefonu v.b kişisel taşınabilir iletişim cihazlarınızı ders süresince mutlaka kapalı tutunuz.

Algoritma Nedir?Algoritma,  bir problemin çözmek için bir prosedür veya formüldür.  problemi çözmek için takip edilmesi gereken yönergeler kümesidir.  matematikte ve bilgisayar biliminde bir işi yapmak için tanımlanan, bir başlangıç durumundan başladığında, açıkça belirlenmiş bir son durumunda sonlanan, sonlu işlemler kümesidir.  Program  Bir programlama dilinde algoritmanın gerçekleştirilmesidir.

Algoritmik çözüm  Aynı algoritmik problem için farklı algoritmalar olabilir.  Algoritmaların özellikleri nelerdir?

Algoritmaların Özellikleri

 Diğer bazı kriterler ise algoritmanın bilgisayar ortamına

aktarılabilme özelliği , basitliği , vb. gibi özelliklerdir.

 Bir problem için birden fazla algoritma verilmişse, bu

algoritmalardan en iyisinin seçilmesi gerekir.

 İyi algoritmayı belirlemek için uygulanan testler veya yapılan

işlemler Algoritma Analizi ’ nin konusudur.

Algoritmaların Yönleri1 - Algoritmaları Tasarlama  Bulmacaların (puzzel) parçalarını birleştirme,  Veri yapılarını seçme,  Problemin çözümü için temel yaklaşımlar seçme.  En popüler tasarım stratejileri böl ve fethet (divide&conquer), açgözlü(greedy), dinamik programlama, özyineleme (recursive).  2 - Algoritma ifadesi ve uygulanması  Algoritmayı tasarladıktan sonra sözde kod (pseudocode) ifadesinin belirlenmesi ve problem için uygulanması  Bu konudaki endişeler, netlik, özlülük, etkinlik vb.

Algoritmaların Yönleri5 - Algoritma veya programı doğrulama

 Algoritmanın verilen tüm olası girişler için hesaplama

yaptığını ve doğru çıkış ürettiğini göstermektir.

6 - Algoritmaların test edilmesi

 Test için iki aşama vardır;

 Hata ayıklama (Debugging): Programın örnek veriler

üzerinde çalıştırılması sırasında oluşan hataları tespit

etme ve onları düzeltme işlemi.

 Profil oluşturma (Profiling): Çeşitli veriler üzerinde

programın çalıştırılması ve sonuçların hesaplaması için

gerekli zamanın (ve alan) ölçülmesi işlemi.

Algoritma Tasarımı  Algoritmaları tasarlamada kullanılacak yöntemler

 Özyineleme

 Böl ve fethet

 Bilinen probleme indirgeme

 Dinamik programlama

 Kaba Seçim veya Haris (Greedy) algoritması

 Bir veri yapısı icat etme

 İhtimali (olasılıksal) çözümler

 Yaklaşım çözümleri

Algoritmaları tasarlamada kullanılacak yöntemler:Bir veri yapısı icat etme  O ana kadar var olamayan bir veri yapısının icat edilmesi ile problemin çözülmesine veri yapısı icat etme yöntemi denir.  Bilinen probleme indirgeme  Kompleks olan bir problemin çözümünü yapmak için çözümü bilinen bir veya birden fazla başka probleme dönüştürüp bu şekilde problemi çözme işlemine bilinen probleme indirgeme yöntemi denir.  İhtimali (olasılıksal) çözümler  Bazı durumlarda gelişigüzellik ilkesi ile etkili bir şekilde problem çözümü yapılabilmektedir. Bunlara örnek olarak Las Vegas polinom-zamanlı ve Monte Carlo polinom-zamanlı algoritmalar verilebilir. Gelişigüzellik kullanılarak yapılan problem çözümlerine ihtimali çözümler yöntemi denir.  Yaklaşım çözümleri  Çözümü deterministik Turing makinası ile yapılamayan yani karmaşık hesaplamaların belirli bir yöntem ile çözülemediği bu problemlerin bir kısmına bazı kriterler uygulayarak yaklaşım mantığı ile çözüm üretilebilmektedir. Bundan dolayı bu mantık ile yapılan algoritma tasarımına yaklaşım çözümler yöntemi adı verilir.

Algoritma Analizi

 Algoritma analizi, bilgisayar programının performansı (başarım) ve

kaynak kullanımı konusunda teorik çalışmalardır.

 Bir başka ifadeyle, algoritmanın icra edilmesi sırasında duyacağı

kaynak miktarının tahmin edilmesine Algoritma Analizi denir.

 Kaynak denildiğinde, bellek, iletişim bant genişliği, mantık kapıları akla gelebilir, fakat en önemli kaynak algoritmanın icra edilebilmesi için gerekli olan zamanın tahmin edilmesidir.

 Algoritma analizi, farklı çözüm yöntemlerinin verimliğini analiz eder.

 Biz bu derste performans yani başarım üzerine yoğunlaşacağız.

Neden algoritmalar ve başarımla uğraşırız?  Başarım (performans) genelde yapılabilir olanla imkansızın arasındaki çizgiyi tanımlar.  Algoritmik matematik program davranışlarını açıklamak için ortak dil oluşturur.  Başarım bilgi işleme 'nin para birimidir.  Program başarımından alınan dersler diğer bilgi işleme kaynaklarına genellenebilir.  Hız eğlencelidir!

Algoritmik Performans  Algoritmik performansın iki yönü vardır:

 Zaman (Time)

 Yönergeler veya talimatlar zaman alabilir.  Algoritma ne kadar hızlı bir performans gösteriyor?  Algoritmanın çalışma zamanını (runtime) ne etkiler?  Bir algoritma için gerekli olan zaman nasıl tahmin edilir?  Gerekli olan zaman nasıl azaltılabilir?

 Alan (Space)

 Veri yapıları yer kaplar.  Ne tür veri yapıları kullanılabilir?  Veri yapılarının seçimi çalışma zamanını nasıl etkiler?