Python - Tipi di algoritmi
L'efficienza e l'accuratezza degli algoritmi devono essere analizzate per confrontarli e scegliere un algoritmo specifico per determinati scenari. Il processo di realizzazione di questa analisi è chiamato analisi asintotica. Si riferisce al calcolo del tempo di esecuzione di qualsiasi operazione in unità matematiche di calcolo. Ad esempio, il tempo di esecuzione di un'operazione viene calcolato come f (n) e può essere calcolato come g (n2) per un'altra operazione. Ciò significa che il tempo di esecuzione della prima operazione aumenterà linearmente con l'aumento di n e il tempo di esecuzione della seconda operazione aumenterà esponenzialmente all'aumentare di n. Allo stesso modo, il tempo di esecuzione di entrambe le operazioni sarà quasi lo stesso se n è significativamente piccolo.
Di solito, il tempo richiesto da un algoritmo rientra in tre tipi:
- Caso migliore: tempo minimo richiesto per l'esecuzione del programma.
- Caso medio: tempo medio necessario per l'esecuzione del programma.
- Caso peggiore: tempo massimo richiesto per l'esecuzione del programma.
Notazioni asintotiche
Di seguito sono riportate le notazioni asintotiche comunemente utilizzate per calcolare la complessità del tempo di esecuzione di un algoritmo.
- Ο Notazione
- Notazione Ω
- θ Notazione
Notazione Big Oh, Ο
La notazione Ο (n) è il modo formale per esprimere il limite superiore del tempo di esecuzione di un algoritmo. Misura la complessità temporale del caso peggiore o il tempo più lungo che un algoritmo può impiegare per completare.
Ad esempio, per una funzione f(n)
Ο(f(n)) = { g(n) : there exists c > 0 and n0 such that f(n) ≤ c.g(n) for all n > n0. }
Notazione Omega, Ω
La notazione Ω (n) è il modo formale per esprimere il limite inferiore del tempo di esecuzione di un algoritmo. Misura la migliore complessità temporale del caso o la migliore quantità di tempo che un algoritmo può impiegare per completare.
Ad esempio, per una funzione f(n)
Ω(f(n)) ≥ { g(n) : there exists c > 0 and n0 such that g(n) ≤ c.f(n) for all n > n0. }
Notazione Theta, θ
La notazione θ (n) è il modo formale per esprimere sia il limite inferiore che il limite superiore del tempo di esecuzione di un algoritmo. È rappresentato come segue:
θ(f(n)) = { g(n) if and only if g(n) = Ο(f(n)) and g(n) = Ω(f(n)) for all n > n0. }
Notazioni asintotiche comuni
Di seguito è riportato un elenco di alcune notazioni asintotiche comuni:
costante | - | Ο (1) |
logaritmico | - | Ο (log n) |
lineare | - | Ο (n) |
n log n | - | Ο (n log n) |
quadratico | - | Ο (n 2 ) |
cubo | - | Ο (n 3 ) |
polinomio | - | n Ο (1) |
esponenziale | - | 2 Ο (n) |