La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.

Presentazioni simili


Presentazione sul tema: "Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano."— Transcript della presentazione:

1 Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

2 Algoritmi e strutture dati 2 Ordinamento Insertion Sort A[1,...,n] = vettore i,j,key = variabili Numeri ordinati n numeri

3 Algoritmi e strutture dati 3 Problema Algoritmo Strutture Dati OutputInput

4 Algoritmi e strutture dati 4 Strutture Dati Astratte DATI + OPERAZIONI Che cosa DATI OP 1 OP 2 OP n ……………

5 Algoritmi e strutture dati 5 Insertion Sort Insertion-sort(A) 1.for j=2 to size(A) 2.do key = read(j) 3. {insert A[j] in A[1,...,j-1]} 4. i = j-1 5. while i>0 and read(i)>key 6.do modify(i+1,read(i)) 7. i=i-1 8. modify(i+1,key)

6 Algoritmi e strutture dati 6 Esempio di ADS Dati = insieme S di numeri OP 1 = estrai il minimo OP 2 = estrai il massimo OP 3 = restituisci la dimensione di S OP 4 = inserisci un nuovo numero in S

7 Algoritmi e strutture dati 7 Insertion sort ADS = DS = Insieme S di numeri + Read, Size, Modify S=A[1,…,n] (vettore) Read(i)=A[i] Size(A)=n Modify(i,x)=A[i]=x

8 Algoritmi e strutture dati 8 ADS = che cosa vogliamo ? DS = come lo implementiamo ?

9 Algoritmi e strutture dati 9 Quando una struttura dati è buona ? Una DS è buona quando non usa troppe risorse. Risorse Tempo Spazio di memoria Numero di procesori...

10 Algoritmi e strutture dati 10 Dato Dato è tutto ciò su cui agisce un calcolatore A livello hardware tutti i dati sono rappresentati come sequenza di cifre binarie Linguaggi ad alto livello ci permettono di usare astrazioni tramite il concetto di tipo di dato

11 Algoritmi e strutture dati 11 Tipo di Dato Nei linguaggi di programmazione 1.il tipo di dato determina linsieme dei valori (oggetti) che una variabile può rappresentare 2.il tipo di dato, specifica le operazioni di interesse su un insieme di valori (o collezione di oggetti (es. inserisci, cancella, cerca, etc.)) ogni operatore accetta argomenti di uno o più tipi di dato fissato e produce risultati di un tipo di dato fissato

12 Algoritmi e strutture dati 12 Gestione di collezioni di oggetti Struttura dati: –Organizzazione dei dati che permette di supportare le operazioni di un tipo di dato in modo efficiente

13 Algoritmi e strutture dati 13 Il tipo di dato Dizionario

14 Algoritmi e strutture dati 14 Il tipo di dato Pila

15 Algoritmi e strutture dati 15 Il tipo di dato Coda

16 Algoritmi e strutture dati 16 Tecniche di rappresentazione dei dati Rappresentazioni indicizzate: –I dati sono contenuti in array Rappresentazioni collegate: –I dati sono contenuti in record collegati fra loro mediante puntatori

17 Algoritmi e strutture dati 17 Pro e contro Rappresentazioni indicizzate: –Pro: accesso diretto ai dati mediante indici –Contro: dimensione fissa (riallocazione array richiede tempo lineare) Rappresentazioni collegate: –Pro: dimensione variabile (aggiunta e rimozione record in tempo costante) –Contro: accesso sequenziale ai dati

18 Algoritmi e strutture dati 18 Esempi di strutture collegate Lista semplice Lista doppiamente collegata Lista circolare doppiamente collegata

19 Algoritmi e strutture dati 19 Alberi Organizzazione gerarchica dei dati Dati contenuti nei nodi, relazioni gerarchiche definite dagli archi che li collegano

20 Algoritmi e strutture dati 20 Rappresentazioni collegate di alberi Rappresentazione con puntatori ai figli (nodi con numero limitato di figli) Rappresentazione con liste di puntatori ai figli (nodi con numero arbitrario di figli)

21 Algoritmi e strutture dati 21 Rappresentazioni collegate di alberi cont. Rappresentazione con primo figlio- fratello successivo (nodi con numero arbitrario di figli)

22 Algoritmi e strutture dati 22 Visite di alberi Algoritmi che consentono laccesso sistematico ai nodi e agli archi di un albero Gli algoritmi di visita si distinguono in base al particolare ordine di accesso ai nodi

23 Algoritmi e strutture dati 23 Algoritmo di visita generica visitaGenerica visita il nodo r e tutti i suoi discendenti in un albero Richiede tempo O(n) per visitare un albero con n nodi a partire dalla radice

24 Algoritmi e strutture dati 24 Algoritmo di visita in profondità Lalgoritmo di visita in profondità (DFS) parte da r e procede visitando nodi di figlio in figlio fino a raggiungere una foglia. Retrocede poi al primo antenato che ha ancora figli non visitati (se esiste) e ripete il procedimento a partire da uno di quei figli.

25 Algoritmi e strutture dati 25 Algoritmo di visita in profondità Versione iterativa (per alberi binari):

26 Algoritmi e strutture dati 26 Algoritmo di visita in profondità Versione ricorsiva (per alberi binari):

27 Algoritmi e strutture dati 27 Algoritmo di visita in ampiezza Lalgoritmo di visita in ampiezza (BFS) parte da r e procede visitando nodi per livelli successivi. Un nodo sul livello i può essere visitato solo se tutti i nodi sul livello i-1 sono stati visitati.

28 Algoritmi e strutture dati 28 Algoritmo di visita in ampiezza Versione iterativa (per alberi binari):

29 Algoritmi e strutture dati 29 Nozione di tipo di dato come specifica delle operazioni su una collezione di oggetti Rappresentazioni indicizzate e collegate di collezioni di dati: pro e contro Organizzazione gerarchica dei dati mediante alberi Rappresentazioni collegate classiche di alberi Algoritmi di esplorazione sistematica dei nodi di un albero (algoritmi di visita) Riepilogo


Scaricare ppt "Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano."

Presentazioni simili


Annunci Google