Presentazione di PowerPoint - PowerPoint PPT Presentation

About This Presentation
Title:

Presentazione di PowerPoint

Description:

Ordinamento Continuiamo a discutere il problema dell ordinamento: Ordinamento (Sorting) INPUT: Sequenza di n numeri OUTPUT: Permutazione – PowerPoint PPT presentation

Number of Views:36
Avg rating:3.0/5.0
Slides: 16
Provided by: Francesco116
Category:

less

Transcript and Presenter's Notes

Title: Presentazione di PowerPoint


1
Ordinamento
Continuiamo a discutere il problema
dellordinamento
Ordinamento (Sorting) INPUT Sequenza di n numeri
lta1,a2, angt OUTPUT Permutazione
plta1, a2 , , angt lta1,a2, , angt
tale che a1 ? a2 ? ? an
Algoritmo di Insertion-Sort ? risolve il
problema dellordinamento
La complessità temporale (tempo di esecuzione
dellalgoritmo) dell Insertion-Sort verifica
T(n) ?(n2) nel caso peggiore e nel caso
medio T(n) ?(n) nel caso migliore
Oltre alla complessità temporale possiamo
studiare la complessita spaziale di un
algoritmo Complessità spaziale spazio di
memoria necessario per ospitare le strutture di
dati utilizzate dallalgoritmo.
La complessità spaziale dellinsertion sort è
?(n)
2
Lalgoritmo di Insertion Sort è l unico
algoritmo possibile per risolvere il problema
dellordinamento? Ovviamente NO!
  • Lalgoritmo di Selection Sort è definito dalla
    seguente strategia
  • Al primo passo, si seleziona lelemento più
    piccolo tra gli n elementi della sequenza, e lo
    si pone nella prima posizione (scambiandolo con
    lelemento A1 )
  • Al secondo passo, si seleziona lelemento più
    piccolo tra i rimanenti n-1 elementi di A, e lo
    si pone nella seconda posizione (scambiandolo con
    A2 )
  • .
  • .
  • .
  • Al k-esimo passo, si seleziona lelemento più
    piccolo tra i rimanenti n-(k-1) elementi di A, e
    lo si pone nella k-esima posizione (scambiandolo
    con Ak)
  • .
  • .
  • .
  • All(n-1)-esimo passo, si seleziona lelemento
    più piccolo tra gli ultimi 2 elementi di A, e lo
    si pone nella penultima posizione (scambiandolo
    con An-1).

3
Notare La strategia descritta prevede ad ogni
step la risoluzione dello stesso problema
(ricerca del minimo di una sequenza). gt Abbiamo
risolto il problema dellordinamento riconducendo
tale problema al più semplice problema di ricerca
del minimo.
Algoritmo per la ricerca dellelemento minimo di
una sequenza
Min_elemento(A) ind_min ? 1 For i? 2 to
length(A) do if (Ai lt Aind_min ) then
ind_min ? i Return ind_min
Qual è la complessità spaziale di questo
algoritmo?
S(n) ?(n)
Qual è la complessità temporale di questo
algoritmo?
T(n) ?(n) per tutti gli input
4
Algoritmo Selection Sort
Selection-Sort(A) For j?1 to (length(A)-1)
do ind_min ? j For i? j1 to
length(A) do if (Ai lt
Aind_min ) then ind_min ? i
k ? Aind_min Aind_min ?
Aj Aj ? k
  • Notiamo che lalgoritmo è corretto. Infatti
  • L algoritmo termina sempre
  • Per ogni istanza di input loutput è corretto.
  • La correttezza dell algoritmo può essere
    mostrata ragionando per induzione. Devo mostrare
    che la seguente affermazione è vera per
    j1,2,3,n-1
  • Al j-esimo step lalgoritmo produce una sequenza
    ordinata non decrescente A1,,Aj, dove A1
    è il più piccolo elemento, A2 è il secondo
    elemento piu piccolo , , Aj è il j-esimo
    elemento più piccolo della sequenza iniziale.
  • Verifico la validità dellaffermazione per j1
  • Assumo che la affermazione sia valida per un
    generico valore di jh
  • Mostro che da ciò segue che la affermazione è
    valida per jh1.

5
Analisi del Selection Sort
Selection-Sort(A) For j?1 to (length(A)-1)
do ind_min ? j For i? j1 to
length(A) do if (Ai lt
Aind_min ) then ind_min ? i
k ? Aind_min Aind_min ?
Aj Aj ? k
()
  • Complessità temporale del Selection Sort
  • Qual è la linea (o il blocco di linee di codice)
    che viene eseguito più volte (operazione
    dominante)?
  • if (Ai lt Aind_min ) - operazione di
    confronto
  • Quante volte viene eseguita?
  • Il numero di volte che questa linea viene
    eseguita dipende dall input?
  • No!
  • La compl. temp. del selection sort è T(n)?(n2)
    (indip. dallinput).

6
Complessità intrinseca di un problema
Abbiamo introdotto 2 algoritmi (IS, SS) che
risolvono il problema dellordinamento SS
T(n) T(n2) IS - T(n) T(n2) Ci chiediamo
Si può fare di meglio? Più precisamente E
possibile risolvere il problema dell ordinamento
mediante algoritmi aventi un comportamento
asintotico migliore? Notare Per rispondere
alla domanda, dobbiamo alzare il livello della
nostra analisi. Dobbiamo discutere le proprietà
generali del problema, indipendentemente dagli
algoritmi specifici utilizzati per risolverlo.
7
Prima di continuare
Quando forniamo limiti asintotici
superiori/inferiori alla complessità di un
algoritmo senza specificare le proprietà
dellinput, ci riferiamo implicitamente al caso
peggiore
T(n) O(f(n)) ? Per tutte le istanze di input
T(n) O(f(n)) ? Tworst(n)
O(f(n)), ma anche Tbest(n) O(f(n))
  • T(n) ? (f(n)) ? Esiste almeno unistanza di
    input per cui T(n) ? (f(n))
  • Tworst (n) ?(f(n)), ma non è detto che Tbest(n)
    O(f(n))

8
Complessità intrinseca di un problema ?
Complessità computazionale di un
algoritmo
Un problema computazionale ha delimitazione
superiore alla complessità O(f(n)) (upper bound)
se esiste un algoritmo per la sua risoluzione con
delimitazione superiore O(f(n)).
Un problema computazionale ha delimitazione
inferiore alla complessita ?(f(n)) (lower bound)
se tutti gli algoritmi per la sua risoluzione
hanno delimitazione inferiore ?(f(n)).
Se dimostro che un problema ha delimitazione
inferiore ?(f(n)) e trovo un algoritmo avente
complesssità ?O(f(n)) allora a meno di
costanti, ho un algoritmo ottimale per risolvere
il problema!!!
Esempio di algoritmo ottimale ? Algoritmo per
la ricerca del minimo in un insieme non ordinato,
avente complessità O(n), Infatti, ogni algoritmo
dovrà almeno leggere linput, e quindi avrà
complessità ?(n).
9
Problema dellordinamento Sappiamo per ora
che Lower bound - ?(n) (banale,
dimensione dellinput) Upper bound O(n2)
IS, BS Abbiamo un gap lineare tra
upper bound e lower bound. Possiamo fare meglio
.
10
Lower Bound per il problema dellordinamento
Ordinamento per confronti Dati due elementi ai ed
aj, per determinarne lordinamento relativo
effettuiamo una delle seguenti operazioni di
confronto ai ? aj ai ? aj ai ?
aj ai ? aj ai ? aj Non si possono
esaminare i valori degli elementi o ottenere
informazioni sul loro ordine in altro modo.
Notare Tutti gli algoritmi di ordinamento
considerati fino ad ora sono algoritmi di
ordinamento per confronto.
11
Gli algoritmi di ordinamento per confronto
possono essere descritti in modo astratto in
termini di ALBERI DI DECISIONE.
  • Un generico algoritmo di ordinamento per
    confronto lavora nel modo seguente
  • Confronta due elementi ai ed aj (ad esempio
    effettua il test ai ? aj)
  • A seconda del risultato riordina e/o decide il
    confronto successivo da eseguire.

Albero di decisione - Descrive i confronti che
lalgoritmo esegue quando opera su un input di
una determinata dimensione. I movimenti dei dati
e tutti gli altri aspetti dellalgoritmo vengono
ignorati
Albero di decisione dellalgoritmo Insertion Sort
a1a2
?
?
a2a3
a1a3
?
?
?
?
lta2,a1,a3gt
a2a3
lta1,a2,a3gt
a1a3
?
?
?
?
lta1,a3,a2gt
lta2,a3,a1gt
lta3,a1,a2gt
lta3,a2,a1gt
12
Prima di discutere i dettagli, alcune definizioni

radice
a1a2
Sotto-albero sinistro
Sotto-albero destro
?
?
nodo
a2a3
a1a3
?
?
?
?
a1a3
lta2,a1,a3gt
a2a3
lta1,a2,a3gt
?
?
?
?
cammino
lta1,a3,a2gt
lta3,a1,a2gt
lta2,a3,a1gt
lta3,a2,a1gt
foglia
Profondità di un nodo lunghezza del cammino che
lo congiunge alla radice.
Altezza di un albero valore massimo della
profondità dei nodi.
Notare - (Numero di Foglie) ? 2h
h altezza
dellalbero
13
Torniamo al problema dellordinamento
Insertion-Sort
a1a2
?
?
a2a3
a1a3
?
?
?
?
a1a3
lta2,a1,a3gt
a2a3
lta1,a2,a3gt
?
?
?
?
lta1,a3,a2gt
lta2,a3,a1gt
lta3,a1,a2gt
lta3,a2,a1gt
  • Ogni foglia è etichettata con una permutazione
    della sequenza iniziale
  • Lesecuzione dell algoritmo corrisponde a
    tracciare un cammino dalla radice ad una foglia
  • Lalgoritmo segue un cammino diverso a seconda
    delle caratteristiche dellinput
  • caso migliore cammino più breve
  • caso peggiore cammino più lungo
  • - Laltezza dellalbero fornisce il numero di
    confronti che lalgoritmo esegue nel caso
    peggiore.

14
Limite inferiore al problema dellordinamento per
confronti
Insertion-Sort
a1a2
?
?
a2a3
a1a3
?
?
?
?
a1a3
lta2,a1,a3gt
a2a3
lta1,a2,a3gt
?
?
?
?
lta1,a3,a2gt
lta2,a3,a1gt
lta3,a1,a2gt
lta3,a2,a1gt
  • Notiamo che
  • il numero di foglie dellalbero di decisione
    deve essere almeno pari al numero di possibili
    permutazioni della sequenza iniziale
  • ( foglie) ? n!
  • Come già detto, sussiste la seguente relazione
    tra il numero di foglie e laltezza di un albero
    binario
  • ( foglie) ? 2h
  • Ciò implica
  • 2h ? n!
  • Da cio segue h ? log2(n!), e per
    lapprossimazione di Stirling su n!, che impone
    n!gt(n/e)n, ne segue che
  • h gt log2((n/e)n) ?(n log2(n))

15
In conclusione
  • Ricordando che laltezza dellalbero di decisione
    indica il numero di confronti che un generico
    algoritmo effettua nel caso peggiore, otteniamo
  • ? Algoritmo T(n) ?(n log2 (n))
  • Quindi
  • Lower Bound ?(n log2 (n))
  • (problema dell ordinamento per
    confronti)
  • Esercizi
  • Albero di decisione per SS (3 elementi)
  • Ho scritto T(n) ?(n log2 (n)).
  • Implica T(n) ?(n ln (n)) ?
Write a Comment
User Comments (0)
About PowerShow.com