Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Algoritmo
INFORMATICA
Corsi di Educazione, Ed. Comunità, Comunicazione e Psicologia
– a.a. 2010/2011
Originariamente redatte dal prof. Roberto Pirrone
rivedute dal prof. Orazio Gambino
• Pseudocodice
• Diagrammi di flusso
• Operazioni sequenziali
– Elaborazione, Ingresso, Uscita
• Operazioni di ingresso
– Acquisisci il valore per “variabile”
• Operazioni di uscita
– Stampa il valore per “variabile”, descrizione della variabile
• Dati: n=5
– Valori: 19,41,12,63,21
1 2 3 4 5
19 41 12 63 21
19
41
12
63
21
41
12
63 19
21
12
63 41
21
19
12
21 63
19 41 12 63 21
Stampa i valori di maggiore attuale e locazione
63
1 2 3 4 5
19 41 12 63 21
1 2 3 4 5
19 41 12 63 21
attuale 19 41 12 63 21
– Se l’elemento considerato è
maggiore del maggiore attuale
allora esso diventa il nuovo
maggiore attuale
altrimenti esso viene scartato
19 41 12 63 21
OPERAZIONI MARGINALI
numeroConfrontiCasoPeggiore + numeroConfrontiCasoMigliore n + 1
casoMedio = =
2 2
Per n grande, l’algoritmo non è piu’ adatto per fare una ricerca.
Esempio per un elenco di 20 milioni di persone e 100mila confronti/sec:
20 000 000 1
confronti ⋅ sec /confronto = 100 sec
2 e 40 sec. Se si tiene
cioè 1 minuto 100 000
conto del fatto che bisogna aggiornare
l’indice, è necessario un tempo ancora maggiore.
n − n 2 = 0 ⇒ n(1 − n) = 0 ⇒ n = 0; n = 1
DICGIM ing. Orazio Gambino
Ordine di grandezza n2 - Θ(n
Θ( 2)
La figura mostra che il ruolo della costante c è
ininfluente per alti valori di n.Nonostante si sia
favorito l’ordine di grandezza quadratico con
c=0.25 mentre quello lineare è stato
penalizzato con c=10, il Lavoro dell’algoritmo
con ordine di grandezza quadratico supererà
quello lineare per n maggiore dell’ascissa del
punto di interse-zione. Per n tale che
10n>0.25n2 si ha: c
c1n − c2 n 2 = 0 ⇒ n(c1 − c2 n) = 0 ⇒ n = 0; n = 1
c2
Per il caso in esame (c1=10;c2=0.25):
c1 10
n= = = 40
c 2 0.25
Si verifica che per n=40 il Lavoro di Θ(n2) e
Θ(n) sono uguali:
0.25 ⋅ 40 2 = 400 10 ⋅ 40 = 400
DICGIM ing. Orazio Gambino
Considerazioni sugli ordini di
grandezza
• Ha senso confrontare il Lavoro di due algoritmi che risolvono lo stesso
problema.
• Per “n grande”, i fattori costanti non incidono in maniera signifi-cativa
sull’ordine di grandezza.
• Tra due algoritmi si sceglie sempre quello con ordine di gran-dezza
inferiore perché compie meno Lavoro.
• Si considera sempre “n grande” perché è questa la condizione più
critica di funziona-mento, dove sono necessarie grosse ri-sorse
computazionali.
• Si è detto “n grande“. Ma quanto grande? Sicuramente per valo-ri
maggiori dell’ascissa del punto d’intersezione tra i grafici del Lavoro
dei due algoritmi. I fattori costanti, dovuti al lavoro sussidiario,
incidono fortemente per valori inferiori ad esso.
• E’ pericoloso, però, scegliere l’algoritmo per “n piccolo” perché non si
potrebbe essere certi sulla dimensione (n) dei dati d’ingresso.
cerco CORA
inizio=1
fine=7
m=4
inizio=1
fine=m-1=3 (m=4 dalla slide precedente)
m=2 ( nuovo valore di m)
Cora
3
CORA = CORA
Trovato = SI
FINE
cerco Maria
inizio=1
fine=7
m=4
inizio=5
fine=m-1=5 (m=6 dal passo precedente)
m=5
Giuseppe
5
1 2 3 5 6 7
1 2 3 5 6 7 8
I nomi delle posizioni centrali possono essere
organizzati in forma di struttura dati ad albero in
funzione delle decisioni prese fino a quando non
si arriva ad un nome che coincide con la chiave di
ricerca.
Dino
Bobo Nino
Level 1
Level 2
log 2 8 = 3 ⇒ 23 = 8
log 2 16 = 4 ⇒ 2 4 = 16
log 2 32 = 5 ⇒ 25 = 32
log 2 64 = 6 ⇒ 2 6 = 64