Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

Benzer belgeler
Algoritmalar. Sıralama Problemi ve Analizi. Bahar 2017 Doç. Dr. Suat Özdemir 1

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1

Algoritmalar. Doğrusal Zamanda Sıralama. Bahar 2017 Doç. Dr. Suat Özdemir 1

Yrd. Doç. Dr. Ümit ATİLA

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

F(A, N, K) // A dizi; N, K integer if N<0 then return K; if A[N]>K then K = A[N]; return F(A, N-1, K);

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#6: AZALT VE FETHET YÖNTEMİ

VERİ YAPILARI VE PROGRAMLAMA

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

BIP116-H14-1 BTP104-H014-1

3.Hafta Master Teorem ve Böl-Fethet Metodu

Alıştırma 1: Yineleme

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#2: ALGORİTMA ANALİZİ

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

BMB204. Veri Yapıları Ders 9. B+ Ağacı, Hash, Heap. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

ALGORİTMA VE PROGRAMLAMA I

YZM 2116 Veri Yapıları

f(x) ve g(x) reel sayılarda tanımlı iki fonksiyon olmak üzere, x > k olacak şekilde bir k vardır öyle ki,

ALGORİTMA VE PROGRAMLAMA I

VERİ YAPILARI DATA STRUCTURE GİRİŞ

YZM 2116 Veri Yapıları

ÜSLÜ SAYILARLA İLGİLİ TEMEL KURALLAR. (2 ) demek 2 tane 2 3 'ün çarpımı demektir. (2 ) = 2.2 = 2 eder.

DOSYA ORGANİZASYONU. Sıralı erişimli dosya organizasyonu yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Bilgisayar programlamanın üç temel mantık yapısından biridir. Diğer ikisi ise Seçilim(Selection) ve Döngü(Loop, Iteration)dür.

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BMB204. Veri Yapıları Ders 12. Dizgi Eşleme (String Matching) Algoritmaları İleri Veri Yapıları

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

YZM 2116 Veri Yapıları

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#1: ALGORİTMA KAVRAMI

b) Algoritmanızın en kötü durumda işlem zamanını asimptotik olarak bulunuz

GENETİK ALGORİTMA ÖZNUR CENGİZ HİLAL KOCA

Algoritmaların Karşılaştırılması. Doç. Dr. Aybars UĞUR

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI

Algoritmalar ve Karmaşıklık

Sıralı Erişimli Dosyalar. Kütük Organizasyonu 1

Problem Set 1 Çözümler

VERİ YAPILARI. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ HASH TABLOLARI.

Pratik Ara Sınav 1 Çözümleri

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir?

Arama Algoritmaları. Doğrusal Arama ve Binary Arama

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Azalt ve Fethet Algoritmaları

Dr. Fatih AY Tel: fatihay@fatihay.net

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Veri Yapıları Dersi. Proje#2

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

BIL222 Veri Yapıları ve Algoritmalar

Veri Yapıları. Öğr.Gör.Günay TEMÜR Düzce Üniversitesi Teknolojis Fakültesi

Olimpiyat Soruları. sonuçları tekrar fonksiyonda yerine koyup çıkan tüm sonuçları toplayan program (iterasyon sayısı girilecek)

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları

Algoritmalar. Çizge Algoritmaları. Bahar 2017 Doç. Dr. Suat Özdemir 1

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

Web Madenciliği (Web Mining)

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

BMB202. Veritabanı Yönetimi Ders 5. İlişkisel Cebir ve SQL. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

SAYILAR DOĞAL VE TAM SAYILAR

Bölüm Özeti. Algoritmalar. Fonksiyonların Büyümesi. Algoritmaların Karmaşıklığı. Örnek Algoritmalar Algoritmik Paradigmalar

BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI. Kafkas Üniversitesi Mühendislik Fakültesi

Fonksiyon Optimizasyonunda Genetik Algoritmalar

SAYI VE KODLAMA SİSTEMLERİ. Teknoloji Fakültesi/Bilgisayar Mühendisliği

Fonksiyon Minimizasyonunda Simulated Annealing Yöntemi

Graflar bilgi parçaları arasındaki ilişkileri gösterirler.

Okut. Yüksel YURTAY. İletişim : (264) Sayısal Analiz. Algoritma & Matlab.

127 - Twoing Algoritması ile Sınıflandırma Kalp Hastalığı Uygulaması MEHMET AKİF ERSOY ÜNİVERSİTESİ İLHAN UYSAL MEHMET BİLEN SAMİ ULUKUŞ

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

GENETİK ALGORİTMALARA GİRİŞ (III)

BMT207 VERİ YAPILARI DATA STRUCTURE

Veri Yapıları. for(i=1;i<n;i++) { ekle=d[i]; for (k=i 1; k>=0 && ekle<=d[k] ;k ) D[k+1]=D[k]; /* Geriye kaydırılıyor*/

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritmalara Giriş Eylül 21, 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Çalışma notu 6

ALGORİTMA VE PROGRAMLAMA I

Mantıksal çıkarım yapmak. 9 ve üzeri

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

Algoritmalara Giriş 6.046J/18.401J

10 LU SAYISAL SİSTEMİ İLE 2 Lİ SAYISAL SİSTEMİ ARASINDA ÇEVİRİM UYGULAMASI

MARKOV ZİNCİRLERİNDE DURUMLARIN SINIFLANDIRILMASI

ALGORİTMA VE PROGRAMLAMA I

Algoritma ve Programlama I

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

İleri Diferansiyel Denklemler

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

PERMÜTASYON, KOMBİNASYON. Örnek: Örnek: Örnek:

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir? Örnek...4 : Genel terimi w n. Örnek...1 : Örnek...5 : Genel terimi r n

Yrd. Doç. Dr. Caner ÖZCAN

Algoritma Analizi. Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

YZM 2116 Veri Yapıları

Programlama Dilleri 3

Sayılar Teorisi SAYILAR TEORİSİ VE SAYILAR

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

YZM 2116 Veri Yapıları

Telefon Rehberi Uygulaması

Temel Şifreleme Yöntemleri. Teknoloji Fakültesi / Bilgisayar Mühendisliği

Transkript:

Algoritmalar Arama Problemi ve Analizi Bahar 2016 Doç. Dr. Suat Özdemir 1

Arama Problemi Sıralama algoritmaları gibi arama algoritmaları da gerçek hayat bilgisayar mühendisliği problemlerinin çözümünde sıkça kullanılan algoritmalardır. Arama işlemi tek başına bir problem teşkil edebileceği gibi (örneğin veri tabanlarında kayıt arama işlemi) bir problemin çözümünde ara bir işlem de olabilir (işletim sistemlerin de işlem yapılabilmek için anahtar kelimelerin hafıza üzerinde bulunması). Bilgisayar mühendisliğinin temel bir problemi olması nedeni ile bir çok arama algoritması geliştirilmiştir. Arama işlemi ağaç gibi, çizge (graph) gibi daha gelişmiş veri yapıları üzerinde yapılabilmesine rağmen bu bölümde arama işleminin diziler üzerinde yapıldığı varsayılmıştır. Bahar 2016 Doç. Dr. Suat Özdemir 2

Arama Problemi Bu ders kapsamındaki temel arama problemi Farklı sayısal değerlerden oluşan a 1, a 2, a 3,, a n dizisi içinde herhangi bir x değerinin olup olmadığının ve varsa yerinin öğrenilmesi şeklinde tanımlanabilir. Problemin çözümü içinse x elemanına eşit olan a i elemanın bulunup indeks değerinin döndürülmesi gerekmektedir. Eğer x = a i ise x söz konusu dizinin i. elemandır. Problemin çözümü için akla gelebilecek ilk fikir kaba kuvvet yöntemine dayalı doğrusal veya sıralı arama yöntemidir (Linear/sequential search). Bahar 2016 Doç. Dr. Suat Özdemir 3

Arama Problemi Insertion Sort algoritmasında olduğu gibi çoğu insanın küçük boyutlu dizilerde kullandığı içgüdüsel bir çözümdür. Doğal olarak böyle bir çözümden çok iyi bir çalışma zamanı performansı beklemek mümkün değildir. Geçtiğimiz derslerde öğrendiğimiz problem çözme yaklaşımları kullanılarak performans artışı sağlanabilir. Bu bağlamda böl-ve-yönet problem çözme tekniği uygulanarak arama işleminin performansı artırılabilir. Ancak, doğrusal arama algoritmasının avantajı arama yapılacak dizinin sırasız olduğu durumlarda da çalışabilmesidir. Böl-ve-yönet problem çözme tekniğine dayalı yöntemler ise arama yapılacak olan dizinin sıralı olmasını gerektirir. Bahar 2016 Doç. Dr. Suat Özdemir 4

Doğrusal (Sıralı) Arama Algoritması En basit arama biçimi doğrusal aramadır. En baştan başlayarak teker teker bütün dizi, aranan eleman bulunana kadar taranır. Eğer aranan eleman dizide bulunursa bulunduğu pozisyonun indeks değeri sonuç olarak döndürülür. Aranan değer dizi içinde bulunamazsa buna ait bir mesaj sonuç olarak döndürülür. A 0.. n 1 dizisinde doğrusal arama yapacak algoritmaya ait sözde kod ve bir örnek aşağıda verilmiştir. Bahar 2016 Doç. Dr. Suat Özdemir 5

Doğrusal (Sıralı) Arama Algoritması Bahar 2016 Doç. Dr. Suat Özdemir 6

Örnek: Doğrusal Arama Yukarıda verilen dizide x=22 elemanı aranıyor olsun. Verilen sözde koda göre x değeri sıra ile 7, 12, 5 ve 22 değerleri ile karşılaştırılacaktır. 22 değeri ile olan karşılaştırma eşitlik sağlandığı için algoritma 22 nin indeks değeri olan 3 döndürecektir. Eğer x=40 için bir arama yapılsaydı hiç bir zaman eşleşme olmayacağı için algoritma 40 dizide bulunamadı mesajını döndürürdü. Bahar 2016 Doç. Dr. Suat Özdemir 7

Doğrusal Arama Çalışma Zamanı Analizi Oldukça basit bir algoritma olan Doğrusal Arama algoritması aranan değerin girdi dizisindeki pozisyonuna (veya varlığına) göre çok farklı performans gösterebilir. Bu nedenle en iyi, en kötü ve ortalama çalışma zamanlarına bakılması gerekmektedir. Bahar 2016 Doç. Dr. Suat Özdemir 8

En İyi Çalışma Zamanı Analizi Algoritmadan elde edilebilecek en iyi çalışma zamanı aranan değerin A dizisinin ilk elemanı olması durumunda oluşur. Bu durumda algoritma sadece 1 karşılaştırma yapıp sonlanacaktır, bu nedenle çalışma zamanı Ω 1 olarak ifade edilir. Bahar 2016 Doç. Dr. Suat Özdemir 9

En Kötü Çalışma Zamanı Analizi Benzer şekilde algoritmadan elde edilebilecek en kötü çalışma zamanı aranan değerin A dizisinin son elemanı olması veya dizide olmaması durumunda oluşur. Bu durumda algoritma tüm diziyi aranan x değeri ile karşılaştırmak zorundadır, yani algoritma n karşılaştırma yapıp sonlanacaktır, bu nedenle çalışma zamanı O n olarak ifade edilir. Buradan anlaşılacağı üzere en iyi veya en kötü çalışma zamanı tamamen girdi dizisine ve aranan değere bağlı olup algoritmanın rasgele bir girdi dizisi ve aranan eleman için performansı konusunda fikir vermemektedir. Bu nedenle ortalama çalışma zamanı analizi yapılmadır. Bahar 2016 Doç. Dr. Suat Özdemir 10

Ortalama Çalışma Zamanı Analizi Ortalama çalışma zamanı analizini yapmak için önce aşağıdaki iki kabulün yapılması gerekir. başarılı bir aramanın olma olasılığı p dir (0 p 1) aramada eşleşmenin herhangi bir i indeksinde olma olasılığı her i değeri için eşittir Bu kabuller dahilinde Doğrusal Arama algoritmasının ortalama çalışma zamanı analizi aşağıdaki gibi yapılabilir. Başarılı bir aramanın dizinin herhangi bir i. pozisyonunda olma olasılığı p/n dir. Ayrıca bu işlem için gerekli olan karşılaştırma sayısı da i dir. Bahar 2016 Doç. Dr. Suat Özdemir 11

Ortalama Çalışma Zamanı Analizi Benzer şekilde yapılan aramanın başarısız bir arama olma olasılığı (1 p) dir ve toplam n karşılaştırma gerektirir. Buna göre herhangi bir arama işlemi için gerekli olan toplam karşılaştırma sayısı K aşağıdaki şekilde ifade edilir: Bahar 2016 Doç. Dr. Suat Özdemir 12

Ortalama Çalışma Zamanı Analizi Elde edilen son ifade bize algoritmanın çalışma zamanı hakkında net bilgi vermektedir. Başarılı bir arama için p=1 olacağı için K = (n + 1)/2 yani yaklaşık olarak n/2 dir (ortalama durumda algoritma dizinin yarısı ile aranan değeri karşılaştıracaktır). Aynı şekilde başarısız bir arama olma durumunda ise p=0 olacağı için K=n olacaktır (aranan değer tüm dizi ile karşılaştırılacaktır). Sonuç olarak ortalama durum için de elde edilen çalışma zamanı asimptotik olarak Θ(n) şeklinde ifade edilir ki bu da en kötü çalışma zamanına eşittir. Bahar 2016 Doç. Dr. Suat Özdemir 13

İkili Arama (Binary Search) Algoritması Arama işlemi sırasında arama yapılacak olan dizinin sıralanmış olması arama işlemini oldukça kolaylaştırmaktadır. Gerçek hayat uygulamalarında arama yapılacak olan diziler bir kere oluşturulup üzerlerinde çok defa arama yapıldığı için (örneğin bir telefon rehberi uygulamasındaki isimler dizisi) sıralanmış dizilerin bu özelliğinden faydalanılabilir. Bahar 2016 Doç. Dr. Suat Özdemir 14

İkili Arama (Binary Search) Algoritması Eğer dizi sıralanmışsa küçük bir değeri aramak için dizinin başından başlayarak tüm elemanlara bakmak yersiz olacaktır. Örneğin, sözlükte arama yaparken, m harfi ile başlayan bir kelime için sözlüğün bütün sayfalarını baştan sona doğru aramak zaman kaybı olacaktır. Sözlük alfabetik sıralı olduğunu için, sözlüğü ortaya yakın bir yerden açmak ve aranan sözcüğün ilk harfleri ile açılan sayfadaki sözcüklerin ilk harflerini karşılaştırarak ileri veya geri gitmek çok daha çabuk sonuca ulaşmamızı sağlayacaktır. Bahar 2016 Doç. Dr. Suat Özdemir 15

İkili Arama (Binary Search) Algoritması Bu gibi sıralanmış diziler için ikili arama (binary search) algoritması O(lgn) çalışma zamanı ile doğrusal aramadan çok daha iyi performans göstermektedir. Yukarıda açıklandığı gibi ikili arama algoritması diziyi parçalara bölerek arama bölgesini daraltmaktadır. Algoritmanın çalışma mantığı kısaca şöyle özetlenebilir: Arama yapılacak dizi önce ortadan ikiye bölünür. Bahar 2016 Doç. Dr. Suat Özdemir 16

İkili Arama (Binary Search) Algoritması Ortadaki eleman pivot olarak seçilir (eğer dizi çift sayıda elemandan oluşuyorsa ise ortadaki iki elemandan herhangi biri pivot olabilir). Aranan eleman pivot ile karşılaştırılır. Eğer aranan eleman bu pivot eleman ise işlem bitmiştir. Aranan elemanın pivottan büyük veya küçük olmasına göre dizinin alt veya üst bölümü ile ortadan bölüp arama işlemi yeniden yapılır ve böylece aranan eleman bulunana kadar devam edilir. Bahar 2016 Doç. Dr. Suat Özdemir 17

İkili Arama (Binary Search) Algoritması Bahar 2016 Doç. Dr. Suat Özdemir 18

İkili Arama (Binary Search) Algoritması Örnek: Aşağıda verilen dizide 33 Bahar 2016 Doç. Dr. Suat Özdemir 19

İKİLİ ARAMA 6 0 13 14 25 33 43 51 53 64 72 84 93 95 96 97 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sol sag Bahar 2016 Doç. Dr. Suat Özdemir 20

İKİLİ ARAMA 6 0 13 14 25 33 43 51 53 64 72 84 93 95 96 97 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sol orta sag Bahar 2016 Doç. Dr. Suat Özdemir 21

İKİLİ ARAMA 6 0 13 14 25 33 43 51 53 64 72 84 93 95 96 97 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sol sag Bahar 2016 Doç. Dr. Suat Özdemir 22

İKİLİ ARAMA 6 0 13 14 25 33 43 51 53 64 72 84 93 95 96 97 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sol orta sag Bahar 2016 Doç. Dr. Suat Özdemir 23

İKİLİ ARAMA 6 0 13 14 25 33 43 51 53 64 72 84 93 95 96 97 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sol sag Bahar 2016 Doç. Dr. Suat Özdemir 24

İKİLİ ARAMA 6 0 13 14 25 33 43 51 53 64 72 84 93 95 96 97 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sol orta sag Bahar 2016 Doç. Dr. Suat Özdemir 25

İKİLİ ARAMA 6 0 13 14 25 33 43 51 53 64 72 84 93 95 96 97 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sol sag Bahar 2016 Doç. Dr. Suat Özdemir 26

İKİLİ ARAMA 6 0 13 14 25 33 43 51 53 64 72 84 93 95 96 97 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sol sag orta Bahar 2016 Doç. Dr. Suat Özdemir 27

İKİLİ ARAMA 6 0 13 14 25 33 43 51 53 64 72 84 93 95 96 97 1 2 3 4 5 6 7 8 9 10 11 12 13 14 lo hi mid Bahar 2016 Doç. Dr. Suat Özdemir 28

İkili Arama Algoritması Çalışma Zamanı Analizi İkili aramada da algoritmanın çalışma zamanı performansı aranan değerin girdi dizisindeki pozisyonuna (veya varlığına) göre farklılık gösterebilir. Bu nedenle İkili Arama algoritmasının analizi için en iyi ve en kötü çalışma zamanlarına bakmak gerekir. En iyi çalışma zamanı aranan değerin dizinin tam ortasında olması durumudur ki bu durumda sadece 1 karşılaştırma yaparak algoritma sonlandırılır. Asimptotik olarak çalışma zamanı Ω(1) şeklinde ifade edilir. En kötü çalışma zamanı aranan değerin dizi içerinde bulunamaması durumunda ortaya çıkar. Bu durumda yapılan her karşılaştırma işleminden sonra arama yapılacak dizi boyutu yarıya düşeceğinden, en kötü durum için yapılacak karşılaştırma sayısı Bahar 2016 Doç. Dr. Suat Özdemir 29

İkili Arama Algoritması Çalışma Zamanı Analizi şeklinde tekrarlı olarak ifade edilebilir. T(1) = 1 olduğuna dikkat ediniz. n=2 k olması durumunda n=1 olana kadar toplam k bölünme olur, bu durumda eşitlik T(n) = k + 1 = lgn + 1 olur. Bu ifade 2 nin üssü olmayan herhangi bir n değeri için aşağıdaki gibi yazılabilir: T(n) = floor(lgn) + 1 Bahar 2016 Doç. Dr. Suat Özdemir 30

İkili Arama Algoritması Çalışma Zamanı Analizi Sonuç olarak en kötü durumda algoritmanın çalışma zamanı Θ(lgn) olarak özetlenebilir. İkili arama algoritmasının ortalama durum çalışma zamanı ise en kötü duruma eşittir ve asimptotik olarak Θ(lgn) ifadesi ile gösterilir. Bahar 2016 Doç. Dr. Suat Özdemir 31