Ders eri i
This presentation is the property of its rightful owner.
Sponsored Links
1 / 22

Ders İçeriği PowerPoint PPT Presentation


  • 144 Views
  • Uploaded on
  • Presentation posted in: General

Ders İçeriği. Ağaç Veri Modeli Tanım ve Gerçekleştirim İkili Ağaç Bağıntı Ağaçları. Ağaç Veri Modeli. Verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyerarşik yapıya sahip veri modelidir.

Download Presentation

Ders İçeriği

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Ders eri i

Ders İçeriği

  • Ağaç Veri Modeli

    • Tanım ve Gerçekleştirim

    • İkili Ağaç

    • Bağıntı Ağaçları


A a veri modeli

Ağaç Veri Modeli

  • Verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyerarşik yapıya sahip veri modelidir.

  • Yazılım dünyasında birçok yerde programcının karşısına çıkar. Örneğin:

    • İşletim sistemlerinin dosya sistemi.

    • Oyunların olası hamleleri.

    • Şirketlerdeki organizasyon şeması.


Rnek dosya sistemi

Örnek Dosya Sistemi

/ymt

kodlar

dersler

kitaplar

eski

b.java

a.java

ymt219

ymt112

...

2010-2011

2.pdf

1.pdf

1.pdf

ymt219

ymt217

...

ymt215

1.Pdf

1.ppt

1.doc


A a zerinde baz tan mlar

Ağaç Üzerinde Bazı Tanımlar

Kök

  • Çocuk: Bir düğüme doğrudan bağlı olan düğümlere o düğümün çocukları denir.

  • Derece: Bir düğümden alt hiyerarşiye yapılan bağlantıların sayısıdır.

  • Derinlik

  • 1

  • 2

  • 3

  • 4

A

Ara

Düğüm

B

C

Yaprak

Düğüm

D

E

F

Yaprak

Düğüm

G

7 düğümlü ağaç


A a zerinde baz tan mlar1

Ağaç Üzerinde Bazı Tanımlar

  • Kardeş Düğüm: Aynı düğüme bağlı düğümlere denir.

  • Aile: Düğümlerin doğrudan bağlı olduğu düğüme denir.

  • Ata: Aile düğümünün üstündeki düğüme ata denir.

  • Orman: Ağaçlar kümesi

  • Yol: Bir düğümden başka bir düğüme gidebilmek için üzerinden geçilmesi gereken düğümlerin listesi.

  • Düzey: Kök ile düğüm arasındaki yolun üzerinde bulunan düğümlerin sayısıdır.

  • Derinlik: Bir düğümün köke olan uzaklığı

  • Yükseklik: Bir düğümün kendi silsilesindeki en uzak mesafedeki yaprak düğüme olan düzey sayısı.

  • Altağaç: Ağacın herhangi bir dalı


A a zerinde baz tan mlar2

Ağaç Üzerinde Bazı Tanımlar

Kök

A

B

C

D

F

E

G


A a lar

Ağaçlar

  • Ağaç tanımı özyinelemelidir:

    • Bir ağaç iki şekilde olabilir:

      a. Boş düğüm kümesi, veya

      b. Kök ismi verilen bir düğüm ve 0 veya daha fazla alt-ağacı olan yapı.

  • N tane düğümden oluşan bir ağacın kenar sayısı N-1 tanedir.

  • Ağaçtaki iki düğüm arasında en fazla 1 yol olabilir.


A a ger ekle tirimi

Ağaç Gerçekleştirimi

  • Ağaç veri yapısını gerçekleştirmek için 2 yol vardır.

    • Bağlantılı liste kullanmak

    • Dizi kullanmak


A a ger ekle tirimi1

Ağaç Gerçekleştirimi

  • Her bir bağlantı için birer bağlantı bilgisi tutulur.

A

B

C

D

E

F

  • Problem: Bir sonraki elemanın çocuk sayısını bilmiyoruz.


A a ger ekle tirimi2

Ağaç Gerçekleştirimi

  • Daha iyisi:1. Çocuk/Kardeş Gösterimi

    • Her düğümde iki bağlantı bilgisi tutularak hem çocuk hem de yandaki kardeş tutulabilir.

    • İstenildiği kadar çocuk/kardeş olabilir.

JAVA Declaration

classAgacDugumu {

inteleman;

AgacDugumuilkCocuk;

AgacDugumukardes;

}

A

B

C

D

E

F


Kili a a

Kök

A

A

A

B

B

Sol alt ağaç

D

C

İki farklı ikili ağaç

Z

I

P

K

M

Sağ alt ağaç

İkili Ağaç

  • İkili ağac bir düğümün en fazla 2 tane çocuğa sahip olabildiği ağaçtır

  • Her düğüm en fazla 2 çocuğa sahip olabilir.

    • Bilgisayar bilimlerinde en yaygın ağaçtır.


Kili a a devam

İkili Ağaç (devam)

  • N tane düğüm veriliyor, İkili ağacın minimum derinliği nedir.

Derinlik1: N = 1 = 20düğüm

Derinlik2: N = 2 ve 3 düğüm = 21ve 21+1 -1 düğüm

Herhangi bir d derinliğinde, N = ?


Kili a a devam1

İkili Ağaç (devam)

  • Derinlik 0: N = 1 = 20düğüm

  • Derinlik 1: N = 2 ve 3 düğüm = 21ve 21+1 -1 düğüm

  • D derinliğinde , N = 2dve 2d+1-1 düğüm (tam bir ikili ağaç)

  • En küçük derinlik:

    • log N ≤ d ≤ log(N+1)-1 or Θ(log N)


Kili a a devam2

İkili Ağaç (devam)

  • N düğümlü ikili ağacın minimum derinliği: Θ(log N)

  • İkili ağacın maksimum derinliği ne kadardır?

    • Dengesiz ağaç: Ağaç bir bağlantılı liste olursa!

    • Maksimum derinlik = N

  • Amaç: Arama gibi operasyonlarda bağlantılı listeden daha iyi performans sağlamak için derinliğin log N de tutulması gerekmektedir.

  • Bağlantılı liste

  • Derinlik = N


Kili a a ger ekle tirimi

İkili Ağaç Gerçekleştirimi

d

sol

veri

sag

kök

4

publicclassİkiliAgacDugumu{

publicİkiliAgacDugumusol;

publicintveri;

publicİkiliAgacDugumusag;

}

12

6

45

7


Kili a a ger ekle tirimi1

İkili Ağaç Gerçekleştirimi

/* İkili ağaç düğümü oluşturur.

*/

İkiliAgacDugumuDugumOlustur(intveri){

İkiliAgacDugumudugum = new İkiliAgacDugumu();

dugum.veri= veri;

dugum.sol = null;

dugum.sag = null;

return dugum;

}

dugum

veri

null

null

  • Bu yordam ikili ağaç düğümü oluşturur ve bunu geri döndürür.


Kili a a ger ekle tirimi2

İkili Ağaç Gerçekleştirimi

İkiliAgacDugumudugum= null;

publicstaticvoid main main(){

kok = DugumOlustur(4);

kok.sol = DugumOlustur(6);

kok.sag = DugumOlustur(12);

kok.sol.sol = DugumOlustur(45);

kok.sag.sol = DugumOlustur(7);

kok.sag.sag = DugumOlustur(1);

} /* main */

kök

4

12

6

45

7

1

  • Kök verilmiş olsun tüm ağaç üzerinde dolaşıp elemanları ekrana nasıl yazdırırız.?

    • Ağaç dolaşma algoritmaları


Kili a a zerinde dola ma

İkili Ağaç Üzerinde Dolaşma

  • İkili ağaç üzerinde dolaşma birçok şekilde yapılabilir. Ancak belirli bir yönteme uyulması algoritmik ifadeyi kolaylaştırır. İkili ağaç üzerinde dolaşmak için 3 temel yol vardır. Bunlar:

    • Önce-kök (Preorder): Kök, Sol, Sağ

      • Önce ağacın kökü, sonra sol alt ağaç ve ardından sağ alt ağaç

    • Ortada-kök (Inorder): Sol, Kök, Sağ

      • Önce sol alt ağaç, kök ve sağ alt ağaç

    • Sonra-kök (Postorder): Sol, Sağ, Kök

      • Önce sol alt ağaç, sağ alt ağaç ve kök.


Ders eri i

Örnek

Kök

Önce-kök

A C P D Z M I K

A

D

Ortada-kök

P C A M Z D I K

C

Z

I

P

Sonra-kök

P C M Z K I D A

K

M


Algoritma

Algoritma

OnceKok(IkiliAgacDugumukok){

if (kok == null) return;

System.out.print(kok.veri+" ");

OnceKok(kok.sol);

OnceKok(kok.sag);

}

OrtadaKok(IkiliAgacDugumukok){

if (kok == null) return;

OrtadaKok(kok.sol);

System.out.print(kok.veri+" ");

OrtadaKok(kok.sag);

}

SonraKok(IkiliAgacDugumukok){

if (kok == null) return;

SonraKok(kok.sol);

SonraKok(kok.sag);

System.out.print(kok.veri+" ");

}


Ba nt a a lar

Bağıntı Ağaçları

  • Bağıntı ağaçları bir matematiksel bağıntının ağaç şeklinde tutulması için tanımlanmıştır.

  • Örnek aritmetik işlem

    • A + (B * (C / D) )

  • Ağacın genel yapısı:

    • Yaprak düğüm = değişken/sabit değer

    • Kök veya ara düğümler = operatörler

  • Birçok derleyicide kullanılır. Parantez gereksinimi yoktur.

Kök

+

A

*

/

B

C

D


Ba nt a a lar1

Bağıntı Ağaçları

  • Verilen denklemden bağıntı ağacı kurulması veya verilen ağaçtan denklemin çıkartılması için üç değişik yöntem vardır:

    • İç-takı: matematikte alışılagelen şekilde, operatörlerin ortada, değişken veya sabit değerlerin operatörün kenarında bulunan yöntemdir.

    • Ön-takı: operatörler kendilerine karşı düşen parametrelerin(değişken/sabit) önündedir.

    • Son-takı: Polonyalı notasyonu olarak da adlandırılır ve operatörler kendi parametrelerinin arkasından gelir.


  • Login