1 / 62

MIT503 Veri Yapıları ve algoritmalar V eri ağaçları

MIT503 Veri Yapıları ve algoritmalar V eri ağaçları. Y. Doç. Yuriy Mishchenko. İleri veri yapıları ve veri ağaçları. Ders planı Veri ağaçlarının nedeni – neden veri ağaçları ? İkili ağaçları ve arama veri ağaçları Veri agaçlarının temel operasyonları : arama, min ve max bulma

tamas
Télécharger la présentation

MIT503 Veri Yapıları ve algoritmalar V eri ağaçları

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MIT503 Veri Yapıları ve algoritmalarVeri ağaçları Y. Doç. Yuriy Mishchenko

  2. İleri veri yapıları ve veri ağaçları Ders planı • Veri ağaçlarının nedeni – neden veri ağaçları? • İkili ağaçları ve arama veri ağaçları • Veri agaçlarının temel operasyonları: arama, min ve maxbulma • Dengesiz ve dengeli veri ağaçları

  3. Neden veri ağaçları • Veri ağaçlarını tartışmadan önce, son dersten bir örneği hatırlatayım: sıralanmış dizide arama • Sıralanmış dizi[1-3-7-8-10-15-16-17-21-22-23-25-...] • İkiye bölme algoritması: ortadaki nesneyi incelemeleyince o nesneye göre ya da sol ya da sağ tarafta aramamızı devam ederiz (sol veya sağ tarafın ortasındaki nesneyi inceliyoruz) v.b.

  4. Neden veri ağaçları • Sıralanmamış dizide, tüm nesnelerine bakmak gerekiyor – (n dizinin boyutu ise) O(n) zaman lazım • İkiye bölme algoritması, O(log2n) kadar adım gerekiyor --- n=106,106 karşı log2 106=20 vakit tüketimi var • Büyük veri dizileri için, birinci algoritma kullanılamaz artık!

  5. Neden veri ağaçları • Büyük veri için depolama stratejisi böyle olabilir • Depolanacak nesneler ile bir sıralanmış diziyi doğru oluşturmak istiyoruz • Nasıl olabilir? • Naif strateji kullanarak, veri dizisine yeni nesneler eklemek için tek operasyon gerekiyor – her hangi bir dizideki yere eklenebilirler • Bu strateji göre sıralanmış diziye yeni nesne eklemek için ve dizinin sıralanmış olmasını tutmak için yeni nesnenin doğru yer ilk önce bulmak lazım – biraz daha çok zor, ama yapılabilir mi ?

  6. Neden veri ağaçları • Nesneler sıralanmış diziye ekle ve sıralanmış diziden ayıkla • Yeni nesne için, ilk önce uygun bir yer dizide bulmak gerekiyor • O yere nesneyi ekleyebiliriz, dizinin sıralanmış olmasını tutarken • Ayıklama için, ikiye bölme algorıtmasını kullanabiliriz • Örneğin: • Sıralanmış dizi = “1,3,4,7,8,9,11,22,23,25,27,33” • “10” nesneyi eklemek için, ilk önce dizide uygun bir pozisyon bulmak zorundayız – burada, “9” nesneden tam sonrası uygundur • Bu operasyon, arama operasyonuna eşittir, çünkü nesneyi (“10”) arama ile aynı şekilde yapıyoruz – ikiye bölme araması nesneye eşit yada en yakın nesneyi bulur İkiye bölme araması... 2 5 7 11 12 13 17 22 23 30 hedef aramasının sırası

  7. Neden veri ağaçları • Nesneleri sıralanmış diziye ekle ve sıralanmış diziden ayıkla • Dizi = “1,3,4,7,8,9,11,22,23,25,27,33” • “10” nesneyi eklemek için, ilk önce dizisinde uygun bir pozisyon bulumak zorundayız– burada, “9” nesneden tam sonrası uygundur • Bu (ekleme) operasyon, arama operasyonuna eşittir, çünkü “10” nesneyi ikiye bölme araması ile aynı şekilde yapıyoruz • Bu nedenle, ekleme ortalama O(log n) vakit gerekiyor • Ayıklama, aynı şekilde ikiye bölme algoritmasını kullanarak O(log n) vakitle yapılabilir • Hem sıralanmış diziyi oluşturma hem diziden ayıklama O(log n) vakit gerekiyor, naif yaklaşımın O(n)’den daha daha çok az

  8. Neden veri ağaçları • Sonuç: sıralanmış dizi veri yapısının oluşturmanındaha fazla vakit ihtiyacına rağmen, büyük veri depolama için sıralanmış veri yapıları daha çok avantajlıdır. –106karşı 20– • Veri agaçları, bilgisayar bilimindeki sıralanmış veri depolama sağlayan veri yapısıdır

  9. Ağaçlar nedir? • Ağaçlar, graflarınbir özel durumudur • Graflar, nesneler (düğümler) ve bağlantılar (oklar) içeren bir çizim/şemadir

  10. Graflar ve ağaçlar düğüm • Bu bir genel graf bağlantı döngü

  11. Graflar ve ağaçlar • Ağaçlar, döngüler içermeyen graflardır

  12. Graflar ve ağaçlar • Bu bir ağaç Döngüler yok

  13. Graflar ve ağaçlar • Ağaç örnekleri Bu ağaç (graf) önceki sayfadaki ağaca eşit –sadece düğümleri taşıdık

  14. Graflar ve ağaçlar • Ağaç örnekleri

  15. Graflar ve ağaçlar • Ağaç örnekleri Başka bir ağaç

  16. Graflar ve ağaçlar Ağacın en yüksek düğümüne ağaç kökü denir • Ağaçların terimleri Ağaç kökü

  17. Graflar ve ağaçlar • Ağaçların terimleri Ağaçdaki bütün bağlantılar için, bağlantının çıktığı düğüme “ana” düğüm denir ve bağlantının bittiği düğüme “çocuk” düğüm denir Ana düğüm Çocuk düğüm

  18. Graflar ve ağaçlar • Ağaçların terimleri Ağaçlarda, tüm düğümlerin her zaman tek ana düğümü olabilir Ana düğüm Çocuk düğüm Bir veya birkaç çocuk olabilir Kökte sadece çocuklar var

  19. Graflar ve ağaçlar Kökünden başka düğümlere “yapraklar” denir • Ağaçların terimleri Yapraklar Kökten aynı uzaklıkta olan yapraklara “seviye” denir Seviyesi Ağacın seviye sayısına “ağacın yüksekliği” denir Ağacın yüksekliği = 4

  20. Graflar ve ağaçlar • Ağaçların terimleri Ağaç kökü Ağaç yaprakları Ana düğüm Çocuk düğüm Ağaç seviyesi Ağacın yüksekliği

  21. Ağaçların uygulanması • Ağaçlar, bağlantılı listelerle uygulanır • Düğümlerin hepsinde bir nesne ve çocuklarına veya anasına (veya ikisine) işaretçiler vardır

  22. Ağaçların uygulanması • Ağaç • Düğümlerin listesi • Düğümün adı (anahtar) • Çocuklarına işaretçi • Anasına işaretçi • Herhangi ek veriler

  23. Graflar ve ağaçlar • Ağaç düğümlerin hepsinde maksimum iki çocuk varsa, o agaca “ikili ağaç” diyoruz Üç çocuk var – ikili ağaç değil bu

  24. Graflar ve ağaçlar • Ağaç düğümlerin hepsinde maksimum iki çocuk varsa, o agaca “ikili ağaç” diyoruz ikili ağaç

  25. Graflar ve ağaçlar • İkili ağaçların biri türüne bilgisayar biliminde arama ağacı de denir

  26. Graflar ve ağaçlar • Arama ağaçlarının en önemli özelliği: • (tüm düğümler numara içerir, o numaralara “anahtarlar” denir) • Her düğüm için, soldakianahtarların hepsi onun anahtarından daha küçük ve sağdaki anahtarlarınhepsi – daha büyük olması gerekiyor 9 5 15 3 18 7 12 1 4 11 14

  27. Graflar ve ağaçlar 9 daha büyük daha küçük 5 15 3 18 7 12 1 4 11 14

  28. Graflar ve ağaçlar 9 5 15 daha küçük daha büyük 3 18 7 12 1 4 11 14

  29. Graflar ve ağaçlar 9 5 15 3 18 7 12 daha küçük daha büyük 1 4 11 14

  30. Graflar ve ağaçlar • Teorem: ---arama ağacları, anahtarların sıralanmış depolanmasını sağlar --- • Etkin (log n) arama ve ayıklama mümkündür 9 5 15 3 7 12 18 1 4 11 14

  31. Veri ağaçların operasyonları • Arama ağaclarının sağlanan operasyonları: • Sayı arama • Minimum sayı bulma • Maksimum sayı bulma • Ana düğüm verme • Çocuk düğüm verme • Yeni sayı ekleme • Sayı silme 9 5 15 3 18 7 12 1 4 11 14

  32. Veri ağaçların operasyonları • Min ve max algoritması çok basit • Min: her zaman sola gitmek • Max: her zaman sağa gitmek 9 max min 5 15 3 7 12 18 1 4 11 14

  33. Veri ağaçların operasyonları • Min ve max algoritması söz kodu/akış şeması mın algoritmasıp:=kök düğümü p‘nin sol çocuğu varken p:=p’nin sol çocuğu döngünün sonu p’yi geri ver //bu mindir başlangıç p’nin sol çocuğu var? evet p:=p’nin sol çocuğu max algoritmasıp:=kök düğümü p’nin sağ çocuğu varken p:=p’nin sağ çocuğu döngünün sonu p’yi geri ver //bu maxdır hair ver p sonuç

  34. Veri ağaçların operasyonları • Arama algoritması • İkiye bölme gibi çalışıyor • Kökten başlayarak anahtarları karşılaştırın; • Hedef şimdiki düğüm anahtarından daha büyükse, sağa gidin; küçükse, sola gidin • V.B. 14 9 14 ? 5 15 14 ? 3 7 12 18 14 ? 1 4 11 14

  35. Veri ağaçların operasyonları başlangıç • Arama algoritması eşit ise daha büyük ise Aramap:=kök düğümü döngüp hedefe eşit isep’yi geri ver ve dur p hedeften daha büyük ise p:=p’nin sol çocuğup hedeften daha küçük ise p:=p’nin sağ çocuğu p’nin çocuğu varken bulunmadı p karşı hedef p:=p’nin sol çocuğu daha küçük ise p:=p’nin sağ cocuğu ver p sonuç

  36. Veri ağaçların operasyonları • Yeni nesne ekleme algoritması • Köküdan, aramada gibi ilerleyin • Yeni düğümü son düğümde sağa ekleyin 8 9 8 ? 5 15 8 ? 3 12 18 7 1 4 8 11 14 Yeni

  37. Veri ağaçların operasyonları • Yeni nesne ekleme algoritması • Köküdan, aramada gibi ilerleyin • Yeni düğümü son düğümde sağa ekleyin Yeni ağaç, arama ağacının koşulu karşılıyor (kolay) 9 8 ? 5 15 8 ? 3 12 18 7 1 4 8 11 14 Yeni

  38. Veri ağaçların operasyonları • Basit operasyonları (özet): • Min – her zaman sola gidin • Max – her zaman sağa gidin • Arama – kökü başlayan, anahtarlar karşılaştırın; hedef anahtardan daha büyüksa, sağa gidin, küçüksa, sola gidin • Ekleme – kökten aramadaki gibi ilerleyin; sonunda, yeni anahtarı son düğümde sağa ekleyin

  39. Veri ağaçların operasyonları • Silme – daha zor bir algoritma • Silme için, üç duruma bakmalıyız • Silenecek düğümde çocuk yoksa – düğümü düşünmeden silebiliriz 9 5 15 3 12 7 Bu düğümü hemen silebiliriz 1 4 11 14

  40. Veri ağaçların operasyonları • Silenecek düğümde tek çocuk varsa – düğümü silip çocuğunu ana düğümüne bağlayabiliriz Düğümü silip tek çocuğunu anasına bağlayabiliriz 9 15 5 3 12 7 1 4 11 14

  41. Veri ağaçların operasyonları • Silenecek düğümde birkaç çocuk varsa... • Düğümün solunda en sağdaki koşede düğümü bulmalıyz 9 5 15 Silenecek düğüm 3 7 12 1 4 11 14

  42. Veri ağaçların operasyonları • Silenecek düğümde birkaç çocuk varsa ... • Düğümün solunda en sağdaki koşede düğümü bulmalıyız 9 5 15 Silenecek düğüm 3 7 12 En sağdaki köşe 1 4 11 14

  43. Veri ağaçların operasyonları • Böyle çocuğu silenecek düğümün yerine taşımalıyız 9 5 15 Silenecek düğüm 3 7 12 1 4 11 14

  44. Veri ağaçların operasyonları • Böyle çocuğu silenecek düğümün yerine taşımalıyız Yeni ağaç, arama ağacının koşulunu karşılıyor 9 4 15 Silenecek düğüm 3 7 12 1 4 11 14

  45. Veri ağaçların operasyonları • Aynı şekilde, şunu solda yapabiliriz... Yeni ağaç, arama ağacının koşulunu karşılıyor 9 5 15 Silenecek düğüm 3 7 12 1 4 11 14 Sağda en soldaki koşe

  46. Veri ağaçların operasyonları • Aynı şekilde, şunu solda yapabiliriz... Yeni ağaç, arama ağacının koşulunu karşılıyor 9 7 15 Silenecek düğüm 3 7 12 1 4 11 14

  47. Veri ağaçların operasyonları • H – ağacın yüksekliğiyse, ağaçların operasyonları O(H) zaman gerekiyorlar 4 9 4 5 15 H 3 12 18 4 7 1 4 11 14

  48. Dengeli veri ağaçları • Genellikle H, log n yaklaşık oluyor ve ağaçlarla operasyonları O(log n) vakit gerekirler • Ama, aslında H ağaç oluşturma sürecine bağlıdır • Örneğin: • Genellikle, H log N’e yakında olabilir • Ama, girdi sıralanmış idi ise , H N’e yakında olacak! • Veri tabanlarına, girdi sıranlanmış olarak verilmemeli

  49. Dengeli veri ağaçları • Düzensiz girdi için H, log n yakında dır 4 9 4 5 15 H 3 12 18 4 7 1 4 11 14

  50. Dengeli veri ağaçları • Düzenli girdi için H=N da olabilir 1 1 1 1 2 2 2 3 3 5 5 7 Nesnelerin hepsi sağa eklendi ! 9

More Related