Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü Skip List(Atlamalı Liste) Veri Yapısı Seminer-30.03.2007/SkipList 1
Temel İhtiyaçlar Nelerdir? 1. Bilgisayarda verileri belirli yapıda tutmak. 2. Daha önce saklanan elemanlara hızlı şekilde erişmek. 3. Saklanan verilerden istenilenin istenildiği zaman silinmesi. 4. İstenilen zamanda yeni verilerin eklenmesi. 5. Mevcut verilerin değiştirilmesi. Seminer-30.03.2007/SkipList 2
Liste Veri Yapısı? Liste veri yapısı, temel ihtiyaçlara cevap vermek için geliştirilmiş bir yapıdır. Algoritma ve verilerden oluşur. Listenin elemanlarına düğüm adı verilir. Her eleman bir anahtar(key) ve bir değer(value) çiftinden oluşmaktadır. Seminer-30.03.2007/SkipList 3
Liste Düğümlerinin Gösterimi Anahtar Değer Anahtar : Bu düğümü diğer tüm düğümlerden ayıran temel veridir. Değer : Düğümde saklanılan veri ya da verilerdir. Liste bir ya da birden fazla düğümden oluşabilir. Her düğümün anahtarı diğerinden farklıdır. Seminer-30.03.2007/SkipList 4
Listenin Gösterimi Liste bir ya da birden fazla düğümden oluşabilir. Her düğümün anahtarı diğerinden farklıdır. Her düğüm kendinden sonraki düğümü gösteren bir bağa sahiptir. Bu tip listeye bağlı liste adı verilir. Listenin baş elemanı (header) anlamsız son eleman Seminer-30.03.2007/SkipList 5
Liste Veri Yapısından İstenilenler * Dinamik eleman ekleme * Elemanların sıralı olması * Aramanın hızlı yapılamabilmesi * Ekleme, Silme ve Arama işlemlerinin kolay yapılabilmesi *Bu işlerin gerçekleştirilme performansının iyi olması. Seminer-30.03.2007/SkipList 6
Liste Veri Yapısından İstenilenler Aşağıdaki bağlı listede elemanlar istenilen sayıda dinamik eklenebilir. Eklenen elemanlar sıralı olarak eklenebilir. Ekleme, Silme ve Arama işlemlerinin kodlanması kısmen kolaydır. ARAMA performansı kötüdür. performans = O(n) Seminer-30.03.2007/SkipList 7
En Temel Problem ARAMA Arama işlemi dinamik olarak genişleyebilen veri yapılarında son derece önemlidir. Örneğin bir veritabanındaki 1.000.000 kayıt içerisinden 1.000.000 uncu istenilirse, bağlı liste yapısında en kötü halde her eleman tek tek kontrol edilmelidir. Seminer-30.03.2007/SkipList 8
En Temel Problem ARAMA Bağlı liste veri yapısından başka Balanced Tree, Binary Tree, Red-Black Tree, AVL Tree gibi veri yapılarıda kullanılır. Bu veri yapılarının arama performansları oldukça iyidir fakat ekleme ve silme işlemleri oldukça zaman almaktadır. Seminer-30.03.2007/SkipList 9
Skip List? Listemiz sıralı olsun ve her 2 elemandan 2. eleman kendisinden 2 sonra gelen elemana fazladan bir bağ içerirse? n=toplam düğüm sayısı Arama işleminde en fazla [n/2]+1 eleman inceleyerek aradığımız elemana ulaşırız. Seminer-30.03.2007/SkipList 10
Skip List? Aynı şekilde her dördüncü eleman, kendinden sonraki dördüncü elemana bir bağ içeriyorsa n=toplam düğüm sayısı Arama işleminde en fazla [n/4]+1 eleman inceleyerek aradığımız elemana ulaşırız. Seminer-30.03.2007/SkipList 11
Skip List? Bu şekilde her 2 i. düğüm kendinden sonra gelen 2 i. düğüme bir bağ(işaretçi) tutarsa n=toplam düğüm sayısı Arama işleminde en fazla log2(n) eleman inceleyerek aradığımız elemana ulaşırız. Seminer-30.03.2007/SkipList 12
Skip List? Bu veri yapısı hızlı arama için kullanılabilir fakat ekleme ve silme işlemlerinde pratik olmayacaktır. Her eleman için 2^i kuralına uyma kontrolü yapılmalıdır. Seminer-30.03.2007/SkipList 13
Skip List? Bu yapıda bulunan ve kendinden sonraki k adet düğüme işaretçi tutan düğümlere k seviyeli(k level) düğüm denilir. Seminer-30.03.2007/SkipList 14
Skip List? Peki düğümlerin seviyeleri rastgele seçilirse? Seminer-30.03.2007/SkipList 15
Skip List? *Bir düğümdeki i. gösterici, kendinden sonraki i seviyeli düğümü ya da daha yüksek seviyeli düğümü göstersin. *Bir düğümün seviyesi, düğüm eklenirken rastgele belirlenir. *SkipList bağlı liste temellidir fakat ara elemanları atlamak için fazladan işaretçiler kullanır. Seminer-30.03.2007/SkipList 16
Skip List? * i. seviyede bulunan bir düğümün, sonraki düğümleri işaret eden i adet işaretçisi vardır. * MaxLevel değişkeni ile skiplist te olabilecek maksimum seviye sınırlandırılır. * SkipList'in seviyesi içerisindeki en büyük seviyeye sahip düğümün seviyesidir. * Listenin baş(header) elemanında 1..MaxLevel adet işaretçi bulunur. Seminer-30.03.2007/SkipList 17
Skip List'in Gerçekleştirimi ARAMA : Listenin en üst seviyesinden aramaya başlanılır. Aranan elemanın anahtarı geçilmeyecek şekilde ileriye doğru arama gerçekleştirilir. Eğer mevcut seviyede aramada sonuç alınmaz ise bir alt seviyeye geçilir. Seminer-30.03.2007/SkipList 18
Skip List?? =12 Seminer-30.03.2007/SkipList 19
Skip List'in Gerçekleştirimi EKLEME ve SİLME : Bu işlemler öncelikle bir arama işlemi, daha sonra da uygun olan yere ekleme ya da bulunan elemanın silinmesi işlemi içerir. Yapılan işlemden sonra aradaki bağlar(işaretçiler) güncellenir. update isimli bir vektörün her i. elemanı i. seviyenin en sağındaki elemana ya da eklenecek/silinecek elemanın sol tarafındaki daha yüksek seviyeli düğümlere işaretçi tutar. Ekleme işlemi listenin seviyesinden yüksek ise, listenin seviyesi güncellenir ve update vektörünün ilgili bölümleri güncellenir. Seminer-30.03.2007/SkipList 20
Skip List'in Gerçekleştirimi Seminer-30.03.2007/SkipList 21
Skip List'in Gerçekleştirimi Seminer-30.03.2007/SkipList 22
Skip List'in Gerçekleştirimi Seminer-30.03.2007/SkipList 23
Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü Skip List(Atlamalı Liste) Veri Yapısı Seminer-30.03.2007/SkipList 24