Sei sulla pagina 1di 1

COMPLESSITA' COMPUTAZIONALE

14/07/20 13:33

In informatica, la teoria
della complessità
computazionale è una
branca della teoria della
computabilità che studia le
risorse minime necessarie
(principalmente tempo di
calcolo e memoria) per la
risoluzione di un problema.
Con complessità di un
algoritmo o efficienza di un
algoritmo ci si riferisce
dunque alle risorse di
calcolo richieste. I problemi
sono classificati in differenti
classi di complessità, in base
all'efficienza del migliore
algoritmo noto in grado di
risolvere quello specifico
problema.
(l'efficienza di una
procedura dipende sia da
chi l'implementa, ma anche
da quanto sia difficile e
complicato il problema da
risolvere.
I problemi posso essere
classificati in classi di
complessità.
Come si misurano le risorse?
Per misurare l'efficienza di
un algoritmo in maniera
univoca, bisogna definire
una metrica indipendente
dalle tecnologie utilizzate,
altrimenti uno stesso
algoritmo potrebbe avere
efficienza diversa a seconda
della tecnologia sulla quale
è eseguito. Per questo
motivo si usa fare
riferimento ad un modello
di calcolo generico, cioè la
Macchina di Turing.

Misurazione del Tempo:


Data una macchina di Turing
M, si dice che M opera in
tempo f(n) se f(n) è il
massimo numero di passi
necessari alla macchina per
produrre il risultato su input
x di lunghezza n.

Esempio:
//10.55

Misurazione dello Spazio:


data una macchina di Turing
M, si dice che M opera in
spazio f(n) se f(n) è il
massimo numero di celle
visitate durante una
computazione su un input x
di lunghezza n, oltre a quelle
occupate dall'input .

Caso ottimo, peggiore e


medio:
Si distinguono alcuni casi: il
caso ottimo, peggiore e
medio.
• Caso ottimo: in cui i
dati sono i migliori
dati possibili per
l'algoritmo, cioè quelli
che richiedono meno
elaborazioni per
essere trattati.
• Caso peggiore:
prevede i dati che
richiedono il massimo
numero di passi per
l'algoritmo.
• Caso medio: quello
più utile da analizzare
perché fornisce un
reale indicatore della
complessità
dell'algoritmo, ma
tendenzialmente è
anche quello più
complesso dato che
spesso è difficile
determinare quali
sono i dati medi. A
volte, per risolvere il
problema del caso
medio si preferisce
eseguire molto
simulazioni
dell'algoritmo e poi,
dai tempi ottenuti con
le simulazioni,
estrarre una formula
che si approssimi
adeguatamente
all'andamento medio.

Potrebbero piacerti anche