© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 7 Träd.

Slides:



Advertisements
Liknande presentationer
Talföljder formler och summor
Advertisements

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 4.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Logikprogrammering, Mån 23/9 Rebecca Jonson. Repetition P :- Q, R. Deklarativ syn: –P är sann om Q och R är sanna. –Av Q och R följer P Procedurell syn:
Algoritmer och data strukturer -Länkade listor
Leif Håkansson’s Square Dancer Rotation
Nya typer Konstruerare, selektorer och predikat Rekursiva datatyper
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 4.
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
Binära Sökträd, kapitel 19
Algoritmer och datastrukturer
DoA VT -07 © Anders Broberg, Lena Kallin Westin, P = ((C,F,3), (B,D,3), (C,G,4),(A,F,4), (A,R,4), (C,D,5), (E,G,6), (B,R,6), (A,E,6), (A,C,8)) A.
Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 1.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 1.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 6 Asymtotisk analys.
V E R S I O N N R 2. 0 T A V E L I D É E R I M I L J Ö.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 7: Deadlocks.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Pathfinding. –Vad är det? –Sökning från A till B.
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1
Algoritmer och datastrukturer
TÄNK PÅ ETT HELTAL MELLAN 1-50
1 Träd nr 11 Binära träd ordnade, traversering, sökning.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Listor En lista är en föränderlig ordnad samling objekt.
Barnets rättigheter i Sverige och för alla barn i världen
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 11 Trie, Sökning och Sökträd.
Datastrukturer och algoritmer
Logikprogrammering 21/10 Binära träd
Datastrukturer och algoritmer
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Initiera nätverket med nollflöde. Kapaciteterna i svart ovan bågarna och flödet i grönt nedan bågarna. Skicka igenom ett enhetsflöde genom nätverket. Flödesvägen.
Datastrukturer och algoritmer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
Projekt 5.3 Gilpins och Ayalas θ-logistiska modell A Course in Mathematical Modeling - Mooney & Swift.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 13.
Länkade listor Binära träd
Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 12.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
Logikprogrammering 23/10 Binära träd In- och uthantering David Hjelm.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 9 Grafalgoritmer.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
Datastrukturer och algoritmer
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
Anders Sjögren Data (i primärminnet) som en länkad lista datatypen för varje element i listan är en struktur, post ( struct )
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 8 Relationer, prioritetsköer och grafer.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 4.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 8-9 Relationer, prioritetsköer, grafer och grafalgoritmer.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Relationer, prioritetsköer, grafer och grafalgoritmer
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 7 Träd

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Innehåll  Modeller/tillämpningar för träd  Organisation och terminologi  Signaturdiagram för ordnat träd  Olika typer av träd  Trädalgoritmer  Implementering av träd  Kapitel 10 och 11 i kursboken

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Modeller/tillämpningar för träd  Modell:  Ordnat träd: oOrdervägarna i ett regemente  Binärt träd: oStamtavla/släktträd  Tillämpningsexempel inom datavärlden:  Filsystem  Klasshierarkier i Java/OOP  Besluts-/sök-/spelträd inom AI  Prologs exekvering

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Organisation och terminologi (1) 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 VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Organisation och terminologi (2)  Elementen i ett träd kallas för noder. En nod har en position och ev. ett värde.  Värdet på en nod kallas etikett.  Alla noder på en nivå kallas syskon.  Ett träd har ett ändligt antal noder och är en homogen datatyp.  Föräldra-barn hierarki.  Delträd = en nod och dess avkomma. Nivå 1 Nivå 2 Nivå 3 Nivå 4

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Organisation och terminologi (3)  Ett träds noder finns på olika nivåer.  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.  Höjden av ett träd T, h(T) = h(roten)  h(a) = 0, h(b) = 2 och h(c) = 3 = h(T)  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 Nivå 1 Nivå 2 Nivå 3 Nivå 4 a b c OBS! Detta skiljer sig från kursbokens definitioner!

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Signaturdiagram för ordnat träd  Navigeringsorienterad vs delträdsorienterad specifikation av träd.  Om man arbetar med enstaka träd som förändras långsamt löv för löv så är navigeringsorienterad bättre.  Håller man på med träd och delträd som man vill dela upp eller slå samman är delträdsorienterad bättre. Se figur 10.4 sidan 197!

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Olika typer av träd  Ordnat träd (ex militärhierarki)  Syskonen är linjärt ordnade  Oordnat träd (ex filsystemet på en dator)  Ordningen bland syskonen har ingen betydelse  Urträd  Mer abstrakt än de två förra. Har en egen datatyp som hanterar syskonen. Se figur 10.1 sidan 191!

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Olika typer av träd  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.  Binära träd (tex stamtavla)  Varje nod har högst två barn

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 ”Begreppspaus”- Om ordning  Ordnad  Används för att beskriva olika sätt att ordna element i ett objekt i en datatyp  Riktad  När det finns en asymmetri när det gäller operationer för att hitta från ett element till ett annat.  Sorterad  När elementvärdena är sorterade enligt någon ordningsrelation

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Binära träd (1)  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 VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003  Maximal höjd (n-1) för n=3, en nod på varje nivå:  Minimal höjd, man kan inte flytta om några noder och få en mindre höjd: Maximal och minimal höjd Minimal Ej minimal

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Binära träd (2)  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 oAntalet noder på djup i är 2 i dvs 1, 2, 4, 8… oAntalet noder totalt i trädet: n  2 (h+1) - 1  Ett träd har minimal höjd om n > 2 h – 1vilket ger olog 2 (n+1)-1  h < log 2 (n+1) odvs h är av O(log 2 (n))

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Binära träd (3)  Man 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!)  Komplett binärt träd (Rätt bra balans)  Fyller på trädet från vänster till höger, en nivå i taget.  Fullt binärt träd (Ofta dålig balans)  Varje nod är antingen ett löv eller har två barn. Se Figur 11.3 sidan 224 för exempel!

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Algoritmer  Basalgoritmer för träd  Djup  Höjd  Slå ihop  Dela upp  Beräkna  Traversera

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Traversering av träd  Tillämpningar av träd involverar ofta att man  Söker efter ett element med vissa egenskaper  Transformerar strukturen till en annan struktur oExempelvis sortering och balansering  Filtrerar ut element med vissa egenskaper  Alla dessa bygger på att man traverserar strukturen.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Traversering av träd Bredden-först  Man undersöker en nivå i taget. Först roten, sedan rotens barn, dess barnbarn 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.

Traversering av träd-Bredden först Algoritm bfOrder(Tree T) input: A tree T to be traversed for each level L of T do for each node of L do compute(node) abc dfghije Ordningen: a, b, c, d, e, f, g, h, i, j

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Traversering av träd Djupet-först  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: oPreorder oPostorder oInorder

Traversering av träd - Preorder Algoritm preOrder(Tree T) input: A tree T to be traversed compute(root(T)) // Do something with node for each child w of root(T) do preOrder(w) abc dfghije preOrder(BinTree T) compute(root(T)) preOrder(leftChild(T)) preOrder(rightChild(T)) Ordningen: a, b, c, d, f, g, e, h, i, j

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Preorder – Läsa ett dokument…

Traversering av träd - Postorder Algoritm postOrder(Tree T) input: A tree T to be traversed for each child w of root(T) do postOrder(w) compute(root(T)) // Do something with node abc dfghije postOrder(BinTree T) postOrder(leftChild(T)) postOrder(rightChild(T)) compute(root(T)) Ordningen: b, c, f, g, d, h, i, j, e, a

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Postorder – Beräkna aritmetiska uttryck Algoritm evaluateExpression(Tree t) If isLeaf(t) return getValue(t) else op  getValue(t) x  evaluateExpression(leftChild(t)) y  evaluateExpression(rightChild(t)) return x op y / *

Traversering av träd – Inorder Algoritm inOrder(Tree T) input: A tree T to be traversed node  root(T) inOrder(firstChild(T)) compute(node) // Do something with node for each child w of node (except first) do inOrder(w) abc dfghije inOrder(BinTree T) inOrder(leftChild(T)) compute(root(T)) inOrder(rightChild(T)) Ordningen: b, a, c, f, d, g, h, e, i, j

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Inorder – Skriva aritmetiska uttryck Algoritm printExpression(Tree t) print ”(” if hasLeftChild(t) then printExpression(leftChild(t)) print getValue(t) if hasRightChild(t) then printExpression(rightChild(t)) print ”)” / *

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Trädda binära träd  Nedåtriktade binära träd har ”lediga” länkar.  Utnyttja dessa för att ”trä” genvägar i trädet.  Det är vanligt att skapa inorder- trädda träd.  Detta gör att man kan traversera med hjälp av iteration istället för rekursion.  Sparar minne

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Tillämpningar  Konstruktioner av andra typer (speciellt binära träd)  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 VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Tillämpningar  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. oOCH – alla barn behövs för lösningen oELLER – något barn behövs

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Implementationer av träd  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 Se Figur 10.7 och 10.8 på sid. 205 för exempel!

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Implementationer av träd  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.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Implementationer av träd  Nedåtriktat ordnat träd som 1-länkad struktur med lista av barn  Noden i trädet består av 1-celler med etikett, en länk till en barnlista + Antalet noder i trädet dynamiskt. + Antalet barn i nätet dynamiskt  Utöka till 2-celler så blir trädet oriktat  Noden får en länk till föräldern, etikett samt länk till barnlista.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Implementationer av träd  Noder som håller reda på förälder, första barn och syskon. a b g c fed Se kod på kurswebsidan!

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Implementationer av träd  Uppåtriktat binärt träd med hjälp av 1-cell  Nedåtriktat binärt träd med 2-cell  Oriktat binärt träd med 3-cell Föräldra länk Etikett Vänster- barn EtikettHöger- barn Föräldra- länk Vänster- barn EtikettHöger barn

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Implementationer av träd  Binärt träd som fält  Roten har index 1 och noden med index i har ositt vänsterbarn i noden med index 2*i ositt högerbarn i noden med index 2*i +1 osin förälder i noden med index floor(i/2) + Tar inget utrymme för strukturinformation -Trädet har ett maxdjup (statiskt fält) -Krävs ”markörer” för null och tom nod -Ev. slöseri med utrymme Se kod på kurswebsidan!