karakterisatie van (gewortelde) bomen beslissingsbomen ... - caagt
karakterisatie van (gewortelde) bomen beslissingsbomen ... - caagt
karakterisatie van (gewortelde) bomen beslissingsbomen ... - caagt
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
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 />
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 />
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 />
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 />
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 />
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 />
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 />
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 />
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