Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Complessità
P. Massazza1
1 Dipartimento di Scienze Teoriche e Applicate
Università degli Studi dell’Insubria
Varese Italy
Formalizzazione di problemi
Complessità
Outline
1 Formalizzazione di problemi
2 Complessità
Formalizzazione di problemi
Complessità
Outline
1 Formalizzazione di problemi
2 Complessità
Formalizzazione di problemi
Complessità
Istanze e soluzioni
Ad ogni problema Π possiamo associare una funzione
fΠ : DΠ 7→ SΠ
dove
DΠ = insieme delle istanze di Π
SΠ = insieme delle risposte di Π
∀x ∈ DΠ fΠ (x) = soluzione del problema Π relativa a x
Esempio [Primalità]
Il problema Primalità consiste nel decidere se un numero intero
è primo o meno.
fPrimalità : N 7→ {0, 1}
Correttezza e algoritmi
Ad ogni algoritmo ALG associamo una funzione (parziale)
dove
InALG = insieme degli ingressi di ALG
OutALG = insieme delle uscite di ALG
Definizione
ALG risolve Π se e solo se
InALG = DΠ
OutALG = SΠ
∀x ∈ DΠ fΠ (x) = ΦALG (x)
Outline
1 Formalizzazione di problemi
2 Complessità
Formalizzazione di problemi
Complessità
Complessità
Per ogni algoritmo ALG con funzione associata
WALG : InALG 7→ N
Complessità
Esprimiamo la complessità di un algoritmo ALG attraverso una
funzione
TALG : N 7→ N
che indica per ogni valore intero n la quantità di tempo/spazio
impiegata dall’algoritmo per elaborare dati di dimensione n
Fatto
Un algoritmo può comportarsi in modo sensibilmente differente
anche per istanze del problema aventi ugual dimensione
Esempio
È facile modificare un qualunque algoritmo di ordinamento in
modo che riconosca sequenze già ordinate, comportandosi su
tali istanze in tempo lineare, T (n) ≈ cn, c costante
Formalizzazione di problemi
Complessità
Complessità
Esprimiamo la complessità di un algoritmo ALG attraverso una
funzione
TALG : N 7→ N
che indica per ogni valore intero n la quantità di tempo/spazio
impiegata dall’algoritmo per elaborare dati di dimensione n
Fatto
Un algoritmo può comportarsi in modo sensibilmente differente
anche per istanze del problema aventi ugual dimensione
Esempio
È facile modificare un qualunque algoritmo di ordinamento in
modo che riconosca sequenze già ordinate, comportandosi su
tali istanze in tempo lineare, T (n) ≈ cn, c costante
Formalizzazione di problemi
Complessità
Complessità
Esprimiamo la complessità di un algoritmo ALG attraverso una
funzione
TALG : N 7→ N
che indica per ogni valore intero n la quantità di tempo/spazio
impiegata dall’algoritmo per elaborare dati di dimensione n
Fatto
Un algoritmo può comportarsi in modo sensibilmente differente
anche per istanze del problema aventi ugual dimensione
Esempio
È facile modificare un qualunque algoritmo di ordinamento in
modo che riconosca sequenze già ordinate, comportandosi su
tali istanze in tempo lineare, T (n) ≈ cn, c costante
Formalizzazione di problemi
Complessità
w (n)]
Definizione [TALG
La complessità caso peggiore di un algoritmo ALG è una
w (n) che fornisce il comportamento dell’algoritmo
funzione TALG
considerando per ogni dimensione l’istanza più sfavorevole
b (n)]
Definizione [TALG
La complessità caso migliore di un algoritmo ALG è una
b (n) che fornisce il comportamento dell’algoritmo
funzione TALG
considerando per ogni dimensione l’istanza più favorevole
Formalizzazione di problemi
Complessità
w (n)]
Definizione [TALG
La complessità caso peggiore di un algoritmo ALG è una
w (n) che fornisce il comportamento dell’algoritmo
funzione TALG
considerando per ogni dimensione l’istanza più sfavorevole
b (n)]
Definizione [TALG
La complessità caso migliore di un algoritmo ALG è una
b (n) che fornisce il comportamento dell’algoritmo
funzione TALG
considerando per ogni dimensione l’istanza più favorevole
Formalizzazione di problemi
Complessità
Complessità in media
a (n)]
Definizione [TALG
La complessità in media di un algoritmo ALG è una funzione
a (n) che fornisce il comportamento medio dell’algoritmo,
TALG
calcolato eseguendo la media dei comportamenti sulle istanze
aventi ugual dimensione,
X
a
TALG (n) = pi ci
|i|=n
dove:
pi = probabilità dell’istanza i
ci = quantità di risorse impiegate per elaborare l’istanza i
Formalizzazione di problemi
Complessità
Complessità in media
Indicando con Inn l’insieme dei dati in ingresso di dimensione n,
si ha:
X X
a
TALG (n) = pi ci = Pk k
i∈Inn k ≥0
dove X
Pk = pi
i∈Inn
ci =k
Ponendo
σn,k = ]{i ∈ Inn | ci = k }
e ipotizzando che tutte le istanze in Inn siano equiprobabili,
otteniamo:
X σn,k 1 X
a
TALG (n) = k = k σn,k
]Inn ]Inn
k k
Formalizzazione di problemi
Complessità
Complessità in media
Indicando con Inn l’insieme dei dati in ingresso di dimensione n,
si ha:
X X
a
TALG (n) = pi ci = Pk k
i∈Inn k ≥0
dove X
Pk = pi
i∈Inn
ci =k
Ponendo
σn,k = ]{i ∈ Inn | ci = k }
e ipotizzando che tutte le istanze in Inn siano equiprobabili,
otteniamo:
X σn,k 1 X
a
TALG (n) = k = k σn,k
]Inn ]Inn
k k
Formalizzazione di problemi
Complessità
Complessità: esempi
Complessità: esempi
Complessità: esempi
Complessità: esempi
Fatto
La complessità asintotica di un algoritmo è un elemento di
primaria importanza nella costruzione di un sistema (Hw + Sw)
per la soluzione di un problema
Formalizzazione di problemi
Complessità
Complessità: esempi
Fatto
La complessità asintotica di un algoritmo è un elemento di
primaria importanza nella costruzione di un sistema (Hw + Sw)
per la soluzione di un problema
Formalizzazione di problemi
Complessità
Complessità: esempi
Fatto
Non è detto che un algoritmo A1 con complessità asintotica
minore di quella di un altro algoritmo A2 (per lo stesso
problema) si comporti meglio per ogni dimensione.
Esempio
Siano A1 e A2 due algoritmi tali che
Complessità: esempi
Fatto
Non è detto che un algoritmo A1 con complessità asintotica
minore di quella di un altro algoritmo A2 (per lo stesso
problema) si comporti meglio per ogni dimensione.
Esempio
Siano A1 e A2 due algoritmi tali che