Estratto del documento

ANALISI DI CORRETTEZZA E DI COMPLESSITÀ DEGLI ALGORITMI

Un algoritmo è una sequenza finita di passi che porta alla soluzione di un problema.

Il suo compito è trasformare l'insieme dei dati in ingresso (istantanei) nell'insieme di dati di uscita. Un algoritmo è corretto quando per ogni istanza produce un risultato corretto.

Un algoritmo, in diversi di un programma, impegna quest'ultimo e la traduzione dell'algoritmo in un linguaggio di programmazione.

Vedremo che l'efficienza e la complessità di un algoritmo si misurano tramite il numero di operazioni, che viene espresso in funzione della dimensione del problema che stiamo affrontando.

PROBLEMA ORDINAMENTO:

Data una sequenza di n valori di ingresso (a1, a2, ..., an) determinare una permutazione (a1', a2', ..., an') della sequenza di ingresso c tale che a1' < a2' < ... < an'.

Il primo algoritmo che vediamo come soluzione a tale problema è il seguente:

INSERTION SORT

Si tratta di un algoritmo che ordina sul posto, cioè ordina i valori all'interno dell'array stesso, e non usa un numero costante di valori memorizzati al di fuori dell'array in ogni momento. Tale algoritmo procede considerando un valore alla volta e inserendolo nella corretta posizione tra i valori che lo precedono. Per fare ciò, tale algoritmo opera sul sottovettore già ordinato, spostando ogni elemento superiore ad esso nel vettore eseguendo confronti.

Il primo elemento iniziale (passo base) risulta essere già per sé ordinato, considera poi il sostovettore ordinata pari a due elementi, e li riordina, sostituendo tale sottosequenza ordinata all'interno del vettore, e così via.

Supponiamo di giungere al valore ej nella posizione j sapendo che i primi j-1 elementi sono ordinati. Come inseriamo ej in modo da ottenere una sequenza ordinata?

  • Nel primo caso al salvataggio in una locazione di memoria, poi confronto ej con tutti gli elementi precedenti a partire dal (j-1)-esimo. Si possono presentare due casi:
    • ej > ej-1 allora lascio ej nella posizione in cui si trovava e termino l'iterazione.
    • ej < ej-1 allora faccio scorrere ej verso destra, spingendolo nella posizione j+1 e passo a confrontare ej con ej-1.
  • Iterando tale procedimento trovo la posizione corretta in cui inserire ej.

ESMPIO:

  • 5 2 4 6 1 3
  • 6 2 4 6 1 3
  • Il primo elemento e già ordinato
  • 2 5 4 6 1 3
  • Salvo 2 in una locazione di memoria e poi lo confronto con 5. Poiché 2 < 5, sposto 5 verso destra e metto 2 nella prima posizione.
  • 2 5 4 6 1 3
  • 3 4 2 6 1 3
  • Salvo 4 in una locazione di memoria e poi lo confronto con 5. Poiché 4 < 5, sposto 5 verso destra. Confronto poi 4 con 2 ed essendo 2 < 4, memorizzo 4 nella posizione due.
  • 2 4 5 6 1 3

E così via.

OSS:

Ordinare sul posto significa non richiedere ulteriore memoria. L'algoritmo usa una quantità di memoria costante per effettuare le proprie operazioni.

ANALISI DI CORRETTEZZA E DI COMPLESSITÀ DEGLI ALGORITMI

Un algoritmo è una sequenza finita di passi che porta alla soluzione di un problema. Il suo compito è trasformare l'insieme dei dati in ingresso (istanza) nell'insieme di dati di uscita. Un algoritmo è corretto quando per ogni istanza produce un risultato corretto. Un algoritmo è diverso da un programma, in quanto quest'ultimo è la traduzione dell'algoritmo in un linguaggio di programmazione. Vedremo che l'efficienza e la complessità di un algoritmo si misurano tramite il numero di operazioni, che viene espresso in funzione della dimensione del problema che stiamo affrontando.

PROBLEMA ORDINAMENTO:

Data una sequenza di n valori di ingresso (a1, ..., an) determinare una permutazione (ai1, ..., ain) della sequenza di ingresso f.t. ai1 ≤ ai2 ≤ ... ≤ ain

Il primo algoritmo che vediamo come soluzione a tale problema è il seguente:

INSERTION SORT

Si tratta di un algoritmo che ordina sul posto, cioè ordina i valori all'interno dell'array stesso, con al più un numero costante di valori memorizzati al di fuori dell'array in ogni momento. Tale algoritmo procede considerando un valore alla volta e inserendolo nella corretta posizione tra i valori che lo precedono. Per fare ciò l'algoritmo opera su sotto-vettori, che vi vedete qui di fianco. Quindi il sotto-vettore contenente solo il primo elemento a1 (passo base) risulta essere già per sé ordinato, considera poi il sotto-vettore contenente i primi due elementi a1 e a2 ordina a2 rispetto al

Anteprima
Vedrai una selezione di 10 pagine su 52
Algoritmi di ordinamento - Algoritmi e Strutture Dati Pag. 1 Algoritmi di ordinamento - Algoritmi e Strutture Dati Pag. 2
Anteprima di 10 pagg. su 52.
Scarica il documento per vederlo tutto.
Algoritmi di ordinamento - Algoritmi e Strutture Dati Pag. 6
Anteprima di 10 pagg. su 52.
Scarica il documento per vederlo tutto.
Algoritmi di ordinamento - Algoritmi e Strutture Dati Pag. 11
Anteprima di 10 pagg. su 52.
Scarica il documento per vederlo tutto.
Algoritmi di ordinamento - Algoritmi e Strutture Dati Pag. 16
Anteprima di 10 pagg. su 52.
Scarica il documento per vederlo tutto.
Algoritmi di ordinamento - Algoritmi e Strutture Dati Pag. 21
Anteprima di 10 pagg. su 52.
Scarica il documento per vederlo tutto.
Algoritmi di ordinamento - Algoritmi e Strutture Dati Pag. 26
Anteprima di 10 pagg. su 52.
Scarica il documento per vederlo tutto.
Algoritmi di ordinamento - Algoritmi e Strutture Dati Pag. 31
Anteprima di 10 pagg. su 52.
Scarica il documento per vederlo tutto.
Algoritmi di ordinamento - Algoritmi e Strutture Dati Pag. 36
Anteprima di 10 pagg. su 52.
Scarica il documento per vederlo tutto.
Algoritmi di ordinamento - Algoritmi e Strutture Dati Pag. 41
1 su 52
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher R0s4 di informazioni apprese con la frequenza delle lezioni di Algoritmi e strutture dati 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 Napoli Federico II o del prof Avallone Stefano.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community