BIP116-H14-1 BTP104-H014-1



Benzer belgeler
VERİ YAPILARI VE PROGRAMLAMA

VERİ YAPILARI VE PROGRAMLAMA

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

Ağaç (Tree) Veri Modeli

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

ELEKTRİK MAKİNELERİ (MEP 112) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

MEKATRONİĞE GİRİŞ (EEP251)

DOSYA ORGANİZASYONU. Ağaç Yapıları ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

ELEKTRİK MAKİNELERİ (MEP 112) (ELP211) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

EIS526-H02-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

YZM 2116 Veri Yapıları

AĞAÇLAR. Doç. Dr. Aybars UĞUR

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

ELEKTRİK MAKİNELERİ (MEP 112) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

Veri Yapıları. Ağaçlar

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

İŞLETMELERDE BİLİŞM SİSTEMLERİ (EMBA523) Yazar: Prof.Dr. Orhan TORKUL S1

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

Ağaçlar (Trees) Ağaçlar (Trees)

AĞAÇLAR TREES. Doç. Dr. Aybars UĞUR

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları

ANADOLU ÜNİVERSİTESİ AÇIKÖĞRETİM FAKÜLTESİ İLKÖĞRETİM ÖĞRETMENLİĞİ LİSANS TAMAMLAMA PROGRAMI. Analiz. Cilt 2. Ünite 8-14

YÖNETİM BİLİŞİM SİSTEMLERİ

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#6: AZALT VE FETHET YÖNTEMİ

Yrd. Doç. Dr. Ümit ATİLA

Week 9: Trees 1. TREE KAVRAMI 3. İKİLİ AĞAÇ DİZİLİMİ 4. İKİLİ ARAMA AĞACI 2. İKİLİ AĞAÇ VE SUNUMU > =

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

T.C. ANADOLU ÜNİVERSİTESİ YAYINI NO: 3275 AÇIKÖĞRETİM FAKÜLTESİ YAYINI NO: 2138 HAVACILIK EMNİYETİ

YZM 2116 Veri Yapıları

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

YZM 2116 Veri Yapıları

EIS526 -H01-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

BMB204. Veri Yapıları Ders 9. B+ Ağacı, Hash, Heap. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

ELEKTRİK MAKİNELERİ (MEP 112) (ELP211) Yazar: Yrd. Doç. Dr. Mustafa Turan S1 SAKARYA ÜNİVERSİTESİ Adapazarı Meslek Yüksekokulu

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1

ANADOLU ÜNİVERSİTESİ AÇIKÖĞRETİM FAKÜLTESİ İLKÖĞRETİM ÖĞRETMENLİĞİ LİSANS TAMAMLAMA PROGRAMI. Lineer. Cebir. Ünite

BIL222 Veri Yapıları ve Algoritmalar

İŞLETMELERDE BİLİŞİM SİSTEMLERİ (EMBA523)

Ağaç Yapıları (Tree Structures) Kütük Organizasyonu 1

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

AĞAÇ-TREE VERİ YAPISI

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

FIRTINA SERİSİ MATEMATİK SORU BANKASI 5

EIS526 H10-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

Algoritmalara Giriş Ekim 17, 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Dağıtım 15.

Çok Yollu Ağaçlar: B*-Trees B*-Trees

Veritabanı Yönetim Sistemleri I

Algoritmalara Giriş 6.046J/18.401J

EIS526 -H04-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

#$% &'#(# Konular. Binary Tree Structures. Binary Search Trees AVL Trees Internal Path Reduction Trees Deerlendirme

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

EIS526 H13-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

Algoritmaların Karşılaştırılması. Doç. Dr. Aybars UĞUR

YÖNETİM BİLİŞİM SİSTEMLERİ

Arasınav Örnek Soruları Bahar 2018

EIS526-H06-1 GİRİŞİMCİLİK (EIS526) Yazar: Doç.Dr. Serkan BAYRAKTAR

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Veri Yapıları. Ağaçlar. Ağaçlar genel bilgi

ALGORİTMA VE PROGRAMLAMA I

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#9: AÇGÖZLÜ ALGORİTMALAR

7.Hafta Dengeli Arama Ağaçları (Red - Black Tree)

ALGORİTMA VE PROGRAMLAMA I

b) Algoritmanızın en kötü durumda işlem zamanını asimptotik olarak bulunuz

Azalt ve Fethet Algoritmaları

Dosya Sıkıştırma (File Compression) Kütük Organizasyonu 1

DOSYA ORGANİZASYONU. Çarpışma çözümleme yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

Alıştırma 1: Yineleme

TOEFL ibt LISTENING STRATEGIES & PRACTICE DR. HİKMET ŞAHİNER

Prof. Dr. Mahmut Koçak.

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr. Gör. Hakan TUNAHAN S1

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli

3.Hafta Master Teorem ve Böl-Fethet Metodu

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

Gezgin Satıcı Probleminin İkili Kodlanmış Genetik Algoritmalarla Çözümünde Yeni Bir Yaklaşım. Mehmet Ali Aytekin Tahir Emre Kalaycı

Final Sınavı Soruları Bahar 2018

ELEKTRİK MAKİNELERİ (MEP 112 (ELP211) ) Yazar: Yrd. Doç. Dr. Mustafa Turan S1

ELEKTRONİK TİCARET (OSP254) Yazar: Öğr.Gör. Hakan TUNAHAN S1

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

Nitel Araştırmalar için

Algoritmalar. Doğrusal Zamanda Sıralama. Bahar 2017 Doç. Dr. Suat Özdemir 1

Graflar bilgi parçaları arasındaki ilişkileri gösterirler.

F(A, N, K) // A dizi; N, K integer if N<0 then return K; if A[N]>K then K = A[N]; return F(A, N-1, K);

FIRTINA SERİSİ MATEMATİK SORU BANKASI 4

#$% &'#(# Konular. B-Tree and Derivatives. B-Trees B#-Trees B+-Trees Deerlendirme

Veri Yapıları. Yrd. Doç. Dr. Şadi Evren ŞEKER

BLM-431 YAPAY ZEKA. Ders-5 Bilgili Arama Yöntemleri. Yrd. Doç. Dr. Ümit ATİLA

9.Hafta Veri sıkıştırma ve Aç gözlü algoritmalar

Pratik Ara Sınav 1 Çözümleri

Transkript:

VERİ YAPILARI VE PROGRAMLAMA (BIP116) Yazar: Doç.Dr.İ.Hakkı.Cedimoğlu

SAKARYA ÜNİVERSİTESİ Adapazarı Meslek Yüksekokulu Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir. "Uzaktan Öğretim" tekniğine uygun olarak hazırlanan bu ders içeriğinin bütün hakları saklıdır. İlgili kuruluştan izin almadan ders içeriğinin tümü ya da bölümleri mekanik, elektronik, fotokopi, manyetik kayıt veya başka şekillerde çoğaltılamaz, basılamaz ve dağıtılamaz. Copyright 2004 by Sakarya University All rights reserved No part of this course contenet may be reproduced or stored in a retrieval system, or transmitted in any form or by any means mechanical, electronic, photocopy, magnetic, tape or otherwise, without permission in writing from the University. Sürüm 1 Sakarya... 2004 S 1

AĞAÇ (TREE) YAPILARI Bu Haftanın Hedefi: Bu Haftanın Materyalleri Bu haftaki dersimizde kullanacağımız bir materyal bulunmamaktadır. Kullanılan semboller Animasyon Soru Veritabanı Bağlantılı Soru Simülasyon Püf Noktası 1

Giriş Yığınlar, kuyruklar ve bağlı listeler doğrusal (linear) veri yapılarıdır. Ağaçlar ise doğrusal olmayan belirli niteliklere sahip veri yapılarıdır. Ağaç biçiminde oluşturulan ve kök, dal ve yaprak gibi kavramlara uygun olarak düzenlenen veri yapılarına ağaç yapıları denir. Ağacın her bir elemanına düğüm (node) adı verilir. Yukarıdaki ağaç yapısında göre A, B, C,. K birer düğümdür. Ağacın en üstteki düğümüne kök (root) adı verilir. Bu ağaç yapısında A köktür. İki düğüm arasındaki bağa dal adı verilir. Yukarıdaki ağaç yapısında A ile B, A ile C arasında dal vardır. Bir düğümün bağlı olduğu ilk alt düğümlere o düğümün çocukları (child) denir. Yukarıdaki örnekte B ve C, A'nın; I, J ve K, E'nin çocuklarıdır. Bir düğüm, bağlandığı ilk üst düğümlerin babası (parent)'dır. C'nin babası A, I'nın babası E'dir. Bir düğümün bağlı olduğu tüm alt düğümlere o düğümün varisleri (descendant) denir. Yukarıdaki örnekte I, J, K, E ve F, C'nin varisleridir. Bir düğüm, bağlandığı tüm üst düğümlerin atası (ancestor)'dır. G ve H'nin ataları D, B ve A'dır. Kök kendi hariç tüm düğümlerin atasıdır. Sol ve sağ bağı boş olan düğümlere yaprak (leaf) adı verilir. Yukarıdaki ağaç yapısında G, H, I, J, K, F yapraklardır. Aynı babaya sahip düğümlere kardeş düğüm (sibling, brother) adı verilir. Örnek olarak G ile H, E ile F kardeştir. 2

En derindeki yaprağın kök düğümüne olan uzaklığına ağacın derinliği (depth of tree) denir. Örnekteki ağaç yapısının derinliği 3'tür. Bir düğümün kök düğümüne olan uzaklığına ise bu düğümün derinliği denir. B'nin derinliği 1, F'nin derinliği 2, H'nin derinliği 3'tür. Genel ağaç yapısında düğümlerdeki çocuk sayısında ve ağaç yapısında bir kısıtlama yoktur. Ağaç yapısına belli kısıtlamalar getirilmesiyle ağaç çeşitleri meydana gelmiştir. Mesela her yaprağı aynı derinlikte olan ağaç yapısına dengeli ağaç (blanced tree) denir. İkili ağaçlar (binary trees) ise düğümlerinde en fazla iki bağ içeren (0, 1 veya 2) ağaçlardır. Ağaç yapısı kısıtlamaların az olduğu ve problemin kolaylıkla uyarlanabileceği bir yapı olduğundan birçok alanda kullanılmaktadır. Örnek olarak işletim sistemlerinde kullandığımız dosya-dizin yapısı tipik bir ağaç modellemesidir. AĞAÇ ÇEŞİTLERİ İkili Ağaç (Binary Tree) Her düğümün en fazla iki düğüme bağlandığı ağaç türlerine ikili ağaç denir. En basit ağaçlar grubuna girdiklerinden programlarda uygulanması kolaydır. Sıralama algoritmalarında, derleyicilerde sözdizim çözümlemede, kodlama kuramında ve benzeri algoritmalarında bu veri yapısı kullanılır. Yukarıdaki örnekte de görüldüğü gibi ikili ağaç yapısında her düğüm en fazla iki çocuğa sahiptir İkili Sıralama Ağacı (Binary Search Tree) İkili ağaç veri yapısının önemli kullanımlarından biri sayı yada alfabetik bilgi sıralanmasıdır. Her bir düğümün bilgi içeriğinin sol tarafındaki düğümler kendisinden küçük, sağ tarafındakiler kendisinden büyük eşit olduğu ikili ağaç yapısına ikili sıralama ağacı denir 3

Yukarıdaki örnekte de görüldüğü gibi her bir düğümün değeri solundakilerden büyük, sağındakilerden küçüktür. Mesela 52 değerine sahip olan düğümün sağındaki düğümlerin hepsi 52'den büyük değerlere, solundakiler 52'den küçük değerlere sahiptir. Alt düğümler için de bu kural geçerlidir. 71 değerine sahip olan düğümün sağındaki düğümlerin hepsi 71'den büyük değerlere, solundakiler 71'den küçük değerlere sahiptir. Huffman Ağaç Yapısı Bilgisayarda veri sıkıştırma tekniği olarak kullanılan ağaç yapısıdır. Veri sıkıştırma işlemine, verilerin daha az yer kaplaması amacıyla ihtiyaç duyulur. Veri kaybı olmadan kullanılan en iyi sıkıştırma tekniklerinden biri de Huffman veri sıkıştırma yöntemidir. 4

Huffman algoritması karakter kullanım oranlarına göre değişkenlik gösteren bir ağaç oluşturur. 19 kere 'a', 7 kere 'c', 2 kere 'b', 1 kere 'd' harfi kullanılan durumda, oluşan Huffman ağacı; 'a' = 1 'c' = 01 'b' = 001 'd' = 000 değerlerine sahip olur. Normal yöntemlerle, örnekteki her bir harf en az 2 bit (4 farklı harf için 00, 01, 10, 11 kullanılırsa) yer ayrılarak temsil edilir. Toplam 30 eleman olduğu için 30*2 = 60 bit gereklidir. Huffman ağacına göre 'a' harfi 1 bit (1 kullanılır), 'c' harfi 2 bit (01 kullanılır), 'b' harfi 3 bit (001 kullanılır) ve 'd' harfi 3 bit (000 kullanılır) yer ayrılarak temsil edilir. 19 tane 'a', 7 tane 'c', 2 tane 'd' ve 1 tane 'c' olduğundan, toplam bit sayısı 1*19 + 2*7 + 3*2 + 3*1 = 42 şeklinde hesaplanır. Huffman örnekte görüldüğü gibi ağaç yapısı veri kaybına yol açmadan sıkıştırma işlemini gerçekleştirmiş olur. Öncelik Kuyruğu (Heap) Yapısı Bir yazıcı kuyruğunda 1000 sayfalık ve 1 sayfalık işler olduğunda, işlem önceliğini az olana yani 1 sayfalık işe vermek gerekir. Aynı şekilde işletim sistemi de küçük işlere büyük işlerin bekletmesinden kurtulması amacıyla öncelik tanımaktadır. Bu sistemi gerçekleştirebilmek için veriler içerisinden en küçüğü tespit edecek ve çıkartacak bir algoritmaya ihtiyaç duyulur. 5

Daha önce anlatılan veri yapılarından bağlı listeler ve sıralı diziler üzerinde en küçük elemanı tespit etmek ve çıkarmak mümkündür. Bağlı listeye eleman eklemek O(1) (en öne eklenir), en küçük elemanı tespit edip silmek O(n) (listeyi dolaşmak gerekir) zamanı alır. Sıralı dizilerde ise eleman eklemek O(n) (elemanları bir sağa kaydırmak gerekir), en küçük elemanı tespit edip silmek O(1) (en baştaki eleman en küçüktür) zamanı alır. Sonuç olarak, her iki metot birbirlerine avantaj sağlayamamaktadır, her birinin bütünü ele alındığında O(n) zamanı gerekmektedir. Eleman eklemenin mümkün olduğu ve en küçük elemanın tespit edilip çıkartılabildiği O(n)'den daha hızlı bir mantık, bir algoritma varsa tercih edilmelidir. Bu durumda karşımıza öncelik kuyruğu (heap) veri yapısı çıkar. Öncelik Kuyruğu (heap) yapısında eleman eklemek ve en küçük elemanı çıkarmak O(log2n) zamanı almaktadır. Sonuç olarak öncelik kuyruğu (heap) yapısının bu problemin çözümünde kullanılması daha uygun olur. Öncelik kuyruğunun bir diğer adı da küme olarak geçmektedir. Küme (heap) yapısı tamamen dolu ikili ağaç yapısıdır. Arada boş düğümleri olmayan bir ağaç yapısı oluşturabilmek için ağacının katmanları soldan sağa olacak şekilde doldurulur. Ayrıca tamamen dolu ikili ağacı dizi üzerinde göstermek kolaydır. 6

Küme (heap) yapısında her bir düğümün değeri çocuklarının değerlerinden küçüktür veya eşittir. Bu durumda en küçük değere sahip eleman köktür. 7

İkili Arama (Binary Search) Aramada kullanılan kayıt sayısının çok fazla olduğu durumlarda sıralı arama işlem yükünü oldukça fazlalaştıracaktır. Bu yüzden ikili arama işlem yükünü azaltan bir yöntem olarak tercih edilir. İkili aramanın yapılabilmesi için veri yapımızda yer alan elemanların daha önceden sıralanmış olması gerekmektedir. Elemanlar sıralı olduğu durumda ikili arama metodu önce aranan elemanın anahtarını veri yapısının tam ortasında yer alan elemanla karşılaştırmakta ve bu elemandan büyük veya küçük olma durumuna göre aramaya aynı yöntemle veri yapısının alt veya üst bölümünde devam etmektedir. Bu yöntemle her bir adımla aramanın gerçekleştirildiği veri kümesinin büyüklüğü yarıya düşürülmüş olur. İkili aramada zaman karmaşıklığı O(log 2 N)'dir. Bu yüzden kayıt sayısı çok fazla olan uygulamalar için uygundur. Örneğin 1 milyon tane kayıtın bulunduğu bir veri kümesinde, arama işlemi, log 2 10000000 ~ 20'den yaklaşık 20 çevrimde bulunabilir. Aynı işlemi sıralı arama ile yapılmış olsaydı ortalama 500 bin çevrim, en kötü durumda ise 1 milyon çevrim gerekirdi. İkili arama yöntemi, sıralı olsa bile, bağlantılı listeler üzerinde uygulanamaz. Çünkü bağlantılı listelerde herhangi bir düğüme, ilk düğüm hariç erişilemez. 8