Datastrukturer och algoritmer Frelsning 10 Datastrukturer och algoritmer
- Slides: 33
Datastrukturer och algoritmer Föreläsning 10
Datastrukturer och algoritmer Innehåll VT 08 u Modeller/tillämpningar för träd u Organisation och terminologi u Olika typer av träd u Trädalgoritmer u Implementering av träd u Kapitel 10 och 11 i kursboken
Datastrukturer och algoritmer Modeller/tillämpningar för träd VT 08 u Modell: Ø Ordnat träd: o Ordervägarna i ett regemente Ø Binärt träd: o Stamtavla/släktträd u Tillämpningsexempel inom datavärlden: Ø Filsystem Ø Klasshierarkier i Java/OOP Ø Besluts-/sök-/spelträd inom AI Ø Prologs exekvering
Datastrukturer och algoritmer Organisation och terminologi (1) VT 08 Varje träd har minst en nod - roten Om det finns flera noder så finns det också grenar… …löv har träden också!
Datastrukturer och algoritmer Organisation och terminologi (2) VT 08 Elementen i ett träd kallas för noder. En nod har en position och ev. ett värde. Nivå 1 u Värdet på en nod kallas etikett. Nivå 2 u Alla noder på en nivå kallas syskon. Nivå 3 u Ett träd har ett ändligt antal noder och är en homogen datatyp. Nivå 4 u Föräldra-barn hierarki. u Delträd = en nod och dess avkomma. u
från g i s r lje i k s a r! t t e e n o D i t ! i fin e OBS d s n ke o b s r u k Datastrukturer och algoritmer Organisation och terminologi (3) VT 08 Ett träds noder finns på olika nivåer. u Höjden h(x) för nod x är antalet bågar på den längsta grenen i det träd där x är rot. u Ø Höjden av ett träd T, h(T) = h(roten) Ø h(a) = 0, h(b) = 2 och h(c) = 3 = h(T) u Djupet d(x) hos en nod x är antalet bågar från x upp till roten. Ø d(a) = 3, d(b) = 1, d(c) = 0 Ø nivå(x) = d(x) + 1 c b Nivå 1 Nivå 2 Nivå 3 a Nivå 4
Datastrukturer och algoritmer Olika typer av träd VT 08 u Ordnat träd (ex militärhierarki) Ø Syskonen är linjärt ordnade u Oordnat 10. 1 r u ig f e 91! S 1 n sida träd (ex filsystemet på en dator) Ø Ordningen bland syskonen har ingen betydelse u Urträd Ø Mer abstrakt än de två förra. Har en egen datatyp som hanterar syskonen.
Datastrukturer och algoritmer Olika typer av träd VT 08 u Riktade träd Ø Kan bara gå i en riktning i trädet. Ø I ett nedåtriktat träd saknas Parent. Ø I ett uppåtriktat träd saknas Children, måste gå att nå något annat än roten, tex en operation som ger alla löv. u Binära träd (tex stamtavla) Ø Varje nod har högst två barn
Datastrukturer och algoritmer ”Begreppspaus”- Om ordning VT 08 u Ordnad Ø Används för att beskriva olika sätt att ordna element i ett objekt i en datatyp u Riktad Ø När det finns en asymmetri när det gäller operationer för att hitta från ett element till ett annat. u Sorterad Ø När elementvärdena är sorterade enligt någon ordningsrelation
Datastrukturer och algoritmer Binära träd (1) VT 08 u En nod i ett binärt träd kan ha högst två barn Ø Barnen kallas vänster- och högerbarn. Ø Det andra barnet kan komma före det första Ø Träden nedan är OLIKA binära träd (men samma ”ordnade träd med max två barn”).
Datastrukturer och algoritmer Maximal och minimal höjd VT 08 u Maximal höjd (n-1) för n=3, en nod på varje nivå: u Minimal höjd, man kan inte flytta om några noder och få en mindre höjd: Minimal Ej minimal
Datastrukturer och algoritmer Binära träd (2) VT 08 u För binära träd T med n noder och höjd h gäller: Ø h n-1 (maximala höjden) Ø h log 2(n+1)-1 o Antalet noder på höjd i: ni 2 i dvs 1, 2, 4, 8, …, 2 h o Antalet noder totalt i trädet: n 2(h+1) - 1 Ø Ett träd har minimal höjd om n > 2 h - 1 vilket ger o log 2(n+1)-1 h < log 2(n+1) o dvs h är av O(log 2(n))
Datastrukturer och algoritmer Binära träd (3) VT 08 u Man 1. 3 1 r igu för F e S 24 2 n sida empel! ex vill ha så grunda träd som möjligt Ø Om vänster och höger delträd är ungefär lika stora har trädet balans och vägen till en slumpvis vald nod är O(log 2(n)) (se OH 12!) u Komplett binärt träd (Rätt bra balans) Ø Fyller på trädet från vänster till höger, en nivå i taget. u Fullt binärt träd (Ofta dålig balans) Ø Varje nod är antingen ett löv eller har två barn.
Datastrukturer och algoritmer Algoritmer VT 08 u Basalgoritmer Ø Djup Ø Höjd Ø Slå ihop Ø Dela upp Ø Beräkna Ø Traversera för träd
Datastrukturer och algoritmer Traversering av träd VT 08 u Tillämpningar av träd involverar ofta att man Ø Söker efter ett element med vissa egenskaper Ø Transformerar strukturen till en annan struktur o Exempelvis sortering och balansering Ø Filtrerar ut element med vissa egenskaper u Alla dessa bygger på att man traverserar strukturen.
Datastrukturer och algoritmer Traversering av träd - Bredden-först VT 08 u Man undersöker en nivå i taget. Först roten, sedan rotens barn, dess barn osv. Ø Kö ofta hjälp vid implementationen. Ø Varje nod i trädet besöks endast en gång, dvs O(n). Ø Söker man något som finns hittar man det.
Datastrukturer och algoritmer Traversering av träd-Bredden först Algoritm bf. Order(Tree T) input: A tree T to be traversed for each level L of T do for each node of L do compute(node) a b c d f VT 08 Ordningen: a, b, c, d, e, f, g, h, i, j g e h i j
Datastrukturer och algoritmer Traversering av träd - Djupet-först VT 08 u Man följer varje gren i trädet utifrån roten till lövet Ø Stack till hjälp för implementeringen Ø Varje nod besöks endast en gång, dvs O(n). Ø Tre varianter: o Preorder o Postorder o Inorder
Datastrukturer och algoritmer Traversering av träd - Preorder Algoritm pre. Order(Tree T) input: A tree T to be traversed compute(root(T)) // Do something with node for each child w of root(T) do pre. Order(w) a b c d f VT 08 pre. Order(Bin. Tree T) compute(root(T)) pre. Order(left. Child(T)) pre. Order(right. Child(T)) g e h i j Ordningen: a, b, c, d, f, g, e, h, i, j
Datastrukturer och algoritmer Preorder – Läsa ett dokument… VT 08
Datastrukturer och algoritmer Traversering av träd - Postorder Algoritm post. Order(Tree T) input: A tree T to be traversed for each child w of root(T) do post. Order(w) compute(root(T)) // Do something with node a b c d f VT 08 post. Order(Bin. Tree T) post. Order(left. Child(T)) post. Order(right. Child(T)) compute(root(T)) g e h i j Ordningen: b, c, f, g, d, h, i, j, e, a
Datastrukturer och algoritmer Algoritm evaluate. Expression(Tree t) If is. Leaf(t) return get. Value(t) else op get. Value(t) x evaluate. Expression(left. Child(t)) y evaluate. Expression(right. Child(t)) return x op y * + 1 VT 08 Postorder – Beräkna aritmetiska uttryck / + 3 3 9 2 5
Datastrukturer och algoritmer Traversering av träd – Inorder Algoritm in. Order(Tree T) input: A tree T to be traversed node root(T) in. Order(first. Child(T)) compute(node) // Do something with node for each child w of node (except first) do in. Order(w) a b c d f VT 08 in. Order(Bin. Tree T) in. Order(left. Child(T)) compute(root(T)) in. Order(right. Child(T)) g e h i j Ordningen: b, a, c, f, d, g, h, e, i, j
Datastrukturer och algoritmer Algoritm print. Expression(Tree t) print ”(” if has. Left. Child(t) then print. Expression(left. Child(t)) print get. Value(t) if has. Right. Child(t) then print. Expression(right. Child(t)) print ”)” / * + 3 VT 08 + 3 1 Inorder – Skriva aritmetiska uttryck 9 2 5
Datastrukturer och algoritmer Trädda binära träd u Nedåtriktade binära träd har ”lediga” länkar. u Utnyttja dessa för att ”trä” genvägar i trädet. u Det är vanligt att skapa inorderträdda träd. u Detta gör att man kan traversera med hjälp av iteration istället för rekursion. Ø Sparar minne VT 08
Datastrukturer och algoritmer Tillämpningar av träd VT 08 u Sökträd Ø Varje nod symboliserar ett givet tillstånd. Ø Barnen symboliserar de olika tillstånd man kan hamna i utifrån förälderns tillstånd. Ø Det gäller att hitta målnoden, dvs ett tillstånd som löser problemet. Ø Inte rimligt att bygga upp alla noder (möjliga tillstånd). Ø Ofta används heuristik
Datastrukturer och algoritmer Tillämpningar av träd VT 08 u Planträd och OCH/ELLER-träd Ø Noderna symboliserar hur man bryter ned ett stort problem i mindre delar och i vilken ordning man bör lösa dessa mindre delproblem. Ø Ofta använder man OCH/ELLER-träd där man kan ha OCH-kanter eller ELLER-kanter mellan förälder och barn. o OCH – alla barn behövs för lösningen o ELLER – något barn behövs
Datastrukturer och algoritmer Implementationer av träd VT 08 u Oordnat uppåtriktat träd som fält Ø Varje element i en vektor består av ett par: nodens etikett och en referens till föräldern. + Tar liten plats - Inget bra stöd för traversering (t ex svårt veta vilka noder som är löv) - Maximala storleken på trädet måste bestämmas i förväg h. 7 oc r 10 205 u g i Se F på sid. l! 10. 8 exempe för
Datastrukturer och algoritmer Implementationer av träd VT 08 u Ordnat träd som n-länkad struktur Ø Noden i trädet består av n-celler med etikett, länk till föräldern och n-1 länkar till barnen + Antalet noder i trädet dynamiskt. - Maximala antalet barn bestämt i förväg. - Om det är stor variation i antalet barn så finns outnyttjade länkar. . 9 på 10 r u g i r Se F. 206 fö sid mpel! exe
Datastrukturer och algoritmer Implementationer av träd VT 08 u Nedåtriktat ordnat träd som 1 -länkad struktur med lista av barn Ø Noden i trädet består av 1 -celler med en etikett och en länk till en barnlista 0. 11 1 r + Antalet noder i trädet dynamiskt. Se Fig. u 12 på side. l! 0 p ch 1 r exem o + Antalet barn i nätet dynamiskt ö 07 f u Utöka 2 till 2 -celler så blir trädet oriktat Ø Noden får en länk till föräldern, en etikett samt en länk till barnlista.
Datastrukturer och algoritmer Implementationer av träd VT 08 u Uppåtriktat u Nedåtriktat binärt träd med hjälp av 1 -cell binärt träd med Föräldra- Etikett länk 2 -cell u Oriktat binärt träd med Vänster- Etikett barn Högerbarn 3 -cell Föräldra- Vänster- Etikett länk barn Högerbarn
Datastrukturer och algoritmer Implementationer av träd u Noder som håller reda på förälder, första barn a och syskon. c b d e g VT 08 f
Datastrukturer och algoritmer Implementationer av träd VT 08 u Binärt träd som fält Ø Roten har index 1 och noden med index i har o sitt vänsterbarn i noden med index 2 i o sitt högerbarn i noden med index 2 i +1 o sin förälder i noden med index floor(i/2) Ø + Tar inget utrymme för strukturinformation Ø - Trädet har ett maxdjup (statiskt fält) Ø - Ev. slöseri med utrymme Ø Krävs ”markörer” för tom nod och inget värde
- Datatyper och algoritmer
- Datastrukturer och algoritmer
- Datastrukturer och algoritmer liu
- Frelsning
- Komplex ptsd dissociation
- Cassifier
- Algoritmer multiplikation
- Sumelist
- Datastrukturer chalmers
- Datastrukturer
- Buddhism och hinduism likheter och skillnader
- Konkretia
- John bauer tavla
- Globalisering fördelar och nackdelar
- Enterogastriska reflexen
- Astma och allergimottagningen st göran
- Produkt och marknadsmatris
- Metafor
- Liten och laddad
- Orsak konsekvens analys
- Styrkor och svagheter biologiska perspektivet
- Uppgift
- Bisats och huvudsats
- Lena parpis
- Vad är en nisch ekologi
- Feedback trappan
- Salvador dali yoko ono
- Tillåtna frisyrer i nordkorea
- Kemdykning
- Ger utgift i kassan
- Tomas och malin efternamn
- Styra och reglera
- Säljkommunikation
- Samlade siffror för tryck