Algoritmi e strutture dati Definizioni q Struttura dati

  • Slides: 13
Download presentation
Algoritmi e strutture dati Definizioni q Struttura dati: organizzazione sistematica dei dati e del

Algoritmi e strutture dati Definizioni q Struttura dati: organizzazione sistematica dei dati e del loro accesso q Algoritmo: procedura suddivisa in passi che, eseguiti in sequenza, consentono di eseguire un compito in tempo finito (? ) q Esempio: Max. di un vettore di n elementi Algorithm array. Max(A, n) current. Max=A[0]; for (i=0; i<n; i++) // inziare da i = 1? if (A[i]>current. Max) current. Max=A[i]; return current. Max; Introduzione

Nel mondo reale. . . . q Gli algoritmi intervengono (in modo più o

Nel mondo reale. . . . q Gli algoritmi intervengono (in modo più o meno nascosto) in molti aspetti q Vari esempi o Internet o DBMS o Motori di ricerca…. . o Analisi della struttura del Web Introduzione

Esempio: Routing in Internet Protocollo di Routing 5 Obiettivo: determinare “buon” cammino sorg. -dest

Esempio: Routing in Internet Protocollo di Routing 5 Obiettivo: determinare “buon” cammino sorg. -dest Astrazione usando grafi: q I nodi rappresentano router q Gli archi descrivono i link fisici o Costi sugli archi (link) : ritardo, costo in €, livello di congestione 2 A B 2 1 D 3 C 3 1 5 F 1 E 2 q Cammino “buono”: o Di solito significa cammino a costo minimo o Possibili def. alternative Introduzione 3

Esempio: Accesso a basi di dati Interrogazione Obiettivo: rispondere rapidamente Interrogazione . . .

Esempio: Accesso a basi di dati Interrogazione Obiettivo: rispondere rapidamente Interrogazione . . . Data base Data Record Introduzione 4

Qualità di algoritmi e strutture dati q Efficienza o Tempo di esecuzione o Spazio

Qualità di algoritmi e strutture dati q Efficienza o Tempo di esecuzione o Spazio (quantità di memoria) I due aspetti sono interdipendenti Introduzione

Misura dell’efficienza obiettivi q Indipendenza dall’implementazione q Generale (valida per ogni input, di qualsiasi

Misura dell’efficienza obiettivi q Indipendenza dall’implementazione q Generale (valida per ogni input, di qualsiasi dimensione) q Misura indipendente dalla piattaforma Hw/Sw In generale: una misura dipendente dalla piattaforma hw/sw è poco rappresentativa Introduzione

Modello di costo RAM Random Access Machine Macchina che esegue le istruzioni in sequenza.

Modello di costo RAM Random Access Machine Macchina che esegue le istruzioni in sequenza. Insieme di operazioni primitive a costo unitario: q Assegnazione q Operazioni aritmetiche q Confronto q Lettura/Scrittura Introduzione 8

Modello di costo/2 Costo di operazioni complesse: q Ciclo: somma costo test di fino

Modello di costo/2 Costo di operazioni complesse: q Ciclo: somma costo test di fino ciclo e costo corpo del ciclo q if…then…else: costo test più costo blocco istruzioni che segue then o else (a seconda del caso) q Attivazione di un metodo: somma dei costi di tutte le istruzioni presenti nel metodo Costo: somma di tutti i costi Introduzione 9

Esempio/1 q Nel primo caso (vett. di 3 elementi) si ha costo 1 (ass.

Esempio/1 q Nel primo caso (vett. di 3 elementi) si ha costo 1 (ass. )+1 (ass. nel for) + 6 (test e incr. nel for) + 1 (test finale for) + 3 (test if) + 1 (istruz. return) = 13 q Nel secondo caso si ha 1 (ass. ) + 1 (ass. nel for) + 10 (test e incr. nel for) + 1 (test finale for) + 5 (test if) + 1 (istr. ass. nell’if) + 1 (istruz. return) = 20 Algorithm array. Max(A, n) current. Max=A[0]; for (i=0; i<n; i++) if (A[i]>current. Max) current. Max=A[i]; return current. Max; 1 8 7 6 1 3 4 4 n=3 n=5 Introduzione

Modello di costo/3 Perché tale modello è accettabile? q Il costo di istruzione è

Modello di costo/3 Perché tale modello è accettabile? q Il costo di istruzione è sempre valutato a meno di un fattore costante (eventualmente grande) perché o Il numero di operazioni elementari per ogni istruzione è finito o Ogni variabile occupa una quantità finita di memoria e quindi i tempi di accesso a due variabili diverse sono comunque legati da una costante Vantaggi: prescinde dalla piattaforma Hw/Sw e dal linguaggio di programmazione Svantaggi: l’indicazione che si ottiene è qualitativa Introduzione 11

Modello di costo/4 Problema: i risultati dipendono dal particolare input, anche per lo stesso

Modello di costo/4 Problema: i risultati dipendono dal particolare input, anche per lo stesso valore di n q Si vuole una misura che dipenda dalla dimensione dell’input (n nel nostro esempio) ma non dal particolare input considerato q Possibile alternative: o Analisi del caso peggiore (worst case): si considera il costo di esecuzione nel caso peggiore (l'analisi del caso migliore è in generale poco interessante) o Analisi del caso medio: si considera il costo medio dell’algoritmo rispetto ad una distribuzione dell’input (richiede la conoscenza della distribuzione) q In ogni caso occorre definire la dimensione dell’input Nel seguito si considera l’analisi nel caso peggiore Introduzione 12

Dimensione dell’input q Per ogni problema va indicata la dimensione dell’input perché è rispetto

Dimensione dell’input q Per ogni problema va indicata la dimensione dell’input perché è rispetto ad essa che si calcola il costo degli algoritmi q Dipende dall’input, es. : o Nr. componenti per il problema di ordinare un vettore di interi o Nr. di nodi e numero di archi per problemi su grafi q La scelta deve essere ragionevole. Nei casi dubbi una misura ragionevole è il numero di bit necessari a rappresentare l’input q Esempio: se si considera il problema di determinare la scomposizione in fattori primi di un numero intero allora la dimensione dell’input è il numero di bit necessario a rappresentare un intero. D. : numero di bit necessario a rappresentare un intero < N ? Introduzione 13

Analisi nel caso peggiore (esempio) q Nel caso peggiore gli elementi sono ordinati in

Analisi nel caso peggiore (esempio) q Nel caso peggiore gli elementi sono ordinati in maniera crescente q In questa ipotesi l’istruzione current. Max=A[i]; è eseguita n-1 volte. q Il costo complessivo dell’algoritmo è allora (ragionando come nei casi precedenti) 1+1+2 n+1+n+(n 1)+1=4 n+3 Algorithm array. Max(A, n) current. Max=A[0]; for (i=0; i<n; i++) if (A[i]>current. Max) current. Max=A[i]; return current. Max; 1 4 6 7 8 Introduzione 14