İleri Algoritma Analizi

Slides:



Advertisements
Benzer bir sunumlar
Yığınlama Sıralaması (Heap Sort)
Advertisements

Ders İçeriği Ağaç Veri Modeli Tanım ve Gerçekleştirim İkili Ağaç
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Yinelemeli Algoritma Analizi & Asimptotik Notasyon
Ayrık Yapılar Algoritma Analizi.
MIT503 Veri Yapıları ve algoritmalar
Dersin Adı:ALGORİTMA GELİŞTİME TEKNİKLERİ Dersin Kodu:YBS506 Konu:Kontrol Yapıları(if / if-else) 2.HAFTA.
Ders İçeriği Bağlantılı Liste İki Yönlü Bağlantılı Liste
KOŞUL İFADELERİ onbirc.com/133.
Kontrol Çevrimleri FOR WHILE DO-WHILE IF-ELSE SWITCH-CASE-DEFAULT
İkili Ağaçlar İkili Arama Ağaçları
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri
Lokal Arama Algoritmaları
Karar ifadeleri ve Döngüler
Algoritmalar DERS 3 Böl ve Fethet(Divide and Conquer) İkili arama
Özyineli Sıralama Algoritmaları
TAMSAYILARIN EN KÜÇÜK ORTAK KATINI BULMAK ( E K O K)
Yapısal Program Geliştirme – if, if-else
Algoritmalar DERS 4 Çabuk sıralama Böl ve fethet Bölüntüler
MIT503 Veri Yapıları ve algoritmalar Veri ağaçları
Bölüm 2 – Kontrol Yapıları
Özyineleme(Recursion)
SINIFLANDIRMA VE REGRASYON AĞAÇLARI
HIZLI SIRALAMA ALGORİTMALARI(QUICK SORT)
Tuğçe ÖZTOP İlköğretim Matematik Öğretmenliği 2. sınıf
Trees, Vectors, Iterators. ADT Abstract Data Type (ADT) vs implementation -Soyut Veri Türleri - Uygulamaları.
DÖNGÜLER.
Partially Ordered Trees (POT)
C#’TA DÖNGÜLER onbirc.com/133.
Karenin Çevresi ve Alanı
Hosoya Üçgeninin Üçgenleri
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Matematiksel Veri Yapıları. İçerik Matematiksel Veri Yapıları – Kümeler – Diziler – Fonksiyonlar – İkili ilişkiler Sonsuz kümeler – Sonlu nicelik – Sonsuz.
Temel Bilgi Teknolojileri Yrd. Doç. Dr. Doğan Aydoğan.
Algoritmalar ve Programlama I Ders 8:DİZİ (VEKTÖR) KAVRAMI
AVL(Adel’son-Vel’skiĭ and Landis) Ağacı AVL ağacı, iki alt ağacının yükseklikleri farkının en fazla 1 olabildiği dengeli ikili arama ağacıdır. AVL ağacında.
Ege ÜNİVERSİTESİ ULUSLARARASI BİLGİSAYAR ENSTİTÜSÜ AYCAN VARGÜN Prof
Sıralama. Sıralama, bir dizideki sayısal elemanların küçükten büyüğe veya büyükten küçüğe, sayısal olmayan bir dizideki elemanların ise A’ dan Z’ ye.
Algoritma Analizi Algoritma Algoritma bir problemi çözmek için izlenen komutlar kümesidir. Verilen bir problemin birden fazla çözümü dolayısıyla.
ALGORİTMA KARMAŞIKLIĞI
Dinamik programlama ve Açgözlü algoritma
0-1 Sırt Çantası Problemi
Algoritmalar II Ders 1: Alan zaman takası yöntemi.
Insertion Sort Fikir: Oyun kartlarını sıralamaya benzer.
Algoritmalar II Ders 7 Açgözlü Algoritmalar.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
C Sharp 9. hafta - dIZILER.
DİZİLER Bellekte sıralı bir şekilde bulunan ve aynı türden bilgilerin saklandığı veri yapısına dizi (array) denir. Örneğin kullanıcıdan 7 kişinin not ortalamasını.
İleri Algoritma Analizi
İleri Algoritma Analizi
İleri Algoritma Analizi
İleri Algoritma Analizi
Algoritmalar II Ders 11 Çizgeler. Çizgelerin bilgisayarda gösterimi. BFS algoritması.
Algoritma Nedir? Algoritmayı, herhangi bir problemin çözümü için izlenecek yolun adımlar halinde yazılması olarak tanımlayabiliriz. Algoritma, bir problemin.
İleri Algoritma Analizi
Chapter 6 Dönüştür ve Yönet (Transform-and-Conquer)
Chapter 3 Brute Force Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
İleri Algoritma Analizi
NİŞANTAŞI ÜNİVERSİTESİ
İleri Algoritma Analizi
Veri Yapıları ve Algoritmalar
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Fonksiyonlar-2.
İleri Algoritma Analizi
Ders 9: İkili arama ağaçları
Çizge Algoritmalari 10. Ders.
Chapter 4 Divide-and-Conquer
Bölüm 5 Azalt ve yönet (Decrease-and-Conquer)
Sunum transkripti:

İleri Algoritma Analizi Ders7: Algoritmaların ortalama işlem zamanı analizi Arama algoritmaları örneği Prof. Dr. Şahin EMRAH İleri Algoritma Analizi

İkili arama algoritması (Binary Search (BS)) Problem: Sıralı bir dizide verilen bir elemanı arama Giriş: Sıralı A[n] dizisi ve bu dizide aranan bir key elemanı Algoritma: Dizinin ortanca elemanı ile key elemanını karşılaştır, eşit çıkarsa aranan eleman budur, ortanca eleman küçük çıkarsa, aranan eleman sağ tarafta, aksi durumda sol taraftadır. Aynı algoritmayı kalan parçaya uygula.

Sözde kod Algorithm BS(A,n,key) left←1 right ←n while left<right mid←floor((left+right)/2) if key=A(mid) then return mid else if key>A(mid) left ←mid+1 else right ←mid-1

Ortalama işlem zamanı analizi Bu algoritma için ortalama karşılaştırma sayısını bulalım: key=A[i] ise bu elemanı bu algoritma ile bulmak için gerekli karşılaştırma sayısı C[i] olsun. Bu durumda ortalama karşılaştırma sayısı Cort=(C[1]+C[2]+…C[n])/n olur.

Örnek üzerinde hesaplama Verilen dizi 1,2,3,4,5,6,7 olsun. Eğer key=4 ise BS algoritması bu değeri 2 karşılaştırma ile (1=left≤right=7 ve A(mid=4)=4) karşılaştırmaları ile bulur. Eğer key=2 veya key=6 ise BS algoritması bu değerleri bulmak için key=4 durumuna ek olarak 3 karşılaştırma daha yapmalıdır (örneğin, key=2 için if key=2>A(mid=4) sonra 1=left<right=3 ve sonra A(mid=2)=2 karşılaştırmaları)

Hesaplama(devam) Yani her sonraki parçanın ortasını bulmak için ek olarak 3 karşılaştırma yapmak gerekir

Toplam karşılaştırma sayısı Yani tam olarak 1 değer için (ortanca sayı) 2 karşılaştırma, 2 değer için (sol ve sağ parçaların ortası) 5 karşılaştırma, 4 değer için 8 karşılaştırama,… yapmak gereklidir. Genel durumda 2i-1 değer için tam olarak 3i-1 karşılaştırma yapılmalıdır. Şimdi n= 2k -1 olsun. Cort=(C[1]+C[2]+…C[n])/n=(1.2+2.5+4. 8+… 2i-1.(3i-1)+… 2k-1.(3k-1))/n

Ortalama karşılaştırma sayısı Cort=(C[1]+C[2]+…C[n])/n=(1.2+2.5+4.8+… 2i-1.(3i- 1)+… 2k-1.(3k-1))/n=3(1.1+2.2+3. 22+…k. 2k-1 )/n- (1+2+… 2k-1)/n Sk=1.1+2.2+3. 22+…k. 2k-1 olsun. 2Sk= 1.2+2. 22 +3. 23+…k. 2k oldu. Buradan da Sk= 2Sk-Sk=-(1+2+… 2k-1)+ k. 2k = k. 2k - 2k +1= (n+1) log2 (n+1)-n Buradan da Cort=(3(n+1)log2(n+1))/n-4=3log2(n+1)+(3 log2(n+1))/n-4

İyileştirlmiş İkili Arama Algoritması Ana fikir: Gerçekleşmesi daha az olasılıklı olan key=A(mid) karşılaştırmasını en sonda yazmakla algoritmadaki ortalama karşılaştırma sayısını azaltabiliriz.

Sözde kod Algorithm IBS(A,n,key) left←1 right ←n while left<right mid←floor((left+right)/2) if key>A(mid) left ←mid+1 else if key<A(mid) right ←mid-1 else return mid