Estratto del documento

Introduzione all'analisi degli algoritmi

Un problema computazionale è definito dalle sue specifiche, che sono sostanzialmente la relazione tra possibili ingressi e uscite.

Una soluzione è costituita da un algoritmo. Un algoritmo è corretto quando "rispetta" la specifica del problema.

Correttezza degli algoritmi

Un algoritmo A si dice parzialmente corretto rispetto alla specifica S quando, per ogni ingresso che rispetta le pre-condizioni, se l’algoritmo termina, allora il risultato rispetta le post-condizioni.

Un algoritmo A si dice totalmente corretto rispetto alla specifica data se, per ogni ingresso che rispetta le pre-condizioni di S, l’algoritmo termina e l’uscita rispetta le post-condizioni.

La correttezza degli algoritmi è importante ma non ne assicura l'efficienza. Per valutare quanto sia efficace un algoritmo si possono seguire due strade:

  • La valutazione a posteriori delle prestazioni attraverso la misura delle risorse effettivamente adoperate dell'algoritmo;
  • L'analisi a priori dell'algoritmo stesso con strumenti analitici per prevederne le necessità in termini di risorse.

Prestazioni degli algoritmi

Con il termine prestazione (di un algoritmo) ci riferiamo ad una misura dell'efficienza del codice che lo implementa. Nella valutazione delle prestazioni si possono misurare il tempo effettivo di esecuzione del codice e la quantità di memoria adoperata durante l'esecuzione.

Per valutare le prestazioni, se non siamo in grado di controllare tutti i fattori che influenzano le prestazioni, possiamo riferirci ad un modello ed effettuare le nostre misure con strumenti matematici:

  • Il modello è la macchina astratta;
  • Gli strumenti di misura sono di seguito.

Efficienza e complessità

Una volta completata la soluzione corretta, bisogna quindi porsi il problema della sua efficienza nell'uso delle due risorse fondamentali: tempo e spazio. La complessità in tempo o spazio è una stima matematica del tempo o dello spazio necessario all'algoritmo per calcolare la risposta.

La complessità di un algoritmo si esprime per mezzo di una funzione matematica che dipende dalle dimensioni dell'input.

  • La dimensione di una specifica istanza è la misura dello spazio necessario per definirla;
  • La funzione che misura la complessità in tempo calcola il numero di passi elementari necessari per definire l'algoritmo;
  • Analogamente, la funzione che misura la complessità in spazio fornisce una stima della quantità di memoria necessaria per eseguire il calcolo.

La dimensione di un'istanza misura essenzialmente lo spazio necessario per rappresentare l'input ed è rappresentata da un numero intero positivo che co...

Anteprima
Vedrai una selezione di 1 pagina su 3
9 Algoritmi Pag. 1
1 su 3
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher ivyB di informazioni apprese con la frequenza delle lezioni di Programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Verona o del prof Solitro Ugo.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community