Upload
giacinta-lamberti
View
222
Download
2
Embed Size (px)
Citation preview
Capitolo 3Strutture dati elementari
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl2
Gestione di collezioni di oggetti
Tipo di dato:– Specifica delle operazioni di interesse su
una collezione di oggetti (es. inserisci, cancella, cerca)
Struttura dati:– Organizzazione dei dati che permette di
supportare le operazioni di un tipo di dato usando meno risorse di calcolo possibile
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl3
Il tipo di dato Dizionario
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl4
Il tipo di dato Pila
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl5
Il tipo di dato Coda
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl6
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
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl7
ProprietàRappresentazioni indicizzate:
– indici delle celle di un array sono numeri consecutivi– non è possibile aggiungere nuove celle ad un array
Rappresentazioni collegate:– i costituenti di base sono i record– i record sono numerati tipicamente con il loro
indirizzo di memoria– record creati e distrutti individualmente e
dinamicamente– il collegamento tra un record A e un record B è
realizzato tramite un puntatore
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl8
Esempi di strutture collegate
Lista semplice
Lista doppiamentecollegata
Lista circolaredoppiamentecollegata
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl9
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
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl10
realizzazione di un dizionarioMetodo più semplice: array non ordinato
Insert costa O(1) – inserisco dopo ultimo elementoSearch costa O(n) – devo scorrere l’array
Delete costa O(n) – delete = search + cancellazione
Array ordinato:
Search O(log(n)) – ricerca binariaInsert O(n)
Ho bisogno di:O(log(n)) confronti per trovare la giusta
posizione in cui inserire l’elementoO(n) trasferimenti per mantenere l’array ordinato
(Ricorda che O(n) + O(log(n)) = O(n))Delete O(n) (come per Insert)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl11
realizzazione di un dizionario
Lista non OrdinataSearch – O(n)Insert – O(1)Delete - O(n)
Lista OrdinataSearch – O(n) non posso usare la ricerca binariaInsert – O(n) devo mantenere ordinata la listaDelete – O(n)
…e con le liste?
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl12
AlberiOrganizzazione gerarchica dei dati
Dati contenuti nei nodi, relazioni gerarchichedefinite dagli archi che li collegano
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl13
Alberi: altre definizioni
albero d-ario, albero d-ario completo
grado di un nodo: numero dei suoi figli
u antenato di v se u è raggiungibile da v risalendo di padre in padre v discendente di u se u è un antenato di v
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl14
Idea: ogni cella dell’array contiene– le informazioni di un nodo
– eventualmente altri indici per raggiungere altri nodi
Rappresentazioni indicizzate di alberi
Vettore posizionale (per alberi d-ari completi)
Vettore dei padriPer un albero con n nodi uso un array P di dimensione nUna generica cella i contiene una coppia (info,parent), dove:
info: contenuto informativo del nodo iparent: indice (nell’array) del nodo padre di i
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl15
Rappresentazioni collegate di alberi
Rappresentazionecon puntatori ai figli (nodi con numero limitato di figli)
Rappresentazionecon liste di puntatori ai figli (nodi con numero arbitrario di figli)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl16
Rappresentazioni collegate di alberi
Rappresentazionedi tipo primo figlio-fratello successivo (nodi con numero arbitrario di figli)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl17
Visite di alberi
Algoritmi che consentono l’accesso sistematico ai nodi e agli archi di un albero
Gli algoritmi di visita si distinguono in base al particolare ordine di accesso ai nodi
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl18
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
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl19
Algoritmo di visita in profondità
L’algoritmo 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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl20
Algoritmo di visita in profondità
Versione iterativa (per alberi binari):
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl21
A
L B
E R O
A
A BL
BRE
BR
B O
L E R B O
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl22
Algoritmo di visita in profonditàVersione ricorsiva (per alberi binari):
Visita in preordine: radice, sottoalbero sin, sottoalbero destro
Visita simmetrica: sottoalbero sin, radice, sottoalbero destro (scambia riga 2 con 3)
Visita in postordine: sottoalbero sin, sottoalbero destro, radice (sposta riga 2 dopo 4)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl23
A
L B
E R O
Preordine: A L E R B O
Simmetrica: E L R A B O
Postordine: E R L O B A
…esempi…
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl24
Algoritmo di visita in ampiezza
L’algoritmo 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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl25
Algoritmo di visita in ampiezza
Versione iterativa (per alberi binari):
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl26
A
L B
E R O
A
A
L B E R O
BL B
RE O
ORE
OR
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl27
• 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