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

Slides:



Advertisements
Benzer bir sunumlar
8. SINIF 3. ÜNİTE BİLGİ YARIŞMASI
Advertisements

Ders İçeriği Ağaç Veri Modeli Tanım ve Gerçekleştirim İkili Ağaç
MIT503 Veri Yapıları ve algoritmalar
IT503 Veri Yapıları ve algoritmalar
ALGORİTMA VE AKIŞ ŞEMALARI.
ALİ YALKIN İLKÖĞRETİM OKULU 2/A SINIFI ÇALIŞMA SAYFASI
MIT503 Veri Yapıları ve algoritmalar Algoritma Oluşturma – Açgözlü algoritmalar ve buluşsallar Y. Doç. Yuriy Mishchenko.
ALGORİTMA VE AKIŞ ŞEMALARI.
NOKTA, DOĞRU, DOĞRU PARÇASI, IŞIN, DÜZLEMDEKİ DOĞRULAR
Saydığımızda 15 tane sayı olduğunu görürüz.
MIT504 İnternet ve Web Programlama: Javascript programlama devam Yrd. Doç. Dr. Yuriy Mishchenko.
Veri ve Veri Yapıları Genel olarak bilgisayarlar.
Ders İçeriği Bağlantılı Liste İki Yönlü Bağlantılı Liste
BPR152 ALGORİTMA VE PROGRAMLAMA - II
YAPAY ZEKA ÖDEV - 1 Kenan KILIÇASLAN Trakya Üniversitesi Fen Bilimleri Enstitüsü Makina Mühendisliği Doktora Programı.
AVL-Ağaçları (Trees).
B+-Ağaçları.
Silme Anahtar hedefi silmek için, x yaprağında buluruz ve sonra sileriz. Dikkat edilmesi gereken iki durum vardır. (1) Hedef bazı iç düğümlerde bir anahtar.
İkili Ağaçlar İkili Arama Ağaçları
Algoritmalar DERS 7 Dengeli Arama Ağaçları Kırmızı-siyah ağaçlar
Algoritmalar En kısa yollar I En kısa yolların özellikleri
Algoritmalar DERS 2 Asimptotik Notasyon O-, Ω-, ve Θ-notasyonları
CLUSTERING USING REPRESENTATIVES Hazırlayan: Arzu ÇOLAK
MIT503 Veri Yapıları ve algoritmalar Algoritmalara giriş
Köylü ulusun efendisidir.
İçerik Ön Tanımlar En Kısa Yol Problemi Yol, Cevrim(çember)
MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri
Tam İkili Ağaçlar 9. Ünite ağaçlardan bahseder.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Yapay Zeka DR.KORHAN KAYIŞLI.
MIT503 Veri Yapıları ve algoritmalar Algoritmalara giriş
BPR151 ALGORİTMA VE PROGRAMLAMA - I
İkili Arama Ağaçları (Binary Search Trees) BST
IT504 ~~DOM~~ Belge Nesne Modeli I
Algoritmalar DERS 3 Böl ve Fethet(Divide and Conquer) İkili arama
MIT505 İnternet ve Web Programlama: Dinamik web sayfaları, javascript
ARALARINDA ASAL SAYILAR
BPR152 ALGORİTMA VE PROGRAMLAMA - II
ZAMBAK 1 SORU BANKASI UĞUR CESUR 1 ZAMBAK 1 SORU BANKASI ÖZEL SORULARI Hazırlayan: UĞUR CESUR.
Proje ve girişim zamanlarının hesaplanması
Algoritmalar DERS 4 Çabuk sıralama Böl ve fethet Bölüntüler
Çizge Teorisi, Dağıtık Algoritmalar ve Telsiz Duyarga Ağları
YAPAY ZEKA ve UZMAN SİSTEMLER
İçerik: Graflar Tanım Gösterim Dolaşma Algoritmaları
MIT503 Veri Yapıları ve algoritmalar Sıralama algoritmaları
Operatörler ve Denetim Yapıları
Tam sayılarda bölme ve çarpma işlemi
BPR151 ALGORİTMA VE PROGRAMLAMA - I
2 ve 1’in toplamı 3 eder..
HABTEKUS' HABTEKUS'08 3.
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
Bilgi Sistemi Organizasyonlar içerisindeki kontrol ve karar verme mekanizmalarında kullanılacak bilginin toplanması, işlenmesi, saklanması ve dağıtılmasını.
Yard. Doç. Dr. Mustafa Akkol
BİL551 – YAPAY ZEKA BİLGİSİZ ARAMA YÖNTEMLERİ
Rekabet ortamında arama Adversarial Search
Arama ile sorun çözme Ders 3.
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
BİYOİNFORMATİK NEDİR? BİYOİNFORMATİKTE KULLANILAN SINIFLAMA YÖNTEMLERİ
İSMİN HALLERİ.
Toplama Yapalım Hikmet Sırma 1-A sınıfı.
CÜMLENİN ÖGELERİ YÜKLEM ÖZNE
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.
Dinamik programlama ve Açgözlü algoritma
O R T L G İ M A A Ve Akış şemaları.
Algoritmalar II Ders 8 Açgözlü Algoritmalar.
Algoritmalar II Ders 1: Alan zaman takası yöntemi.
İleri Algoritma Analizi
Chapter 6 Dönüştür ve Yönet (Transform-and-Conquer)
NİŞANTAŞI ÜNİVERSİTESİ
Kelime (Text) İşleme Algoritmaları
Sunum transkripti:

MIT503 Veri Yapıları ve algoritmalar Veri ağaçları Y. Doç. Dr. Yuriy Mishchenko

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 Dengesiz ve dengeli veri ağaçları

Neden veri ağaçları Veri ağaçları, sıralanmış veri depolamalarıdır Sıralanmış dizi [1,3,7,8,10,15,16,17,21,22,23,25,...] Sıralanmış dizide arama İkiye bölme algoritması: ortadaki değere önce bakalım, o değere göre arama ya sol ya da sağ tarafta devam eder, v.b.

Neden veri ağaçları Sıralanmamış dizide arama genellikle, dizinin boyutu n ise, O(n) zaman gerektirir Sıralanmış dizide arama O(log2 n) zaman gerektirir (ikiye bölme) Bu çok büyük avantaj, n=106 kayıtlı veritabanında böyle arama yapmak için 106 karşı log2 106=20 vakit gereksinimi var

Neden veri ağaçları Büyük veriler için depolama strateji – büyük veriler sıralanmış şekilde kaydedilmesi lazım Sıralanmamış dizide yeni veriler veritabanının sonuna tek işlemle eklenebilir Sıralanmış dizide yeni değeri dizinin sıralanmış halini tuturken eklenmesi gerekiyor, yani daha önce uygun bir yer yeri bulunması lazım

Neden veri ağaçları Örneğin: Sıralanmış dizi = “1,3,4,7,8,9,11,22,23,25,27,33” “10” değeri eklemek için, dizide uygun yeri bulmak zorundayız – burada, “9” ten sonra Hata bu ikiye bölme algoritması kullanarak log n zamanında yapılabilir 2 5 7 11 12 13 17 22 23 30 hedef aramasının sırası

Neden veri ağaçları Sıralanmış dizinin oluşturulması O(n*log n) zaman gerekir, ama bundan sonra arama O(log n) zamanda yapılabilir, sıralanmamış dizi ise O(n)’den daha az Bu şekilde, büyük verilerin sıralanmış şekilde oluşturulup tutulması faydalıdır

Neden veri ağaçları Sıralanmış dizi oluşturmanın daha fazla vakit ihtiyacına rağmen, büyük veri depolama için sıralanmış veriler daha çok avantajlıdır. Veri agaçları, bu problemi çözen bilgisayar biliminin veri yapıları dır

Ağaçlar Ağaçlar graflardır Graf (çizilge), noktalar (düğüm) ve oklar (bağlantı) kullanarak ilişkiler gösteren bir kavramsal araçtır

Bu bir graf: Okları takip eden bir bağlantı zincirine “patika” denir (path) düğüm/node bağlantı/edge patika Aynı düğümda başlayan ve duran patikalara, “döngü” denir (loop) döngü

Graflar ve ağaçlar Graflar, düğümler ve bağlantılar içeren çizilgelerdir Düğümler baze nesneleri temsil eder ve bağlantılar arasındaki ilişkilere temsil eder Bağlantıların zincirlerine “patika” denir ve aynı noktada başlayan ve biten patikalara “döngü” denir Ağaçlar döngü içermeyen graflardır

Graflar: Döngü var döngü

Ağaçlar: Döngüler yok

Birkaç ağaç örneği: Önceki sayfadaki ağaca eşit – ben sadece düğümleri taşıdım

Birkaç ağaç örneği:

Birkaç ağaç örneği: Başka bir ağaç

Ağaçların terimleri: Ağaç kökü Ana düğüm Ağaç yaprakları Çocuk düğüm Ağaç seviyesi Ağacın yüksekliği

Ağaçların terimleri: Ağaç kökü, ağacın en yüksek düğümüdür Bütün bağlantılar için, bağlantının çıktığı düğüme “ana” düğüm denir Ana düğüm Çocuk düğüm Bütün bağlantılar için, bağlantının bittiği düğüme “çocuk” dügüm denir

Ağaçların terimleri: Ağaç kökü Ağaçlarda, tüm düğümler her zaman tek ana düğüme bağlıdır Ana düğüm Çocuk düğüm Bir düğümün bir veya birkaç çocuk olabilir Ağaç kökünün sadece çocuklar olabilir

Ağaçların terimleri: Ağaçta, kökünden başka düğümlere “yapraklar” denir Kök Yapraklar Kökten aynı uzaklıkta olan yapraklara “ağaç seviyesi” denir Seviye Maksimum seviyesine “ağacın yüksekliği” denir (o bir sayıdır) Burada yüksekliği 4, çünkü 4 seviyesi var Yüksekliği = 4

Ağaçların terimleri: Döngü içermeyen graflara ağaç denir Ağacın en yüksek düğüme “agaç kökü” denir Bağlantıların çıktığı düğümlerine “ana düğüm” denir Bağlantıların bittiği düğümlerine “çocuk düğüm” denir Ağaçta, kökten başka düğümlere “yapraklar” denir Kökten aynı uzaklıkta olan yapraklar için “seviye” denir Maksimum uzaklıkta olan seviyeye “agacın yüksekliği” denir Ağaçlarda, tüm düğümlerde tek ana düğme var Ağaç kökünün sadece çocuklar var

Graflar ve ağaçlar Ağaçlar bağlantılı listeler kullanarak uygulanır: düğüm + çocuklara işaretçiler

Graflar ve ağaçlar Ağaç düğümlerin hepsinin maksimum iki çocuğu varsa, o agaçlara “ikili ağaç” denir Üç çocuk ikili ağaç

Graflar ve ağaçlar İkili ağaçların programlama/algoritmalarda önemli uygulamalar var, onlara arama ağaçları denir, verilerin sıralanmış depoları olarak kullanılır

Graflar ve ağaçlar Arama ağacın ana özelliği: Her düğüm için solda değerlerin tümü daha küçük ve sağda daha büyük tür 9 5 15 3 18 7 12 1 4 11 14

Graflar ve ağaçlar Arama ağacın ana özelliği: Her düğüm için solda değerlerin tümü daha küçük ve sağda daha büyük tür 9 daha küçük daha büyük 5 15 3 18 7 12 1 4 11 14

Graflar ve ağaçlar Burada, hepsi 9’dan daha büyük olmalı Burada, hepsi 9’dan daha küçük olmalı 5 15 11 burada olmaz ! 3 7 18 12 1 4 11 14

Graflar ve ağaçlar Aynı şekilde tüm yapraklar için 9 hepsi 5’ten daha küçük 5 hepsi 5’ten daha büyük 15 Aynı şekilde tüm yapraklar için 3 7 18 12 1 4 11 14

Graflar ve ağaçlar Arama ağaclarında değerler sıralanmıştır 9 5 15 3 18 7 12 1 4 11 14

Veri ağaçların işlemleri Arama ağaç veri yapısının işlemleri: Değer ekle Değer kaldır Değer arama Min değeri bul Max değeri bul Değerin babası bul Değerin çocukları bul 9 5 15 3 18 7 12 1 4 11 14

Veri ağaçların işlemleri Min ve max değer işlemleri Min için her zaman sola, max için sağa gitmek gerekir 9 min max 5 15 3 7 12 18 1 4 11 14

Veri ağaçların işlemleri Min ve max işlemleri min p:=ağaç.kök p.sol_çocuk varken p:=p.sol_çocuk döngü sonu yaz p.değeri başlangıç p.sol_çocuk var? evet p:=p.sol_çocuk max p:=ağaç.kök p.sağ_çocuk varken p:=p.sağ_çocuk döngü sonu yaz p.değeri hair yaz p.değeri durak

Veri ağaçların işlemleri Değer arama işlemi Kökten başlayınca değerleri karşılaştırın; hedef değerinden büyükse, sağa, küçükse, sola gidin 14 9 5 15 14 3 7 12 18 14 1 4 11 14

Veri ağaçların işlemleri başlangıç Arama işlemi Arama p:=ağaç.kök döngü başlangıcı p.düğüm=hedef ise döngüden çık p.düğüm>hedef ise p:=p.sol_çocuk p.düğüm<hedef ise p:=p.sağ_çocuk p varken yaz p eşit ise p.değeri karşı hedef p:=p.sol_çocuk daha büyük ise daha küçük ise p:=p.sağ_çocuk yaz p durak

Veri ağaçların işlemleri Değer ekle işlemi Kökten aramada gibi ilerleyin Son düğüme sağda yeni düğümü ekleyin Yeni ağaç, arama ağacının koşulu karşılıyor (kolay) 8 9 5 15 8 3 7 12 18 1 4 8 11 14 Yeni anahtar

Veri ağaçların işlemleri Kısaltma Min – her zaman sola gidin Max – her zaman sağa gidin Arama – kökte başlayınca düğümleri karşılaştırın; hedef düğümden büyükse, sağa, küçükse, sola gidin Ekleme –aramada gibi kökten ilerleyin; sonunda son düğüme sağda yeni düğüm ekleyin

Veri ağaçların işlemleri Kaldırma için, üç durum olabilir Kaldırılan düğümde çocuklar yoksa – düğümü kaldırın 9 5 15 3 7 12 Düğümü hemen kaldırabiliriz 1 4 11 14

Veri ağaçların işlemleri Kaldırmada üç durum var Kaldırılan düğümde çocuklar yoksa – düğümü silin 9 5 15 3 7 12 Düğümü hemen silebiliriz 1 4 11 14

Veri ağaçların işlemleri Kaldırılan düğümde tek çocuk varsa – düğümü silebiliriz; çocuğunu ana düğümüne bağlayabiliriz Düğümü kaldırabiliriz; çocuklarını ana düğümüne bağlayabiliriz 9 5 15 3 7 12 1 4 11 14

Veri ağaçların işlemleri Kaldırılan düğümde iki çocuk varsa – kaldırılan düğümün solda bir çocuğunu bulmalıyız ki, o çocuğun tek sol çocuğu var ve kendisi en sağdaki koşededir 9 5 15 Kaldırılan düğüm 3 7 12 1 4 11 14

Veri ağaçların işlemleri Kaldırılan düğümde iki çocuk varsa – kaldırılan düğümün solda bir çocuğunu bulmalıyız ki, o çocuğun tek sol çocuğu var ve kendisi en sağdaki koşededir 9 5 15 Kaldırılan düğüm 3 7 12 En sağdaki köşe 1 4 11 14

Veri ağaçların işlemleri Böyle çocuğu kaldırılan düğümün yerine taşınmalı 9 4 15 Kaldırılan düğüm 3 7 12 1 4 11 14

Veri ağaçların işlemleri Yeni ağaç, arama ağacının koşulunu karşılıyor 9 4 15 Kaldırılan düğüm 3 7 12 Alternatif olasılığı 1 4 11 14

Veri ağaçların işlemleri Alternatif olarak, kaldırılan düğümün sağda bir çocuğunu bulmalıyız ki, o çocuğun tek sağ çocuk var ve kendisi en soldaki köşededir O düğüm, kaldırılan düğümün yerine taşınmalı 9 7 15 Kaldırılan düğüm 3 7 12 En soldaki köşe 1 4 11 14

Veri ağaçların işlemleri Önceki işlemlerin, ağacın yüksekliği H ise, en çok O(H) zaman gerekir

Veri ağaçların işlemleri Önceki işlemlerin, ağacın yüksekliği H ise, en çok O(H) zaman gerekir 4 9 4 5 15 H 3 4 7 12 18 1 4 11 14

Veri ağaçların işlemleri Ağacın yüksekliği H ağaçtaki düğümlerin sayısına log n olarak bağlıdır, yani çok verimli Gerçek hayatta H ağacın oluşturulduğu sürecine bağlı Ağaç sıralanmış sayılar kullanarak oluşturulduysa, H düğüm sayısına eşit olabilir !!!

Veri ağaçların işlemleri Sıralanmış giriş –1,2,3,5,7,9,... 1 1 1 1 2 2 2 3 3 5 5 Ekleme işlem algoritmasına göre, nesnelerin hepsi sağda eklenmiştir ! 7 9 Çok kötü!!!

Veri ağaçların işlemleri Bu tip ağaçlara “dengesiz” denir H büyükse, bu çok kötü, bütün işlemler çok uzun olur, performansa zarardır Bu nedenle, arama ağaçları algoritma tarafından sürekli dengelenmeli Arama ağaç dengeli ise, sağ ve sol alt ağaçları yaklaşık olarak eşit olmalı, ve H log n ‘e yakın olmalıdır

Veri ağaçların işlemleri Eşit değil Eşit Sol 5 Sol 9 Sağ Sağ 1 5 15 15 3 12 18 3 7 12 18 11 14 1 4 11 14

Dengeli veri ağaçları Arama ağacın denge durumunu korunması için ekleme ve kaldırma işlemleri değiştirilmeli Bu işlemleri ağacın dengeli olmasını tutuyorsa, böyle arama ağacına “kendi kendini dengeleyen ağaç” denir (self-balancing tree) Kendi kendini dengeleyen ağaçların türleri: AA ağaçları, AVL ağaçları, Al-siyah ağaçları, “Günah keçisi” ağaçlaro, “Splay” ağaçları, VB

Dengeli veri ağaçları Ekleme ve kaldırma işlemleri ağacın dengeli olmasını tutuyorsa, böyle ağaçlara “kendi kendini dengeleyen ağaç” denir Kendi kendini dengeleyen ağaçlar, sürekli dengesini kontrol eder ve gerekirse “pivot” işlemi yaparlar Pivot işlemi, sağdaki ve soldaki alt ağaçları değiştirip ağacın dengesini sağlar

Dengeli veri ağaçları AVL’daki pivot işlemi üç adımdan oluşur... Sağda veya solda yapılabilir, ağaçta nerede dengesizlik var yani Daha büyük alt dalında ilk önce bir parça yukarıya taşınır, sonra diğer tarafa çekilir Sonuçta daha dengeli ağaç sağlanır

Dengeli veri ağaçları Farklı kendi kendine dengeleyen ağaçlar farklı pivot stratejileri kullanır Buradaki üç adımlı pivot, AVL pivottur Genel pivot işlemin amacı – ağacın dengesini sağlamaktır Dengeli ağaçta, yükseklik her zaman log2 n civarında kalır ve bu nedenle en optimum veri işletmeye garanti var

Özet Arama ağaçları, büyük veriler depolama yapısıdır Arama ağaçları, verilerin sıralanmış depolamasını sağlar Sıralanmış depolama O(log n) karşı O(n) veri erişimi sağlar

Özet Ağaç, bir döngüsüz grafdır Ağaçta, kök ve yapraklar var, bütün yaprakların tek ana düğümü var ve birkaç çocuğu olabilir İkili ağaçlarda tüm düğümlerinin iki coğuğu var ve soldaki alt ağaçları her zaman daha küçük ve sağdaki daha büyüktür Arama, max, min, ekleme, kaldırma işlemler var, verilerle işletme O(H) vakit gerekir

Özet O(H) vakit maliyeti önemli avantajdır Genel durumda, H=O(log n), ama H=O(n) de kolayca alabiliriz Kendi kendini dengeleyen ağaçlar, sürekli denge kontrol ederek, gerekirse sağdaki ve soldaki alt ağaçlarını değiştirip dengeyi sağlar (“pivot”) Dengeli ağaçlar sürekli en optimum veri depolanmayı sağlar