Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Chapter 7 Space and Time Tradeoffs Copyright © 2007 Pearson Addison-Wesley. All rights reserved.

Benzer bir sunumlar


... konulu sunumlar: "Chapter 7 Space and Time Tradeoffs Copyright © 2007 Pearson Addison-Wesley. All rights reserved."— Sunum transkripti:

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: : : : 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: : : : 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: : : : İç 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: : : : 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: : : : 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: : : :

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]

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: B:B: 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: B:B: C:C: 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: B:B: C:C: 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: B:B: C:C: 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: B:B: C:C: 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: B:B: C:C: 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: B:B: C:C: 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: B:B: C:C: 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: B:B: C:C: 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: B:B: C:C: 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: B:B: C:C: 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: B:B: C:C: 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: B:B: C:C: 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: B:B: C:C: 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: B:B: C:C: 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: 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

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

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  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  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

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 _ 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= 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) AFOOLANDHISMONEYAREPARTED SOON

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)

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:


"Chapter 7 Space and Time Tradeoffs Copyright © 2007 Pearson Addison-Wesley. All rights reserved." indir ppt

Benzer bir sunumlar


Google Reklamları