Creato da pietrobonfigli il 26/04/2012

Algoritmica

Algoritmi e strutture dati

 

 

« SalveStabilire se due parole ... »

Ordinamento di un vettore tramite confronti

Post n°2 pubblicato il 27 Aprile 2012 da pietrobonfigli
 

La prima cosa da analizzare quando si affronta un problema è la complessità del problema stesso, in particolare è necessario stabilire un limite inferiore alla complessità in modo da riuscire a stabilire quando una soluzione algoritmica non è ulteriormente migliorabile.

Ad esempio nel caso dell'ordinamento di un vettore tramite confronti è possibile dimostrare che la complessità è Omega(n log n). Visto che abbiamo l'algoritmo MergeSort che ha complessità O(n log n) sappiamo che il problema ha complessità

n log n

Vediamo come ottenere questo risultato.

Supponiamo di avere tre elementi A,B,C e suppuniamo per semplicità che siano tutti distinti. Effettuano il primo confronto possiamo ottenere i seguenti casi.

                                  A<B                 B<A

Chiatamente questo non ci basta per avere l'ordinamento, quindi effettuiamo un secondo confronto tra A e C che ci porta ad ottenere.

                                 A<B                  B<A

                      C<A           A<C       C<A         A<C

Con un terzo confronto

                                 A<B                                       B<A

                      C<A           A<C                       C<A         A<C

             B<C        C<B    B<C  C<B          C<B    B<C    C<B     B<C

In questa maniera abbiamo trovato tutti i possibili ordinamenti dei tre elementi.

Analizzando questo esempio ci rendiamo conto che ogni foglia del nostro albero corrisponde ad una particolare permutazione dei tre elementi. Quindi, tenendo conto che il numero delle foglie in un albero binario cresce come 2h dove h è l'altezza dell'albero stesso, sia ha che per coprire tutte le possibili permutazioni deve essere valida la seguente formula

2h > n!

Quindi sapendo che

n! > n/2n/2

ed applicando il logaritmo

h > (n/2) log (n/2)

da cui è facile dedurre che

h = omega(n log n)

 

 
 
 
Vai alla Home Page del blog

AREA PERSONALE

 

TAG

 

ARCHIVIO MESSAGGI

 
 << Luglio 2024 >> 
 
LuMaMeGiVeSaDo
 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
 
 

CERCA IN QUESTO BLOG

  Trova
 

FACEBOOK

 
 

ULTIME VISITE AL BLOG

rubacuore65boscia.marapietrobonfiglifernandez1983santi1955MarquisDeLaPhoenixfataanticacile54sasacinemangre_telcercoilcoraggiocybergypsymaperchedicoiopsicologiaforensesono_per_te0
 

CHI PUò SCRIVERE SUL BLOG

Solo l'autore può pubblicare messaggi in questo Blog e tutti gli utenti registrati possono pubblicare commenti.
 
RSS (Really simple syndication) Feed Atom
 
 
 

© Italiaonline S.p.A. 2024Direzione e coordinamento di Libero Acquisition S.á r.l.P. IVA 03970540963