Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Osservazione
Dimostrazione alternativa `e per induzione su n; per`
o `e resa
complicata dal fatto che n pu`
o assumere solo valori dispari (...)
n pari
10
Dimostrazione di 2)
Propriet`a: h + 1 m 2h , cio`e: m 2h e m
Consideriamo m 2h
h+1
Dimostrazione
Per induzione su h
base: h = 0 ) m = 1: OK
passo induttivo: fissiamo h
0
Hp. induttiva: propriet`a vale 8 albero di altezza h0 h
Consideriamo T di altezza h + 1 1
r"
h1"
T1"
h2"
h+1"
T2"
h+1="max${"h1","h2"}"+"1""(h="max${"h1","h2"}")"
11
Consideriamo m 2h
Dimostrazione (continua)
r"
h1"
T1"
h2"
h+1"
T2"
h+1="max${"h1","h2"}"+"1""(h="max${"h1","h2"}")"
mi = num. foglie in Ti , i = 1, 2 ) m = m1 + m2
Nota
Un albero binario (proprio) ha altezza h 2 (log n) 2 (log m)
12
Esercizio
Dimostrare che in un albero binario T (non necessariamente
proprio) con x nodi interni e y foglie, vale
y x +1
Risoluzione
No induzione
se T `
e proprio ) OK
set T non `
e proprio lo rendo tale aggiungendo foglie:
y ! y0 > y ) y0 = x + 1
13
Esercizio
Dimostrare che se un albero binario T ha x nodi interni e
y = x + 1 foglie allora `e proprio.
Risoluzione
Per assurdo. ESERCIZIO PER CASA
14
15
m) + 1
Risoluzione
Induzione su h = 0.
base: h = 0 ) OK
passo induttivo: fissiamo h
0
Hp. induttiva: propriet`
a vale 8 albero di altezza h0 h
Consideriamo T di altezza h + 1 1
r"
T1"
m
T3"
T2"
m1 + m 2 + m 3
(hp.ind.)
2(n1 + n2 + n3 + 1)
2(n1
m1 ) + 1 + 2(n2
Ti":""ni"nodi,"mi"foglie","i"=1,2,3"
"
m"="m1"+"m2"+"m3""
"
n"="n1"+"n2"+"n3"+1""
m2 ) + 1 + 2(n3
2(m1 + m2 + m3 ) + 1 = 2(n
m3 ) + 1
m) + 1
16
h"
"m"="h"+1""
"n""m"="h"
"n"="2h"+1""
"h"="(n+1)/2"
!m!=!2h!
!n!=!2h+1!(!1!!
!n!!m!=!2h(1! !h!=!log2(n+1)!(!1!
2h!
17
(9 3)))
18
Esempio
*"
&"
+"
15"
x"
7"
"
9"
3"
19
+"
!"
15"
3"
7"
Osservazione
Nei compilatori
Espressione)
(notazione)
inssa)))
ParseTree)
Sequenza)di)operazioni)
facilmente)calcolabile)a)
run;me)(e.g.,)notazione)
pos?issa))
Type)checking,)veriche,)
oDmizzazioni)
20
Osservazioni
T .addRoot(ei ): metodo della classe LinkedBinaryTree che
Esempio: ((15 + x) (7
(9 3)))
*"
7"
x"
15"
+"
+"
15"
15"
"
*"
+"
15"
15"
x"
3"
9"
*"
+"
+"
x"
PARSE"TREE"
"
15"
*"
15"
x"
*"
+"
"
x"
7"
"
9"
3"
22