Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanTolga Çubukçu Değiştirilmiş 8 yıl önce
1
Chapter 7 Space and Time Tradeoffs Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
2
7-1 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Alan zaman takası Zamandan kazanmak için hafızadan fazladan alan kullanılan algoritmalar: Giriş verileri veya bir kısmı üzerinde yapılan ön işlemlerin sonuçları daha sonra kullanılmak üzere hafızada tutulur. Giriş verileri veya bir kısmı üzerinde yapılan ön işlemlerin sonuçları daha sonra kullanılmak üzere hafızada tutulur. Sayarak sıralamaSayarak sıralama Karakter dizisi arama algoritmalarıKarakter dizisi arama algoritmaları Hesaba dayalı adresleme (hashing)Hesaba dayalı adresleme (hashing) Dinamik programlama (bir sonraki bölüm) Dinamik programlama (bir sonraki bölüm)
3
7-2 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Sayarak sıralama b Verilen sayılar içinde bulunan her sayıdan küçük sayıların sayısını sayıyor b Bu sayıların sayısını hafizada tutuyor b Bir sayı için bu sayıdan küçük sayıların sayısı, bu sayının sıralı listede nerede bulunduğunu gösteriyor Örneğin, bir sayı için bu sayıdan küçük sayıların sayısı 10 ise bu sayı listede 11. yerdedir.Örneğin, bir sayı için bu sayıdan küçük sayıların sayısı 10 ise bu sayı listede 11. yerdedir. Şimdi tüm elemanların yerini bilerek onları sıralı bir biçimde yeni bir diziye yazabilirizŞimdi tüm elemanların yerini bilerek onları sıralı bir biçimde yeni bir diziye yazabiliriz b Bu algoritmaya sayarak sıralama (counting sort) denir
4
7-3 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Karşılaşatırma tabanlı sıralama: Karşılaştırma tabanlı sıralama algoritması için alt sınır bulunabilir Nasıl? Karar ağaçlarının yardımıyla
5
7-4 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Karar ağacı örneği 1:2 2:3 123 1:3 132312 1:3 213 2:3 231321 Her iç düğüm i:j ile gösyerildi, burada i, j {1, 2,…, n}. Sol altağaça a i a j ise geçilir. Sağ altağaç a i a j durumunu göstermektedir. Sırala a 1, a 2, …, a n
6
7-5 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Karar ağacı örneği 1:22:3 123 1:3 132312 1:3 213 2:3 231321 Her iç düğüm i:j ile gösterildi, burada i, j {1, 2,…, n}. Sol altağaçta a i a j. Sağ altağaçta a i a j. 9 4 Sırala a 1, a 2, a 3 9, 4, 6
7
7-6 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Karar ağacı örneği 1:22:3 123 1:3 132312 1:3 213 2:3 231321 İç düğüm i:j ile gösterildi, burada i, j {1, 2,…, n}. Sol altağaçta a i a j. Sağ altağaçta a i a j. 9 6 Sıralama a 1, a 2, a 3 9, 4, 6
8
7-7 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Karar ağacı örneği 1:22:3 123 1:3 132312 1:3 213 2:3 231321 Her iç düğüm i:j ile gösterildi i, j {1, 2,…, n}. Sol altağaçta a i a j. Sağ altağaçta a i a j. 4 6 Sırala a 1, a 2, a 3 9, 4, 6
9
7-8 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Karar ağacı örneği 1:22:3 123 1:3 132312 1:3 213 2:3 231321 Her yaprak , ,…, (n) aşağıdaki karşılaştırmayı göstermektedira (1) a (2) a (n) 4 6 9 Sıralama a 1, a 2, a 3 9, 4, 6
10
7-9 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Karar ağacı modeli Karar ağacı karşılaştırma algoritmasını modelleyebilir: Her veri sayısı n için bir ağaç var Algoritmaya ikili karşılaştıma yapıldığı yerde bu ikilileri birleştiriyor gibi bakılabilir. Ağaç tüm ikili karşılaştırmaları içermektedir. Algoritmanın işlem zamanı = alınan yolun uzunluğu. En kötü durumda işlem zamanı = ağaç yüksekliği.
11
7-10 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 class InsertionSortAlgorithm { for (int i = 1; i < a.length; i++) { int j = i; while ((j > 0) && (a[j-1] > a[i])) { a[j] = a[j-1]; j--; a[j] = a[i]; }} Her karşılaştırmalı sıralama Karar ağacına dönüştürülebilir 1:2 2:3 123 1:3 132312 1:3 213 2:3 231321
12
7-11 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Karar ağacı yüksekliği için alt sınır Teorem. n elemanlı bir karar ağacının yüksekliği = (n lg n) dir. İspat. Ağacın yaprak sayısı n! dir (n! Tane farklı durum olduğundan) İkili ağacın yüksekliği h ise yaprak sayısı 2 h olur. Yani n! 2 h. h lg(n!)(lg artandır) n lg n – n lg e = (n lg n).
13
7-12 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Karşılaştırmalı sıralama algoritmsı için alt sınır Heapsort ve merge sort asimptotik en iyi ( optimal) karşılaştırmalı sıralama algoritmalarıdır.
14
7-13 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7
15
7-14 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 İşlem zamanı? b Bu algoritmada A[i]<A[j ] karşılaştırılması yapılmaktadır b Algoritma seçmeli sıralama (selection sort) ile aynı sayıda karşılaştırma işlemi yapmaktadır b Ve ek olarak ek bir alana gereksinimi vardır
16
7-15 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Doğrusal zamanda sıralama Sayarak sıralama: Karşılaştırma yoktur. Giriş: A[1.. n], buradaA[ j] {1, 2, …, k}. Çıkış: B[1.. n], sıralı. Yardımcı dizi: C[1.. k].
17
7-16 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Sayarak sıralama for i 1 to k do C[i] 0 for j 1 to n do C[A[ j]] C[A[ j]] + 1 ⊳ C[i] = |{key = i}| for i 2 to k do C[i] C[i] + C[i–1] ⊳ C[i] = |{key i}| for j n downto 1 doB[C[A[ j]]] A[ j] C[A[ j]] C[A[ j]] – 1
18
7-17 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Sayarak sıralama örneği A:A: 41343 B:B: 12345 C:C: 1234
19
7-18 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 1 A:A: 41343 B:B: 12345 C:C: 0000 1234 for i 1 to k do C[i] 0
20
7-19 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 2 A:A: 41343 B:B: 12345 C:C: 0001 1234 for j 1 to n do C[A[ j]] C[A[ j]] + 1 ⊳ C[i] = |{key = i}|
21
7-20 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 2 A:A: 41343 B:B: 12345 C:C: 1001 1234 for j 1 to n do C[A[ j]] C[A[ j]] + 1 ⊳ C[i] = |{key = i}|
22
7-21 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 2 A:A: 41343 B:B: 12345 C:C: 1011 1234 for j 1 to n do C[A[ j]] C[A[ j]] + 1 ⊳ C[i] = |{key = i}|
23
7-22 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 2 A:A: 41343 B:B: 12345 C:C: 1012 1234 for j 1 to n do C[A[ j]] C[A[ j]] + 1 ⊳ C[i] = |{key = i}|
24
7-23 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 2 A:A: 41343 B:B: 12345 C:C: 1022 1234 for j 1 to n do C[A[ j]] C[A[ j]] + 1 ⊳ C[i] = |{key = i}|
25
7-24 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 3 A:A: 41343 B:B: 12345 C:C: 1022 1234 C':C': 1122 for i 2 to k do C[i] C[i] + C[i–1] ⊳ C[i] = |{key i}|
26
7-25 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 3 A:A: 41343 B:B: 12345 C:C: 1022 1234 C':C': 1132 for i 2 to k do C[i] C[i] + C[i–1] ⊳ C[i] = |{key i}|
27
7-26 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 3 A:A: 41343 B:B: 12345 C:C: 1022 1234 C':C': 1135 for i 2 to k do C[i] C[i] + C[i–1] ⊳ C[i] = |{key i}|
28
7-27 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 4 A:A: 41343 B:B: 3 12345 C:C: 1135 1234 C':C': 1125 for j n downto 1 doB[C[A[ j]]] A[ j] C[A[ j]] C[A[ j]] – 1
29
7-28 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 4 A:A: 41343 B:B: 34 12345 C:C: 1125 1234 C':C': 1124 for j n downto 1 doB[C[A[ j]]] A[ j] C[A[ j]] C[A[ j]] – 1
30
7-29 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 4 A:A: 41343 B:B: 334 12345 C:C: 1124 1234 C':C': 1114 for j n downto 1 doB[C[A[ j]]] A[ j] C[A[ j]] C[A[ j]] – 1
31
7-30 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 4 A:A: 41343 B:B: 1334 12345 C:C: 1114 1234 C':C': 0114 for j n downto 1 doB[C[A[ j]]] A[ j] C[A[ j]] C[A[ j]] – 1
32
7-31 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Döngü 4 A:A: 41343 B:B: 13344 12345 C:C: 0114 1234 C':C': 0113 for j n downto 1 doB[C[A[ j]]] A[ j] C[A[ j]] C[A[ j]] – 1
33
7-32 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Analiz for i 1 to k do C[i] 0 (n)(n) (k)(k) (n)(n) (k)(k) for j 1 to n do C[A[ j]] C[A[ j]] + 1 for i 2 to k do C[i] C[i] + C[i–1] for j n downto 1 doB[C[A[ j]]] A[ j] C[A[ j]] C[A[ j]] – 1 (n + k)
34
7-33 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 İşlem zamanı Eğer k = O(n) ise işlem zamanı (n) olur. Ama sıralama için işlem zamanı (n lg n) idi. Hata nerede? Cevap: Karşılaştırmalı sıralama için (n lg n) doğrudur. Sayarak sıralama karşılaştırmalı sıralama değil.
35
7-34 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Dayanıklı sıralama Sayarak sıralama dayanıklı sıralamadır: yani eşit elemanların sırasını değiştirmez A:A: 41343 B:B: 13344
36
7-35 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Sayı tabanı (Radix) sıralama Köken: Herman Hollerith, 1890 yılında genel nüfus sayımı için kart sayma makinesi (card-sorting machine) üretti Basamak basamak sıralar. Hollerith’in fikri (kötü fikir): sıralamaya en önemli basamaktan başlar. İyi fikir: Sıralamaya birler basamağından başlar ve yardımcı dayanıklı sıralama algoritması kullanır.
37
7-36 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 “Modern” IBM kartı Her sütuna bir karakter yazılır.
38
7-37 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Sayı tabanlı sıralama 3 2 9 4 5 7 6 5 7 8 3 9 4 3 6 7 2 0 3 5 5 7 2 0 3 5 5 4 3 6 4 5 7 6 5 7 3 2 9 8 3 9 7 2 0 3 2 9 4 3 6 8 3 9 3 5 5 4 5 7 6 5 7 3 2 9 3 5 5 4 3 6 4 5 7 6 5 7 7 2 0 8 3 9
39
7-38 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 t ye göre sıralıyalım Neden doğru çalışır? Basamaklara göre tümevarım Farz edelim ilk t – 1 basamak sıralıdır 7 2 0 3 2 9 4 3 6 8 3 9 3 5 5 4 5 7 6 5 7 3 2 9 3 5 5 4 3 6 4 5 7 6 5 7 7 2 0 8 3 9
40
7-39 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 t ye göre sıralayalım Neden doğru çalışır? Basamaklara göre tümevarım İlk t – 1basamak sıralı olsun 7 2 0 3 2 9 4 3 6 8 3 9 3 5 5 4 5 7 6 5 7 3 2 9 3 5 5 4 3 6 4 5 7 6 5 7 7 2 0 8 3 9 t basamağında farklı olan 2 sayı doğru sıralanmış olur
41
7-40 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 t ye göre sıralayalım Neden doğru çalışır? Basamaklara göre sıralama İlk t – 1 basamak doğru sıralanmış olsun. 7 2 0 3 2 9 4 3 6 8 3 9 3 5 5 4 5 7 6 5 7 3 2 9 3 5 5 4 3 6 4 5 7 6 5 7 7 2 0 8 3 9 t basamağı farklı olan 2 sayı doğru sıralanmış olur. Eşit olanlar ise girişteki gibidir doğru sıralanmıştır
42
7-41 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 İşlem zamanı analizi Yardımcı sıralama olarak sayarak sıralama kullanalım. Her basamakta (n + 9) zaman geçer, d basamak varsa d (n + 9)= (dn )
43
7-42 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Hatırlatma: Karakter dizisi arama brute force desen: metin içinde m karakterli dizi aranıyor metin: (uzun) n karakterli bir dizi Brute force algoritması Adım 1Deseni metnin başına yerleştir Adım 2 Soldan sağa desenin her karakterini metnin uygun karakteri ile karşılaştır, desen bulunduysa çık Adım 3 Desen bulunmadığı sürece metin bitene kadardeseni bir sağa kaydır ve adım 2 ye geç
44
7-43 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Ön işlem yapmakla karakter dizisi arama Bazı karatakter dizisi arama algoritmaları desen ve metin kullanılarak ön işlem yapmak ve bu işlemlerin sonucunu hafızada tutmak üzere tasarlanmıştır b Knuth-Morris-Pratt (KMP) algoritması deseni soldan sağa tarayarak arama için yararlı bir bilgi toplar ve hafızada tutar b Boyer -Moore algoritması deseni saüdan sola tarar ve bilgiti 2 tabloda tutar b Horspool algoritması Boyer-Moore algoritmasının basitleştirilmiş versiyonudur sadece 1 tablo kullanır
45
7-44 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Horspool Algoritması Desen üzerinde ön işlem yaparak bir kaydırma (shift) tablosu yaratılır, bu tablodaki sayılar karakterler arasında eşleşme olmadığı durumda desenin ne kadar kaydırılması gerektiğini göstermektedirDesen üzerinde ön işlem yaparak bir kaydırma (shift) tablosu yaratılır, bu tablodaki sayılar karakterler arasında eşleşme olmadığı durumda desenin ne kadar kaydırılması gerektiğini göstermektedir Kaydırma tablosu için metindeki her c karakteri desenin son karakteri ile karşılaştırılırKaydırma tablosu için metindeki her c karakteri desenin son karakteri ile karşılaştırılır
46
7-45 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Ne kadar kaydırmak gerekir? Metinde desenle eşleşebilecek ilk (desen uzunluğuna göre en sağdaki) karakter için olası durumlar: b Karakter desende yok.....c...................... ( c desende yok).....c...................... ( c desende yok) BAOBAB BAOBAB b Karakter desende var (ama eşleşme yok).....O...................... ( O desende bir kere var) BAOBAB.....O...................... ( O desende bir kere var) BAOBAB.....A...................... ( A desende 2 kez var).....A...................... ( A desende 2 kez var) BAOBAB BAOBAB b Eşleşme gerçekleşmiş olabilir.....B...........................B...................... BAOBAB BAOBAB
47
7-46 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Kaydırma tablosu b Metindeki c karakteri desende varsa bu karakterin, desenin sağdan ilk m-1 karakteri arasında kaçıncı olduğu bulunur Aksi durumda kaydırma sayısı bu karakter için m dir. Aksi durumda kaydırma sayısı bu karakter için m dir. Desen arama işlemi yapılmadan önce metindeki tüm karakterler için kaydırma tablosu Desen arama işlemi yapılmadan önce metindeki tüm karakterler için kaydırma tablosu Örneğin, BAOBAB deseni için kaydırma tablosu A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 6 6 6 6 6 6 6 6 6 6 6 6 3 6 6 6 6 6 6 6 6 6 6 6
48
7-47 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Örnek BARD LOVED BANANAS BAOBAB BAOBAB BAOBAB BAOBAB (başarısız arama) BAOBAB (başarısız arama) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 6 6 6 6 6 6 6 6 6 6 6 6 3 6 6 6 6 6 6 6 6 6 6 6 _ 6
49
7-48 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7
50
7-49 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7
51
7-50 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Hesaba dayalı adresleme(Hashing) b Sözlük (dictionary ) kodlama için çok verimli bir yöntemdir. Sözlük, yani aşağıdaki işlemleri bulunan küme: – bul (find) – ekle (insert) – sil (delete) b Gösterimi değiştirme ve alan-zaman takası mantığına dayanmakta
52
7-51 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Hash tablolar and hash fonksiyonlar Bu yöntemin ana fikri n boyutlu dosya anahtarlarını m boyutlu tablo ile eşleştrimek (bu tabloya hash tablo denir) Eşleştirme fonksiyonuna ise hash fonksiyon denir. h: K hash tablodaki konum (hücre) h: K hash tablodaki konum (hücre) Örnek: öğrenciler, anahtar K= öğrenci numaraları. Hash fonksiyonu: h(K) = K mod m, burada m bir tam sayıdır (genelde asal) Eğer m = 1000 ve K= 314159265 ise h(K)=? Genel olarak, hash fonksiyonu : Kolat hesaplanabilir olmalıdırKolat hesaplanabilir olmalıdır Anahtarları hash tabloya düzgün bir biçimde dağıtmalıdırAnahtarları hash tabloya düzgün bir biçimde dağıtmalıdır
53
7-52 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Çarpışmalar(Collisions) Eğer h(K 1 ) = h(K 2 ) ise çarpışma vardır Eğer h(K 1 ) = h(K 2 ) ise çarpışma vardır b İyi hash fonksiyonlarında az çarpışma olur ama bazı çarpışmaları beklemek gerekir (birthday paradox) b Çarpışmaları ele almanın 2 önemli yolu vardır: Açık karma – her hücre bu hücreye hash edilmiş tüm anahtarların bağlantılı listesinin(linked list) başlığıdırAçık karma – her hücre bu hücreye hash edilmiş tüm anahtarların bağlantılı listesinin(linked list) başlığıdır Kapalı karmaKapalı karma –Her hücreye bir anahtar var –Çarpışma durumunda, aşağıdaki yöntemlerden biri ile başka hücre bulunur –Doğrusal deneme: bir sonraki boş yer bulunur – çift karma: artışı hesaplamak için 2. hash fonksiyonu kullanılır
54
7-53 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Açık karma Anahtarlar bağlantılı listede hash tablonun dışında tutulur Hash tablonun elemanları bağlantılı listenin başlıklarıdır. Örnek: A, FOOL, AND, HIS, MONEY, ARE, SOON, PARTED h(K) = K”daki harflerin ‘’ alfabedeki sıra toplamları MOD 13 KeyAFOOLANDHISMONEYARESOONPARTED h(K)h(K)h(K)h(K)196107111112 AFOOLANDHISMONEYAREPARTED SOON 1211109876543210
55
7-54 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Open hashing (cont.) If hash function distributes keys uniformly, average length of linked list will be α = n/m. This ratio is called load factor. b Average number of probes in successful, S, and unsuccessful searches, U: S 1+ α /2, U = α S 1+ α /2, U = α Load α is typically kept small (ideally, about 1) b Open hashing still works if n > m
56
7-55 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Kapalı karma Anahtarlar hash tablonun içinde tutulur. A AFOOL AANDFOOL AANDFOOLHIS AANDMONEYFOOLHIS AANDMONEYFOOLHISARE AANDMONEYFOOLHISARESOON PARTEDAANDMONEYFOOLHISARESOON KeyAFOOLANDHISMONEYARESOONPARTED h(K)h(K)h(K)h(K)196107111112 0123456789101112
57
7-56 Copyright © 2007 Pearson Addison-Wesley. All rights reserved. A. Levitin “ Introduction to the Design & Analysis of Algorithms, ” 2 nd ed., Ch. 7 Closed hashing (cont.) b Does not work if n > m b Avoids pointers b Deletions are not straightforward Number of probes to find/insert/delete a key depends on load factor α = n/m (hash table density) and collision resolution strategy. For linear probing: S = (½) (1+ 1/(1- α )) and U = (½) (1+ 1/(1- α )²) As the table gets filled ( α approaches 1), number of probes in linear probing increases dramatically:
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.