Delimitazioni inferiori e superiori
alla complessita’ di un problema
Alcune tecniche
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Nozioni preliminari
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Una nozione preliminare:
albero k-ario completo
Un
Unalbero
alberok-ario
k-arioèècompleto
completose
setutti
tuttiiinodi
nodiinterni
interni
hanno
hannokkfigli,
figli,eetutte
tuttelelefoglie
fogliesono
sonosullo
sullostesso
stessolivello
livello
Quanti nodi sul
livello m?
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
1
Un
Unalbero
alberok-ario
k-arioèècompleto
completose
setutti
tuttiiinodi
nodiinterni
interni
hanno
hannokkfigli,
figli,eetutte
tuttelelefoglie
fogliesono
sonosullo
sullostesso
stessolivello
livello
Livello 0:
1
(la radice)
Livello 1:
k
(i figli della radice)
Livello 2:
k⋅k = k2
La prova è per
induzione su m
…
Livello m:
km
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Un
Unalbero
alberok-ario
k-arioèècompleto
completose
setutti
tuttiiinodi
nodiinterni
interni
hanno
hannokkfigli,
figli,eetutte
tuttelelefoglie
fogliesono
sonosullo
sullostesso
stessolivello
livello
Proprieta’:
Proprieta’:
••lelefoglie
fogliedi
diun
unalbero
alberok-ario
k-ario
h
completo
completodi
dialtezza
altezzahhsono
sonokkh
••se
seun
unalbero
alberok-ario
k-ariocompleto
completoha
hann
foglie,
foglie,allora
alloraha
haaltezza
altezzahh==log
logkknn
Quanti sono i nodi
interni se l’altezza è h?
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Un
Unalbero
alberok-ario
k-arioèècompleto
completose
setutti
tuttiiinodi
nodiinterni
interni
hanno
hannokkfigli,
figli,eetutte
tuttelelefoglie
fogliesono
sonosullo
sullostesso
stessolivello
livello
h −1
Nodi interni = 1 + k + k 2 + K + k h −1 = ∑ k i =
i =0
k h −1
k −1
Allora la cardinalità di un albero
k-ario completo di altezza h è
k h +1 − 1
k −1
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
2
Un’altra nozione preliminare:
albero binario quasi completo
Qual è
l’altezza se le
foglie sono n?
Un albero binario quasi
completo è completo
sino al penultimo
livello
2 h −1 < n ≤ 2 h
quindi h = log n 
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Delimitazioni inferiori e superiori
alla complessita’ di un problema
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Delimitazione superiore alla
complessità di un problema
Qual è un tempo di calcolo
sufficiente alla risoluzione di
un dato problema?
Confine
Confinesuperiore
superiorealla
allacomplessità
complessitàdi
diun
unproblema:
problema:
un
unconfine
confinesuperiore
superioreper
perililtempo
tempodi
dicalcolo
calcolo(nel
(nelcaso
caso
peggiore)
peggiore)di
diun
unalgoritmo
algoritmoche
cherisolve
risolveililproblema
problema
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
3
g
T
∃T . T (n) ∈ O( g (n))
Confine
Confinesuperiore
superiorealla
allacomplessità
complessitàdi
diun
unproblema:
problema:
un
unconfine
confinesuperiore
superioreper
perililtempo
tempodi
dicalcolo
calcolo(nel
(nelcaso
caso
peggiore)
peggiore)di
diun
unalgoritmo
algoritmoche
cherisolve
risolveililproblema
problema
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Un esempio “importante”:
il problema dell’ordinamento
Il tempo di InsertSort
nel caso peggiore è O(n2):
questo è allora un confine
superiore per il problema
dell’Ordinamento!
Non si può fare di
meglio?
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Delimitazione inferiore alla
complessita’ di un problema
Qual è un tempo di calcolo
necessario alla risoluzione del
problema dell’Ordinamento?
Delimitazione
Delimitazioneinferiore
inferiorealla
allacomplessità
complessitàdi
diun
unproblema:
problema:un
un
confine
confineinferiore
inferioreper
periitempi
tempidi
dicalcolo
calcolo(nel
(nelcaso
casopeggiore)
peggiore)di
di
tutti
glialgoritmi
algoritmiche
cherisolvono
risolvonoililproblema
problema
tuttigli
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
4
T1
…
Tk
…
∀Ti . Ti ( n) ∈ Ω( f (n))
f
Delimitazione
Delimitazioneinferiore
inferiorealla
allacomplessità
complessitàdi
diun
unproblema:
problema:un
un
confine
confineinferiore
inferioreper
periitempi
tempidi
dicalcolo
calcolo(nel
(nelcaso
casopeggiore)
peggiore)di
di
tutti
tuttigli
glialgoritmi
algoritmiche
cherisolvono
risolvonoililproblema
problema
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Alcune tecniche di base
• Dimensione dei dati: quando è necessario
esaminare tutti i dati in ingresso, ovvero generare
tutti i dati in uscita.
Es. La moltiplicazione di due matrici quadrate di ordine
n richiede l’ispezione di 2n2 = Ω(n2) entrate.
• Eventi contabili: quando c’è un evento la cui
ripetizione un numero contabile di volte sia
necessaria alla soluzione del problema.
Es. La determinazione del massimo tra n elementi
richiede n − 1 = Ω(n) confronti, in cui altrettanti
elementi non massimi risultino minori.
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
La tecnica dell’albero delle decisioni
In molti problemi un albero può rappresentare un
algoritmo che risolve il problema:
• i nodi interni rappresentano operazioni di confronto o
comunque di scelta tra 2 (o piu’) alternative possibili,
• le foglie rappresentano i possibili output (determinati
in base ad una sequenza di scelte).
I rami rappresentano quindi particolari esecuzioni.
L’albero di decisione che minimizza l’altezza
fornisce un confine inferiore al numero di
decisioni necessarie nel caso peggiore.
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
5
Esempio: usiamo la tecnica dell’albero delle decisioni
per il problema dell’ordinamento di 3 elementi (1)
a:b
a<b
b<c
b:c
c<b
a, b, c
b<c
a:c
a<c
b:c
a:c
c<a
a, c, b
n=3
b<a
c, a, b
a<c
c<b
b, c, a
c<a
b, a, c
b, c, a
h=3
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Esempio: usiamo la tecnica dell’albero delle decisioni
per il problema dell’ordinamento di 3 elementi (2)
a:b
a<b
b<c
b:c
c<b
a, b, c
b<c
a:c
a<c
a, c, b
n=3
b<a
b:c
a:c
c<a
c, a, b
a<c
b, a, c
c<b
c, b, a
c<a
b, c, a
h = log 2 3! = 3
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Una delimitazione inferiore per il
problema dell’ordinamento
• Le permutazioni di n oggetti sono n!
• L’albero delle decisioni per il
problema dell’ordinamento ha allora n!
foglie, ed ha altezza minima se è quasi
completo
• Dunque un confine inferiore per
l’Ordinamento è Ω(log n!)
Che cos’e’
log(n!) ?
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
6
Che cos’è log(n!) ?
log 2 n!≈ log 2
(
La formula di Stirling
)
2πn (n / e) n = log 2 2πn + n log 2 (n / e)
Allora
log(n!) ∈ Θ(n log n)
Ve la ricordavate
la formula di
Stirling?
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Algoritmi ottimi
Un
Unalgoritmo
algoritmoèèottimo
ottimose
seililsuo
suotempo
tempodi
dicalcolo
calcoloèèO(f(n))
O(f(n))
ed
edililproblema
problemache
cherisolve
risolveèèΩ(f(n))
Ω(f(n))
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Domande…
Un confine inferiore per il
problema dell’ordinamento è
Ω(n log n). Un confine
superiore è O(n2). Possiamo
colmare questa distanza?
Se tra qualche giorno qualcuno vi dicesse
che ha trovato un algoritmo di ordinamento
che permettere di ordinare l’insieme
{1,…,n} con complessita’ O(n) nel caso
pessimo, che cosa gli rispondereste?
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
7
Una disgressione (per chi non si
ricorda della formula di Stirling)
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Disgressione: rispondiamo alla domanda “Che cos’è
log(n!) ?” senza usare la formula di Stirling (1)
log 2 (n!) = log 2 (1⋅ 2 ⋅ K ⋅ (n − 1) ⋅ n)
= log 2 1 + log 2 2 + K + log 2 (n − 1) + log 2 n
≤ log 2 n + K + log 2 n
144
42444
3
n
Allora
log(n!) ∈ O(n log n)
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Disgressione: rispondiamo alla domanda “Che cos’è
log(n!) ?” senza usare la formula di Stirling (2)
Se lim
n →∞
log 2 (n!)
= l < ∞ allora log 2 (n!) ∈ Θ(n log 2 n)
n log 2 n
Proviamolo!
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
8
Disgressione: rispondiamo alla domanda “Che cos’è
log(n!) ?” senza usare la formula di Stirling (3)
5
4
∫
n
1
n
log 2 x dx ≤ ∑ log 2 k ≤ ∫
n +1
2
k =2
log 2 x dx
3
log 2 x
2
n
∑ log
1
k =2
2
4
6
8
2
k = log 2 (n!)
10
Si consideri ad es. n=4
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Disgressione: rispondiamo alla domanda “Che cos’è
log(n!) ?” senza usare la formula di Stirling (4)
∫ log
∫
n
1
2
x dx = x log 2 x − x log 2 e = F ( x)
Integrando
per parti
log 2 x dx = F (n) − F (1) = n log 2 n − nd + d ≤ log(n!)
≤∫
n +1
2
log 2 x dx = F (n + 1) − F ( 2)
Posto
d = log2 e
= (n + 1) log 2 (n + 1) − (n − 1)d − 2
Usando il teorema
fondamentale del
Calcolo
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Disgressione: rispondiamo alla domanda “Che cos’è
log(n!) ?” senza usare la formula di Stirling (5)
n log 2 n − nd + d ≤ log 2 (n!) ≤ (n + 1) log 2 (n + 1) − (n − 1)d − 2
se e solo se, dividendo per n log2 n
d
d
log(n!) ( n + 1) log(n + 1)
1
d −2
1−
+
≤
≤
−
+
log n n log n n log n
n log n
log n n log n
 log(1 + 1 / n) 
1
d −2
−
+
= (1 + 1 / n)1 +
log n  log n n log n

entrambi → 1 se n → ∞ quindi lim
n →∞
log(n!)
=1
n log n
log(n!) ∈ Θ(n log n)
F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
9