03.07.2013 Views

karakterisatie van (gewortelde) bomen beslissingsbomen ... - caagt

karakterisatie van (gewortelde) bomen beslissingsbomen ... - caagt

karakterisatie van (gewortelde) bomen beslissingsbomen ... - caagt

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Bomen<br />

<strong>karakterisatie</strong> <strong>van</strong> (<strong>gewortelde</strong>) <strong>bomen</strong><br />

beslissings<strong>bomen</strong> / complexiteit sorteren<br />

<strong>bomen</strong> en recursie<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.1/21


Inleiding<br />

Definities<br />

woud<br />

boom<br />

scharniertop / toppensnede<br />

brug / bogensnede<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.2/21


Scharnierpunten en bruggen<br />

Stelling 1.7.9<br />

zij G samenhangende graaf<br />

boog e is brug <strong>van</strong> G a.s.a. e niet op een cykel<br />

in G ligt<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.3/21


Scharnierpunten en bruggen<br />

Stelling 1.7.9<br />

zij G samenhangende graaf<br />

boog e is brug <strong>van</strong> G a.s.a. e niet op een cykel<br />

in G ligt<br />

Gevolg<br />

elke boog <strong>van</strong> boom is een brug<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.3/21


Karakterisatie <strong>van</strong> <strong>bomen</strong><br />

Stelling 6.1.1: equivalente uitspraken (n toppen)<br />

1. G is boom<br />

2. G heeft geen cykels en bevat n − 1 bogen<br />

3. G samenhangend en bevat n − 1 bogen<br />

4. G samenhangend en elke boog een brug<br />

5. elke 2 toppen <strong>van</strong> G verbonden door precies<br />

1 pad<br />

6. G heeft geen cykels en voor elke nieuwe<br />

boog e heeft G + e precies 1 cykel<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.4/21


Gewortelde <strong>bomen</strong><br />

Definitie<br />

gerichte boom: gerichte graaf, onderliggende<br />

graaf is boom<br />

<strong>gewortelde</strong> boom: gerichte boom met<br />

speciale top r, zodat er voor elke top v een<br />

r-v-pad is<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.5/21


Gewortelde <strong>bomen</strong><br />

Definitie<br />

gerichte boom: gerichte graaf, onderliggende<br />

graaf is boom<br />

<strong>gewortelde</strong> boom: gerichte boom met<br />

speciale top r, zodat er voor elke top v een<br />

r-v-pad is<br />

Stelling 6.1.6<br />

gerichte boom T is <strong>gewortelde</strong> boom a.s.a.<br />

T heeft top r met ingraad 0<br />

alle andere toppen ingraad 1<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.5/21


Gewortelde <strong>bomen</strong><br />

Terminologie<br />

kinderen en ouder <strong>van</strong> een top<br />

interne toppen en bladeren<br />

pad <strong>van</strong> wortel naar een blad<br />

diepte/hoogte <strong>van</strong> boom<br />

k-aire boom<br />

binaire boom, linkerkind en rechterkind<br />

complete binaire <strong>bomen</strong><br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.6/21


Eigenschappen <strong>van</strong> binaire <strong>bomen</strong><br />

Stelling 6.1.23<br />

zij T binaire boom met n toppen en hoogte h<br />

dan h ≥ ⌈log 2( n+1<br />

2 )⌉<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.7/21


Eigenschappen <strong>van</strong> binaire <strong>bomen</strong><br />

Stelling 6.1.23<br />

zij T binaire boom met n toppen en hoogte h<br />

dan h ≥ ⌈log 2( n+1<br />

2 )⌉<br />

Stelling 6.1.24<br />

zij T binaire boom met b bladeren en hoogte h<br />

dan h ≥ log 2 b<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.7/21


Beslissings<strong>bomen</strong> /<br />

Ondergrens voor<br />

complexiteit <strong>van</strong> sorteren<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.8/21


Ondergrens voor sorteren<br />

Sorteeralgoritme gebaseerd op vergelijkingen<br />

gebruikt geen andere informatie over<br />

elementen dan vergelijken <strong>van</strong> elementen<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.9/21


Ondergrens voor sorteren<br />

Sorteeralgoritme gebaseerd op vergelijkingen<br />

gebruikt geen andere informatie over<br />

elementen dan vergelijken <strong>van</strong> elementen<br />

Stelling<br />

beschouw sorteeralgoritme gebaseerd op<br />

vergelijkingen<br />

zij C(n) = # vergelijkingen om n elementen te<br />

sorteren, in slechtste geval<br />

dan C(n) = Ω(n log n)<br />

Bewijs: via beslissings<strong>bomen</strong> Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.9/21


Beslissings<strong>bomen</strong><br />

Wat?<br />

<strong>gewortelde</strong> boom<br />

binair of ternair<br />

voorstellen algoritme met reeks vergelijkingen<br />

tussen elementen<br />

bv. sorteeralgoritme, zoekalgoritme<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.10/21


Beslissings<strong>bomen</strong><br />

Wat?<br />

<strong>gewortelde</strong> boom<br />

binair of ternair<br />

voorstellen algoritme met reeks vergelijkingen<br />

tussen elementen<br />

bv. sorteeralgoritme, zoekalgoritme<br />

interne toppen: vergelijkingen door algoritme<br />

bladeren: mogelijke outputs <strong>van</strong> algoritme<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.10/21


Bewijs ondergrens voor sorteren<br />

Sorteeralgoritme voorstellen door binaire<br />

beslissingsboom T<br />

interne top is vergelijking <strong>van</strong> 2 elementen<br />

<strong>van</strong> de vorm ai < aj<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.11/21


Bewijs ondergrens voor sorteren<br />

Sorteeralgoritme voorstellen door binaire<br />

beslissingsboom T<br />

interne top is vergelijking <strong>van</strong> 2 elementen<br />

<strong>van</strong> de vorm ai < aj<br />

linkertak wordt gevolgd als vgl. waar is<br />

anders wordt rechtertak gevolgd<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.11/21


Bewijs ondergrens voor sorteren<br />

Sorteeralgoritme voorstellen door binaire<br />

beslissingsboom T<br />

interne top is vergelijking <strong>van</strong> 2 elementen<br />

<strong>van</strong> de vorm ai < aj<br />

linkertak wordt gevolgd als vgl. waar is<br />

anders wordt rechtertak gevolgd<br />

bladeren zijn gesorteerde rijen<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.11/21


Voorbeeld: insertionsort (a, b,c)<br />

abc<br />

abc<br />

b


Bewijs ondergrens (2)<br />

Verband tussen # stappen in algoritme en<br />

beslissingsboom<br />

reeks vergelijkingen door algoritme is pad <strong>van</strong><br />

wortel naar blad in beslissingsboom<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.13/21


Bewijs ondergrens (2)<br />

Verband tussen # stappen in algoritme en<br />

beslissingsboom<br />

reeks vergelijkingen door algoritme is pad <strong>van</strong><br />

wortel naar blad in beslissingsboom<br />

slechtste geval voor algoritme is langste<br />

dergelijk pad<br />

m.a.w. C(n) = h(T), d.i. hoogte <strong>van</strong> T<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.13/21


Bewijs ondergrens (3)<br />

Bepalen hoogte <strong>van</strong> beslissingsboom<br />

aantal bladeren is n!<br />

want = # mogelijke permutaties <strong>van</strong> n el.<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.14/21


Bewijs ondergrens (3)<br />

Bepalen hoogte <strong>van</strong> beslissingsboom<br />

aantal bladeren is n!<br />

want = # mogelijke permutaties <strong>van</strong> n el.<br />

hoogte <strong>van</strong> boom met m bladeren ≥ log 2(m)<br />

stelling 6.1.24<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.14/21


Bewijs ondergrens (3)<br />

Bepalen hoogte <strong>van</strong> beslissingsboom<br />

aantal bladeren is n!<br />

want = # mogelijke permutaties <strong>van</strong> n el.<br />

hoogte <strong>van</strong> boom met m bladeren ≥ log 2(m)<br />

stelling 6.1.24<br />

log 2(m) = log 2(n!) = Ω(n log n)<br />

zie hulpstelling verder<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.14/21


Bewijs ondergrens (3)<br />

Bepalen hoogte <strong>van</strong> beslissingsboom<br />

Dus<br />

aantal bladeren is n!<br />

want = # mogelijke permutaties <strong>van</strong> n el.<br />

hoogte <strong>van</strong> boom met m bladeren ≥ log 2(m)<br />

stelling 6.1.24<br />

log 2(m) = log 2(n!) = Ω(n log n)<br />

zie hulpstelling verder<br />

C(n) = h(T) ≥ log 2(n!) = Ω(n log n)<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.14/21


Bewijs hulpstelling<br />

Er geldt: log 2(n!) = Θ(n log n)<br />

log 2(n!) = log 2 n + log 2(n − 1) + · · · + log 2 1<br />

≤ log 2 n + log 2 n + · · · + log 2 n<br />

= n log 2 n<br />

log 2(n!) = log 2 n + log 2(n − 1) + · · · + log 2 1<br />

≥ log 2 n + log 2(n − 1) + · · · + log 2(⌈n/2⌉)<br />

≥ log 2(⌈n/2⌉) + · · · + log 2(⌈n/2⌉)<br />

= ⌈(n + 1)/2⌉ × log 2(⌈n/2⌉)<br />

≥ (n/2) log 2(n/2) = (n/2) log 2 n − n/2<br />

≥ (n log 2 n)/4 voor n ≥ 4<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.15/21


Bomen en recursie<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.16/21


Bepalen # toppen in binaire boom<br />

Pseudocode<br />

Input: een binaire boom T met wortel w<br />

Output: het aantal toppen G(T) in T<br />

1: if w = null then<br />

2: return 0<br />

3: else<br />

4: return 1 + G(w.links) + G(w.rechts)<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.17/21


Bepalen hoogte <strong>van</strong> binaire boom<br />

Pseudocode<br />

Input: een binaire boom T met wortel w<br />

Output: de hoogte H(T) <strong>van</strong> T<br />

1: if w = null then<br />

2: return −1<br />

3: else<br />

4: return<br />

1 + max(H(w.links),H(w.rechts))<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.18/21


Boom doorlopen in preorde<br />

Pseudocode<br />

Input: binaire boom T met wortel w<br />

1: behandel component w<br />

2: if w.links = null then<br />

3: doorloop w.links in preorde<br />

4: if w.rechts = null then<br />

5: doorloop w.rechts in preorde<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.19/21


Boom doorlopen in postorde<br />

Pseudocode<br />

Input: binaire boom T met wortel w<br />

1: if w.links = null then<br />

2: doorloop w.links in postorde<br />

3: if w.rechts = null then<br />

4: doorloop w.rechts in postorde<br />

5: behandel component w<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.20/21


Boom doorlopen in inorde<br />

Pseudocode<br />

Input: binaire boom T met wortel w<br />

1: if w.links = null then<br />

2: doorloop w.links in inorde<br />

3: behandel component w<br />

4: if w.rechts = null then<br />

5: doorloop w.rechts in inorde<br />

Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.21/21

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!