Tree

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

Drevo(tree) sestavlja množica elementov – vozlišč. Vozlišča so povezana na podlagi relacije, ki določa hierarhično strukturo.

Drevesa v sistemu e-Študent rišemo s pomočjo dodatka Pomoč:Graphviz.

Vsebina

Primer drevesa

Kazalo v knjigi (relacija: vsebovanost):

kazalo vsebuje poglavja
poglavje vsebuje podpoglavja
podpoglavje vsebuje odstavke
odstavki vsebujejo stavke
itd...

Vsako podpoglavje je samostojna drevesna struktura. Vsak odstavek je samostojna drevesna struktura - poddrevo.

Formalna definicija

Drevesna struktura z osnovnim tipom T je:

  • prazna struktura

ali

  • vozlišče tipa T, kateremu je prirejeno končno število tujih drevesnih struktur z osnovnim tipom T (poddreves)

Ponazoritev

Drevesa se ponazori z grafom.

Primeri grafov odločitvenega drevesa

  • pet zlatnikov, eden je ponaredek (je lažji)
  • iščemo ga s tehtanjem

Začnemo s tehtanjem 1,2 in 3,4 zlatnika, po dva skupaj na eni strani tehtnice.

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

Pojmi

koren
Koren je prvi element v grafu. Koren podgrafa je vozlišče, ki se nahaja na najvišji točki v podgrafu.
vozlišče
vsak krogec
list
vozlišče, ki nima nobenega naslednika - končni element
poddrevo
Poddrevo dobimo, če vzamemo eno samo vozlišče in ga "odklopimo" od vozlišča nad njim
naddrevo
Naddrevo je drevo katero vsebuje vozlišče, ki je koren trenutnega drevesa.
naslednik
Naslednik je vsak element nižje od vozlišča do katerega lahko pridemo po poti navzdol.
prednik
Prednik je vsak element višje od vozlišča do katerega lahko pridemo po poti navzgor.
neposredni naslednik (sin)
do njega pridemo po 1 poti navzdol
neposredni predhodnik (oče)
do njega pridemo po 1 poti navzgor
notranji element
elementi, ki niso listi
nivo
elementi, ki so oddaljeni enako število vozlišč, so na istem nivoju (višini)
koren je na nivoju 0
globina vozlišča
število korakov od korena do vozlišča
vsa vozlišča povezana neposredno na koren so v globini 1
višina drevesa
največja globina kateregakoli vozlišča (globina najnižjega lista)
stopnja vozlišča
število naslednikov vozlišča
stopnja drevesa (dvojiška, trojiška drevesa)
najvišja stopnja vozlišča dosežena znotraj drevesa
dvojiško(binarno) drevo ima stopnjo 2 (npr primerjanje true/false)
trojiško drevo ima stopnjo 3 (npr primerjanje večji/manjši/enak)
pot do vozlišča
pot od korena do vozlišča
vključuje vsa vozlišča preko katerih pot prepotujemo
dolžina poti vozlišča
je enaka globini vozlišča
število korakov potrebnih za dostop do vozlišča
dolžina poti drevesa

Vrste dreves

  • polna drevesa
  • izravnana (uravnotežena) drevesa
  • iskalna drevesa
polnost
polno drevo ima vsa vozlišča polna (glede na stopnjo drevesa)
polna (full)
izpolnjena (complete)
teži k čimmanjši višini
uravnoteženost
obe strani uravnoteženega drevesa naj bi bili čimbolj enake dolžine
popolnoma izravnano drevo
teži k temu da se drevo ne izrodi - da ne postane 1 veja zelo dolga
urejenost
vsako vozlišče ima nek (enak) pomen
npr: vsako levo vozlišče dvojiškega drevesa predstavlja manjše in vsako desno večje
omogoča enostavno iskanje
dvojiško iskalno drevo (BST - binary search tree)
večstopenjsko iskalno drevo (B drevo)
AVL drevo (iskalno drevo, ki je hkrati uravnoteženo)

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

Lastnosti dreves

  • Vsako vozlišče ima enolično pot do korena.
  • Dolžina poti od korena do kateregakoli vozlišča <= višini drevesa
  • Za polno drevo PD velja, da so stopnje vseh njegovih notranjih vozlišč enake (stopnji drevesa)
  • PD (stopnja d, višina h) ima število vozlišč n: (dh+1–1)/(d–1)
  • PD (stopnja d, število vozlišč n) ima višino h: logd(n*d-n+1)-1

Izpolnjeno drevo

Izpolnjeno drevo nima nujno vseh listov na istem nivoju, še vedno pa je polno drevo kjer so vsa vozlišča stopnje 0 (list) ali stopnje grafa.

Primer

Polno dvojiško drevo (d=2)
  • h=1: n= (22-1)/(2-1)=3
  • h=2: n = 7
  • h=10: n = 2047
  • n=1000: h = log2(1001)-1=
  • 9.97-1 = 9
  • 106: h=19.93-1 = 19

Polno drevo

Polno trojiško drevo (d=3)
  • h=1: n=(31+1-1)/(3-1) = 4
  • h=2: n = 13
  • h=10: n = 88573
  • n=1000: h=log3(2001)-1=6.92-1 = 6
  • h=106: h=13.21-1 = 13

Vrste dreves

Popolnoma izravnano drevo

Za (popolnoma) izravnano (uravnoteženo) drevo velja, da se pri vsakem vozlišču število vozlišč njegovega levega in desnega poddrevesa razlikuje kvečjemu za 1.

Zgled: dvojiško popolnoma izravnano drevo z 1, 3, 4, 5, 6, 7, 8 vozlišči

7 | a | b | c | d | e | f | g
   !!!
                  |
       !!!         !!!

  • prvega damo v vozlišče
  • polovico damo v eno poddrevo, drugo polovico v drugo
  • ponavljamo rekurzivno

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.


 a | b | c | d | e | f | g | h | i | j | k
!!!|                   |
   |!!!|       |       |!!!|       |
   |   |!!!    |!!!    |   |!!!    |!!!

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

Dvojiško iskalno drevo (Binary search tree)

Za vsako vozlišče iskalnega drevesa velja:

  • (če je x vrednost trenutnega vozlišča)
  • vrednost vsakega vozlišča v levem poddrevesu je manjša od x
  • vrednost vsakega vozlišča v desnem poddrevesu je večja od x
  • (vsaka vrednost se v drevesu nahaja samo v enem vozlišču)

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

Zgled: postopna izgradnja drevesa z vozlišči, ki imajo vrednosti:

{ 5, 2, 7, 1, 3, 4, 10, 8, 6, 5 }
  5
  5  2
        7

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.


postopno brisanje vozlišč z vrednostmi: {5, 8, 3, 5, 3 }

Postopek:

  • če elementa ni ne naredi nič
  • če je index večji od 1, zmanjšaj index
  • sicer
  • če je element list, odstrani list
  • sicer
  • če ima najdeni element enega samega naslednika, izloči element
  • sicer (ima 2 naslednika)
  • nadomesti element z največjim elementom iz levega poddrevesa; izbriši ta element iz levega poddrevesa

Izločanje elementa 5

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

index se zmanjša

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.


brisanje elementa 8

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

ker je 8 list se element izbriše

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.


brisanje elementa 3

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

ker ima 3 enega naslednika se element izloči

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.


brisanje 5:

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

uporabimo maksimalni element iz levega poddrevesa tako, da gremo:

  • enkrat levo
  • tolikokrat desno dokler se da

torej je pravi element za nadomeščanje: 4

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.


brisanje 4:

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

enkrat levo gremo lahko, desno ne moremo več...

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

Obhod drevesa

  • postopek, ki sistematično obišče vsa vozlišča drevesa (oziroma izvede

določeno operacijo na vseh vozliščih – tipično izpis)

Vrste obhodov

Uporabimo graf enačbe

( ( ( 5 - x ) * 2 - 4 ) / (8 + 4) ) + 6

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.


Vrste obhodov:

obhodimo vsak nivo posebej od najvišjega do najnižjega od leve proti desni
+ / 6 - + * 4 8 4 - 2 5 x
  • Premi vrsti red (ang. pre-order)
gledamo na drevo kot koren + levo poddrevo + desno poddrevo
najprej izpiše koren, potem izpiše celotno levo poddrevo, potem celotno desno poddrevo
operacija se ponavlja rekurzivno v vsakem korenu
+ / - * - 5 x 2 4 + 8 4 6
  • Vmesni vrstni red (ang. inorder)
izpiše v podobnem vrstnem redu kot premi
najprej levo poddrevo, potem koren, potem desno poddrevo
enako kot enačba brez oklepajev
5 - x * 2 - 4 / 8 + 4 + 6
  • Obratni vrstni red (ang. post-order)
najprej levo poddrevo, potem desno, potem koren
postfiksni zapis (poljska notacija) matematičnega izraza
5 x - 2 * 4 - 8 4 + / 6 +

Tipična ponazoritev dreves v računalniku

  • s pomočjo tabele, kjer vsak element tabele predstavlja eno vozlišče

(kot pri sortiranju s kopico)

  • z (ustrezno) povezanimi objekti, ki predstavljajo posamezna vozlišča

Izvedba v Javi

razred BinaryTree ()

Povezave

Vzpostavljeno iz »http://www.e-studij.si/Tree«
Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja