Bomen. 8.8 ongerichte bomen 9.4 gerichte bomen ch 10. binaire bomen

Vergelijkbare documenten
Bomen. 8.8 ongerichte bomen 9.4 gerichte bomen ch 10. binaire bomen. deel 2. Tiende college

Bomen. 8.8 ongerichte bomen 9.4 gerichte bomen ch 10. binaire bomen. deel 1. Negende college

Algoritmiek. 15 februari Grafen en bomen

Tweede college algoritmiek. 12 februari Grafen en bomen

Discrete Structuren. Piter Dykstra Sietse Achterop Opleidingsinstituut Informatica en Cognitie

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

Datastructuren; (Zoek)bomen

5.4.2 a. Neen: dit lukt alléén met 1, 3, 7 enzovoort. b. Ja: dit lukt met elk aantal knopen! Bijvoorbeeld de volgende boom: 1

V = {a, b, c, d, e} Computernetwerken: de knopen zijn machines in het netwerk, de kanten zijn communicatiekanalen.

waar is hier de uitgang?

Datastructuren Uitwerking jan

Hoofdstuk 2. Iteratie, Recursie en Inductie. 2.1 Fibonacci getallen

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort

Grafen. Indien de uitgraad van ieder punt 1 is, dan bevat de graaf een cykel. Indien de ingraad van ieder punt 1 is, dan bevat de graaf een cykel.

Doorzoeken van grafen. Algoritmiek

Uitwerking tentamen Algoritmiek 9 juni :00 17:00

Het omzetten van reguliere expressies naar eindige automaten, zie de vakken Fundamentele Informatica 1 en 2.

Tree traversal. Bomen zijn overal. Ferd van Odenhoven. 15 november 2011

Examen Algoritmen en Datastructuren III

Datastructuren: stapels, rijen en binaire bomen

Talen & Automaten. Wim Hesselink Piter Dykstra Opleidingsinstituut Informatica en Cognitie 9 mei 2008

Grafen deel 2 8/9. Zesde college

Grafen en netwerken I Datastructuren en doorzoeken. Algoritmiek

Twaalfde college algoritmiek. 13 mei Branch & Bound Heap, Heapsort & Heapify

Datastructuren en Algoritmen voor CKI

De volgende opgave gaat over de B-bomen van het college, waar sleutels zowel in de bladeren als ook in de interne knopen opgeslagen worden.

Grafen en BFS. Mark Lekkerkerker. 24 februari 2014

Examen Datastructuren en Algoritmen II

Vierde college complexiteit. 26 februari Beslissingsbomen en selectie Toernooimethode Adversary argument

Grafen deel 1. Zesde college

Datastructuren en algoritmen voor CKI

Kortste Paden. Algoritmiek

Datastructuren Uitwerking jan

Datastructuren en algoritmen voor CKI

Tree traversal. Ferd van Odenhoven. 15 november Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering. Doorlopen van bomen

2WO12: Optimalisering in Netwerken

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Datastructuren Programmeeropdracht 3: Expressies. 1 Expressies. Deadline. Dinsdag 8 december 23:59.

Vierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017

Over binaire beslissingsdiagrammen naar Donald E. Knuth s The Art of Computer Programming, Volume 4

Verzamelingen deel 2. Tweede college

2WO12: Optimalisering in Netwerken

TW2020 Optimalisering

Examen Datastructuren en Algoritmen II

Twaalfde college complexiteit. 11 mei Overzicht, MST

TW2020 Optimalisering

Greedy algoritmes. Algoritmiek

Discrete Wiskunde, College 12. Han Hoogeveen, Utrecht University

Tentamen Discrete Wiskunde 1 10 april 2012, 14:00 17:00 uur

Combinatorische Algoritmen: Binary Decision Diagrams, Deel III

Examen Datastructuren en Algoritmen II

Datastructuren Programmeeropdracht 2: Expressies. 1 Expressies. Deadlines. Woensdag 12 oktober 23:59, resp. woensdag 2 november 23:59.

Twaalfde college algoritmiek. 23 mei Branch & Bound, Heapsort

RuG-Informatica-cursus Discrete Structuren, versie 2009/2010

Examen Datastructuren en Algoritmen II

8C080 deel BioModeling en bioinformatica

Minimum Spanning Tree

Uitwerking tentamen Algoritmiek 9 juli :00 13:00

Examen Datastructuren en Algoritmen II

Het minimale aantal sleutels op niveau h is derhalve

Minimum Opspannende Bomen. Algoritmiek

Hoofdstuk 2. Week 4: Datastructuren. 2.1 Leesopdracht. 2.2 Bomen. 2.3 Definitie

1.2 Bomen Algemeen 1.2. BOMEN 7

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 5 juni 2007, uur

Uitwerking tentamen Algoritmiek 10 juni :00 13:00

Examen Datastructuren en Algoritmen II

Tiende college algoritmiek. 13/21 april Gretige Algoritmen Algoritme van Dijkstra

Opgaven Zoekbomen Datastructuren, 15 juni 2016, Werkgroep.

Gödels theorem An Incomplete Guide to Its Use and Abuse, Hoofdstuk 3

Tiende college algoritmiek. 4 mei Gretige Algoritmen Algoritme van Dijkstra

Grafen deel 2 8/9. Zevende college

Formeel Denken 2014 Uitwerkingen Tentamen

Vierde college complexiteit. 14 februari Beslissingsbomen

Datastructuren: stapels, rijen en binaire bomen

MEER OVER BINAIRE ZOEK BOMEN EN VARIANTEN

Tiende college algoritmiek. 2 mei Gretige algoritmen, Dijkstra

Tiende college algoritmiek. 26 april Gretige algoritmen

Recursie en inductie 10 1

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

Uitwerkingen opgaven Kunstmatige intelligentie

4EE11 Project Programmeren voor W. College 3, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

ALGORITMIEK: antwoorden werkcollege 5

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

Tweede Toets Datastructuren 29 juni 2016, , Educ-Γ.

MEER OVER BINAIRE ZOEK BOMEN EN VARIANTEN

Vierde college complexiteit. 16 februari Beslissingsbomen en selectie

Java Programma structuur

Datastructuren en Algoritmen

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek

Opgaven Zoekbomen Datastructuren, 20 juni 2018, Werkgroep.

TW2020 Optimalisering

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

Oefententamen in2505-i Algoritmiek

Vijfde college algoritmiek. 2/3 maart Exhaustive search

Hoofdstuk 17: Approximation Algorithms

Grafische ondersteuning bij programmeeronderwijs

1 Inleiding in Functioneel Programmeren

Transcriptie:

10 Bomen 8.8 ongerichte bomen 9.4 gerichte bomen ch 10. binaire bomen 1

Baarn Hilversum Soestdijk Den Dolder voorbeelden route boom beslisboom Amersfoort Soestduinen + 5 * + 5.1 5.2 5.3 5.4 2 3 * * 2 5.3.1 5.3.2 5.3.3 menuboom decimal tree gegevensboom molecuul 5 7 9 11 (2*3)+((5*7)+(9*11)) berekenboom syntactische boom

arboretum ongericht 8.8 tree graphs 9.4 rooted trees ch.10 binary trees 3 gericht geordend links/rechts

definitie een boom is een samenhangende ongerichte graaf zonder cykels; 8.8 tree graphs een gewortelde boom heeft een speciaal punt (de wortel), en daarmee een richting (vanuit de wortel) 9.4 rooted trees 4

8.8 (ongerichte) boom: samenhangende graaf zonder cykels 9.4 (gerichte) boom: kies wortel 5 rooted tree

Baarn Hilversum Soestdijk (ongericht) voorbeelden Den Dolder route boom beslisboom 5 Amerfoort Soestduinen + * + 5.1 5.2 5.3 5.4 2 3 * * 6 5.3.1 5.3.2 5.3.3 menuboom decimal tree gegevensboom molecuul 5 7 9 11 (2*3)+((5*7)+(9*11)) berekenboom syntactische boom

(gericht, ongeordend) voorbeelden Baarn 5 Hilversum Soestdijk Amerfoort Soestduinen Den Dolder route boom beslisboom + * + 5.1 5.2 5.3 5.4 2 3 * * 7 5.3.1 5.3.2 5.3.3 menuboom decimal tree gegevensboom molecuul 5 7 9 11 (2*3)+((5*7)+(9*11)) berekenboom syntactische boom

Baarn Hilversum Soestdijk (gericht, geordend) voorbeelden Den Dolder route boom beslisboom Amerfoort 5 Soestduinen + * + 5.1 5.2 5.3 5.4 2 3 * * 8 5.3.1 5.3.2 5.3.3 menuboom decimal tree gegevensboom molecuul 5 7 9 11 (2*3)+((5*7)+(9*11)) berekenboom syntactische boom

9 bomen: begrippen

blad intern tak eindpunt inwendig lijn terminologie wortel beginpunt kind benedenbuur vader ouder bovenbuur broer nakomeling opvolger voorouder voorganger 10

terminologie 11 gelijkheid (isomorfie) (met wortel, ongeordend) relatie behoudt - takken - wortel - ordening waar van toepassing

nivo s diepte / hoogte nivo level 0 1 2 4 3 4 12

0 1 2 3 4 diepte / hoogte nivo level 4 nivo s technisch is er verschil tussen diepte en hoogte: je kunt van elke knoop kijken hoe ver die van de wortel af ligt, maar ook hoe ver van het verste blad. hier reken ik vanaf de wortel, en anders zeg ik het erbij. 13

deelboom Zij T = (V,A) een boom en u een punt in T. Dan is T u de deelboom van T bestaande uit u, al zijn nakomelingen en alle pijlen tussen deze punten. u 14

15 bomen: eigenschappen

definitie een boom is een samenhangende ongerichte graaf zonder cykels; 8.8 tree graphs een gewortelde boom heeft een speciaal punt (de wortel), en daarmee een richting (vanuit de wortel) 9.4 rooted trees 16

1. (ongerichte) boom samenhangend, acyclisch 2. maximaal acyclisch lijn erbij cykel 3. minimaal samenhangend lijn weg onsamenhangend karakterisatie 17 (Exercise 8.13)

bewijs 1 2 1. boom samenhangend, acyclisch 2. maximaal acyclisch lijn erbij cykel 3. minimaal samenhangend lijn weg onsamenhangend x y 1 2 maximaal 2 1 samenhangend 18

bewijs 1 2 1. boom samenhangend, acyclisch 2. maximaal acyclisch tak erbij cykel 1 2 voeg lijn {x,y} toe aan G. omdat G samenhangend is bestond er al een pad tussen x en y. samen met de lijn ontstaat een cykel. 2 1 we moeten nog laten zien dat G samenhangend is. kies willekeurige x en y, en we beredeneren dat x en y verbonden zijn. als er een lijn tussen x en y ligt, dan zijn ze verbonden. als er geen lijn is voeg die dan toe. volgens gegeven ontstaat een cykel. dat betekent dat er al een pad tussen x en y moest bestaan. x y 19

bewijs 1 3 1. boom samenhangend, acyclisch 3. minimaal samenh. lijn eraf twee comp n 1 3 verwijder lijn {x,y} uit G. nu is G niet langer samenhangend, want x en y zijn niet meer verbonden via pad: anders zou er oorspronkelijk een cykel geweest zijn. 3 1 we moeten nog laten zien dat G acyclisch is. stel G bevat wél een cykel. verwijderen van een lijn in de cykel levert nog steeds een samenhangende graaf, dus de graaf is dan niet minimaal samenhangend. (tegenspraak). G heeft dus geen cykels. 20

stelling Het aantal takken van [ongerichte] boom T = (V,E) is één minder dan het aantal knopen van T: E = V -1. V(ertices) E(dges) 21

stelling Het aantal takken van [ongerichte] boom T = (V,E) is één minder dan het aantal knopen van T: E = V -1. bewijs (één) V(ertices) E(dges) 0 1 2 3 22 kies willekeurig beginknoop, dan alle buren, etc. acyclisch, we vinden nooit eerdere bezochte knopen elke knoop heeft één inkomende tak, behalve

stelling Het aantal takken van boom T = (V,E) is één minder dan het aantal knopen van T: E = V -1. bewijs (alternatief) basis: enkele knoop inductiestap E 1 = V 1-1 E 2 = V 2-1 E=E 1 E 2 {t} V=V 1 V 2 23 optellen: E -1 = V -2

eigenschap (Exercise 8.38) een (samenhangende) graaf zonder cykels met ten minste één tak heeft ten minste twee knopen van graad 1 bewijs maximaal simpel pad alternatief: graden tellen (som van de graden is ) 24

bewijs Ex.8.38 een samenhangende graaf zonder cykels met ten minste één tak heeft ten minste twee knopen van graad 1 v u v π 25 bewijs. neem een maximaal simpel pad π in graaf G en laat u een eindpunt van π zijn. heeft knoop u nog andere buren? nee: want dan zou òf het pad langer worden, òf zou er een cykel ontstaan. dus: u heeft graad 1

alternatief bewijs Ex.8.38 een samenhangende graaf zonder cykels met ten minste één tak heeft ten minste twee knopen van graad 1 graden tellen: bewijs dmv. tegenspraak contradictie neem aan: G=(V,E) heeft max één knoop van graad 1 (en geen knopen van graad 0) Laat σ som van de graden van G, dan geldt (1) ten minste σ 1 + 2( V -1) (2) stelling σ = 2 E (3) voor bomen E = V -1 2 E = σ 1 + 2( V -1) = 1+2 E tegenspraak dus moeten er (ten minste) twee knopen van graad 1 zijn 26

karakterisatie *definitie: een boom is een samenhangende ongerichte graaf zonder cykels *eigenschap: T = (V,E) dan E = V -1 Theorem 8.6 (Exercise 8.14) G is een graaf met n knopen. De volgende beweringen zijn equivalent: G is een boom (samenhangend, zonder cykels) G is zonder cykels, heeft n-1 takken G is samenhangend, heeft n-1 takken boom, kies twee uit: G is zonder cykels G is samenhangend G heeft n-1 takken 27

ch.10 binaire bomen 28 links/rechts

binair links en rechts is belangrijk in binaire bomen: zelfs als er maar één kind is maakt het uit of dat links dan wel rechts zit. het begrip is natuurlijk binnen de informatica want past bij een standaard implementatie van bomen met pointers. veelgebruikt, bv. binaire zoekbomen. 29

10.4 binaire boom: pointer structuur l r...... r l r...... l r l r l.......... 30

classificatie tree (graph) boom (als graaf) ongerichte boom rooted tree ordered rooted tree binary tree gewortelde boom gerichte boom (wortel naar bladeren) geordend en gericht (standaard boom?) binaire boom links en rechts (informatica!) 31

trees (free) trees rooted trees binary trees 32 http://mathworld.wolfram.com/

ζ 1 ^ ζ 2 v ζ 3 expressie a c trie s a e r t t a e 33 l k 0 A 0 B 0 1 1 1 D C code expr expr * term term term * fact fact fact b a a syntax bomen, bomen, bomen thur 16 mon tues fri sat wed sun binaire zoek 7 12 5 6 10 2 4 2 heap sat tues fri mon sun thur wed 2,3 boom

ζ 1 ^ ζ 2 v ζ 3 expressie 0 A 0 B 0 1 1 1 D C code bomen, bomen, bomen thur 16 mon tues fri sat wed sun binaire zoek 7 12 5 6 10 2 4 2 heap 10.8 s Huffman sat tues c expr 10.7 heap expr term a a e * 10.6 search fri trees mon wed term term * fact sun thur r t t a e fact fact b a a l k trie syntax 2,3 boom 34

bomen komen aan de orde bij de colleges Algoritmiek en Datastructuren. Huffman code: binaire representatie van letters zodat de boodschap minimale lengte heeft bij gegeven frequentie van de letters Zoekbomen: vind elk element, kleiner dan links, groter dan rechts Heap: ordening op prioriteit van boven naar beneden, om snel grootste element te vinden (en verwijderen). slimme algoritmen om elementen toe te voegen en te verwijderen 35

10.3 mooie vormen 0 1 16 A 0 B 0 1 C 1 D 7 12 5 6 10 2 4 2 complete boom 36 2-boom (volle boom) uitgebreide boom intern / extern

vormen vol: élke knoop is óf een blad of heeft twee kinderen. Er zijn dus geen knopen met één kind. Elke boom kan vol gemaakt worden door bij elk ontbrekend kind een speciaal blad aan te leggen. Ook de bladeren krijgen bladeren onder zich. (dit lijkt op het aangeven van de NIL-pointers in een pointer implementatie) compleet: voeg de kinderen nivo-voor-nivo toe, van links naar rechts. (past bij een array implementatie, maar dat leert u later ) 37

38 Donald E. Knuth TAoCP

Knuth says: a binary tree is a finite set of nodes which is either empty or consists of a root and two disjoint binary trees (called the left and the right subtrees of the root). 39 recursion!

donald knuth. held. (vraag me om te vertellen van de cheques ) 40

10.9 eerste kind, rechter broer 1 1 2 5 3 4 6 9 8 10 16 3 2 5 4 6 8 7 11 15 7 9 12 13 14 1 11 10 16 2 5 3 4 6 9 8 10 16 12 15 13 14 7 11 15 41 12 13 14

42 de eerste-kind rechter-broer (sorry, wij kennen geen onzijdig woord voor sibling, brusje wordt soms geprobeerd ) representatie vormt elke boom om in een binaire boom, links en rechts krijgen dan die nieuwe betekenis van kind en broer (resp.)

bomen: knopen ordenen p.238 Polish notation p.241 traversing binary trees 43

knopen ordenen aa bb i A cc ii B 5 dd C ee D 5 A aa bb i ii B C cc dd ee D aa i ii bb A B cc dd ee C D 5 44

knopen ordenen aa bb i A cc ii B 5 dd C inhoudsopgave ee D 5 A aa bb i ii B C cc dd ee D aa i ii bb A B cc dd ee C D 5 45 inhoud tellen (eerst de onderdelen)

preorde A B aa bb cc i ii volgorde 5 dd C ee D 5 A aa bb i ii B C cc dd ee D 46 eerst knoop, dan (subbomen van) kinderen

preorde aa bb i 2 3 4 5 A 6 7 ii nummering 9 1 B cc 5 8 10 dd C 12 11 ee D 1 2 3 4 5 6 7 8 9 10 11 12 5 A aa bb i ii B C cc dd ee D 47

omloopmethode: preorde aa bb i A cc ii B 5 dd C ee D 5 A aa bb i ii B C cc dd ee D 48

T a preorde T 1 T 2 T k recursieve definitie boom T deelbomen T 1, T 2,, T k van wortel pre(t) = wortel(t), pre(t 1 ), pre(t 2 ),, pre(t k ) 49 eerst knoop, dan (subbomen van) kinderen

preorde aa bb i A pre-ordening cc ii B 5 dd C ee D 5 A aa bb i ii B C cc dd ee D pre(t) = wortel(t), pre(t 1 ), pre(t 2 ),, pre(t k ) 50

postorde aa bb i A cc ii B 5 dd C ee D aa i ii bb A B cc dd ee C D 5 51 eerst (subbomen van) kinderen, dan knoop

postorde A B aa bb cc i ii Omloopmethode 5 dd C ee D aa i ii bb A B cc dd ee C D 5 52

bij binaire bomen symmetrische ordening 6 knoop tussen (subbomen van) kinderen 5 8 3 7 10 Omloopmethode 2 4 9 11 1 53 symm(t) = symm(t ), wortel(t), symm(t r )

wandelingen (1) preorde WLR (3) postorde LRW (2) symmetrisch LWR (bij binaire bomen) 54

wandelingen bij de omloopmethode zijn er voor binaire bomen drie natuurlijke momenten om (systematisch) een knoop te bezoeken, bij de eerste, tweede, of derde keer dat we een knoop tegenkomen. dat leidt dan tot pre-orde, symmetrische, en post-orde wandelingen. 55

intern: operatoren bladeren: waardes expressies + * + 2 3 * * 5 7 9 11 omloopmethode infix, volledig gehaakt ((2*3)+((5*7)+(9*11))) prefix Polish notation + * 2 3 + * 5 7 * 9 11 postfix reverse Polish 2 3 * 5 7 * 9 11 * + + 56 zonder haakjes! ariteit bekend

expressies + * + 2 3 * * infix, volledig gehaakt ((2*3)+((5*7)+(9*11))) haakjes ivm volgorde evt. voorrangsregels 5 7 9 11 prefix Polish notation + * 2 3 + * 5 7 * 9 11 postfix 2 3 * 5 7 * 9 11 * + + 57 géén haakjes (echt niet!)

recept prefix Polish notation + * 2 3 + * 5 7 * 9 11 van prefix naar infix: herhaal vervang @ x y (dwz operator + twee waardes) + door (x @ y) * + + * 2 3 + * 5 7 * 9 11 +(2*3)+(5*7)(9*11) +(2*3)((5*7)+(9*11)) 2 3 * * 5 7 9 11 58 ((2*3)+((5*7)+(9*11)))

recept postfix Polish notation 2 3 * 5 7 * 9 11 * + + van postfix naar infix: herhaal vervang x y @ (dwz operator + twee waardes) + door één nieuwe waarde aangegeven door haakjes * + 2 3 * 5 7 * 9 11 * + + (2*3) (5*7) (9*11) + + (2*3) ((5*7)+(9*11)) + 2 3 * * 5 7 9 11 59 ((2*3)+((5*7)+(9*11)))

expressies omloopmethode ζ 1 ^ ζ 2 v ζ 3 unair infix, waar nodig gehaakt 1 ( 2 3 ) prefix Polish notation 1 2 3 postfix 1 2 3 60 uniek te ontcijferen míts ariteit bekend van de operatoren

recursieve functies bij bomen basis blad x f(blad) = getalswaarde x recursie knoop @ f(knoop) = f(links) @ f(rechts) 61 vraag 6 + 1 5 1 5 2 + - 1 + 1 + -4 6 5 5 2 3 2 3 - + 3 2 4 3 2 4 3 antwoord

evaluatie + 6 1 5 + 1 5 2-1 + + -4 5 2 3 5-6 + 3 2 4 3 postorde evaluatie 62 6 5-4 2 1 5 + 1 2 3 + - + 2 4 + 3 - +

recursieve functies bij bomen basis blad f(blad) = 0 recursie knoop f(knoop) = 1+max{f(links),f(rechts)} 3 + + 4-2 63 1 + 1 5 0 0-1 + 0 2 1 1 2 3 0 0 + 3 2 4 0 0 0

basis blad al of niet gewonnen (bij beurt) recursie knoop winnend : niet-winnend kind ( verloren: kind winnend ) boom niet expliciet te veel knopen: boom knotten + evaluatie-functie spel-evaluaties x x 64 Algoritmiek, Kunstmatige Intelligentie

zwart winst rood verlies 6 Nim 5 4 4 3 3 2 3 2 2 1 2 1 1 0 2 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 65

66 end...