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

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

Transcript of Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi,...

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

Capitolo 3Strutture dati elementari

Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

Page 2: Capitolo 3 Strutture 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

Page 3: Capitolo 3 Strutture 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, srl3

Il tipo di dato Dizionario

Page 4: Capitolo 3 Strutture 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, srl4

Il tipo di dato Pila

Page 5: Capitolo 3 Strutture 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, srl5

Il tipo di dato Coda

Page 6: Capitolo 3 Strutture 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, 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

Page 7: Capitolo 3 Strutture 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, 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

Page 8: Capitolo 3 Strutture 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, srl8

Esempi di strutture collegate

Lista semplice

Lista doppiamentecollegata

Lista circolaredoppiamentecollegata

Page 9: Capitolo 3 Strutture 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, 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

Page 10: Capitolo 3 Strutture 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, 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)

Page 11: Capitolo 3 Strutture 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, 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?

Page 12: Capitolo 3 Strutture 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, srl12

AlberiOrganizzazione gerarchica dei dati

Dati contenuti nei nodi, relazioni gerarchichedefinite dagli archi che li collegano

Page 13: Capitolo 3 Strutture 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, 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

Page 14: Capitolo 3 Strutture 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, 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

Page 15: Capitolo 3 Strutture 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, 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)

Page 16: Capitolo 3 Strutture 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, srl16

Rappresentazioni collegate di alberi

Rappresentazionedi tipo primo figlio-fratello successivo (nodi con numero arbitrario di figli)

Page 17: Capitolo 3 Strutture 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, 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

Page 18: Capitolo 3 Strutture 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, 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

Page 19: Capitolo 3 Strutture 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, 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.

Page 20: Capitolo 3 Strutture 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, srl20

Algoritmo di visita in profondità

Versione iterativa (per alberi binari):

Page 21: Capitolo 3 Strutture 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, srl21

A

L B

E R O

A

A BL

BRE

BR

B O

L E R B O

Page 22: Capitolo 3 Strutture 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, 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)

Page 23: Capitolo 3 Strutture 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, 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…

Page 24: Capitolo 3 Strutture 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, 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.

Page 25: Capitolo 3 Strutture 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, srl25

Algoritmo di visita in ampiezza

Versione iterativa (per alberi binari):

Page 26: Capitolo 3 Strutture 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, srl26

A

L B

E R O

A

A

L B E R O

BL B

RE O

ORE

OR

Page 27: Capitolo 3 Strutture 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, 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