SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Alberi
Algoritmi e Calcolo Parallelo

Prof. Pier Luca Lanzi
Riferimenti

•

•

2

Bertossi Alan A., Montresor Alberto. “Algoritmi e
strutture di dati” (seconda edizione), CittàStudi 2010

Stanley B. Lippman, Barbara E. Moo, Josee Lajoie
“C++ Primer”, 5th Edition Addison-Wesley

Prof. Pier Luca Lanzi
Alberi Radicati

•

•

3

Albero (definizione informale): insieme dinamico i cui
elementi hanno relazioni di tipo gerarchico

Albero (definizione ricorsiva)
Insieme vuoto
Una radice T e 0 o più sottoalberi, con la radice di ogni
sottoalbero collegata a T da un arco (orientato)




Prof. Pier Luca Lanzi
Alberi Radicati

•

4

Albero radicato
Un insieme vuoto di nodi
Un nodo radice R collegato a 0 o più alberi (sottoalberi)




Prof. Pier Luca Lanzi
Alberi Radicati

5

Prof. Pier Luca Lanzi
Alberi Radicati Binari

Prof. Pier Luca Lanzi

6
Alberi Radicati Binari

•

•

7

Un albero binario è un albero ordinato in cui ogni nodo ha al più due
figli e si fa distinzione tra il figlio sinistro ed il figlio destro di un nodo
Nota: due alberi T e U aventi gli stessi nodi, gli stessi figli per ogni
nodo e la stessa radice, sono distinti qualora un nodo u sia designato
come figlio sinistro di un nodo v in T e come figlio destro del
medesimo nodo in U

Prof. Pier Luca Lanzi
Alberi?

8

DAG
Foresta

Prof. Pier Luca Lanzi

Radice
Alberi Radicati

•

•
•
•

9

Profondità di un nodo: la
lunghezza del percorso
dalla radice al nodo
(numero archi attraversati)
Livello: l'insieme dei nodi
alla stessa profondità
Altezza dell'albero:
massima profondità+1
Grado di un nodo:
numero dei figli
Prof. Pier Luca Lanzi
Alberi Binari: Pieni e Completi

•

•

10

Alberi binari pieni: Ogni nodo è una foglia oppure è un
nodo interno con esattamente due figli non vuoti

Alberi binari completi: se l’altezza dell’albero è d, allora
tutte le foglie eccetto possibilmente il libello d sono
completamente piene. L’ultimo livello ha tutti i nodi sul lato
sinistro

Prof. Pier Luca Lanzi
Rappresentazione degli Alberi Binari

Prof. Pier Luca Lanzi

11
Realizzazione con Vettore dei Figli

12

/

/

/ / /

/ / /

/ / / /

/ / / /

/ / / /

/ / / /

Prof. Pier Luca Lanzi

/ /

/ / / /

/ / //

/ / / /
Realizzazione con Puntatori Padre,
Primo-figlio, Fratello

Prof. Pier Luca Lanzi

13
Altre Rappresentazioni:
Con puntatore al parente

Prof. Pier Luca Lanzi

14
Altre Rappresentazioni: Array

Left

Key

Right

Par

0

1

A

3

-1

1

-1

B

2

0

2

-1

D

-1

1

3

4

C

6

0

4

5

E

-1

3

5

-1

G

-1

4

6

7

F

8

3

7

-1

H

-1

6

8

-1

I

-1

6

Prof. Pier Luca Lanzi

15
Realizzazione con Vettore dei Padri

•

16

L'albero è rappresentato da un vettore i cui elementi
contengono l'indice del padre

0 a
T

1 b
a

1 e

b

2 c
2 d

c

3 f
3 g

Prof. Pier Luca Lanzi

e
d

f

g
Possible Interfaccia

Prof. Pier Luca Lanzi

17
Algoritmi di Visita degli Alberi

•
•
•

18

Visita (o attraversamento) di un albero:
Algoritmo per “visitare” tutti i nodi di un albero



In profondità (depth-first search, a scandaglio): DFS
Vengono visitati i rami, uno dopo l’altro
Tre varianti: pre-ordine, post-ordine, in-ordine




In ampiezza (breadth-first search, a ventaglio): BFS
A livelli, partendo dalla radice



Prof. Pier Luca Lanzi
Visita in Profondità: Implementazioni
VisitaPreOrdine(T)
VisitaRadice(T);
VisitaPreOrdine(T->left());
VisitaPreOrdine(T->right());
}
VisitaPostOrdine(T)
VisitaPostOrdine(T->left());
VisitaPostOrdine(T->right());
VisitaRadice(T);
}
VisitaInOrdine(T)
VisitaInOrdine(T->left());
VisitaRadice(T);
VisitaInOrdine(T->right());
}

Prof. Pier Luca Lanzi

19
Visita in Ampiezza
VisitaAmpiezza(T)
q = new Queue()
q.insert(T)
while not q.empty() do
p := q.dequeue()
visita p
q.enqueue(p.left())
q.enqueue(p.right())

Prof. Pier Luca Lanzi

20
Esercizi

•

•

21

Stampare il risultato della
Visita in pre-ordine
Visita in-ordine
Visita in post-ordine
Visita in ampiezza






Scrivere un algoritmo per
Calcolare l’altezza di un albero binario T
Calcolare il numero di nodi di un albero binario T
Stampare tutti i nodi di profondità h di un albero binario
T





Prof. Pier Luca Lanzi
Alberi Binari: Specifica

Prof. Pier Luca Lanzi

22
Alberi Binari: Realizzazione

Prof. Pier Luca Lanzi

23
Esercizi

•
•

•

24

Dato un albero radicato T, calcolare la sua altezza
Dato un albero radicato T, calcolare il numero totale di
nodi
Dato un albero radicato T, stampare tutti i nodi a
profondità h

Prof. Pier Luca Lanzi

Weitere ähnliche Inhalte

Mehr von Pier Luca Lanzi

Mehr von Pier Luca Lanzi (20)

Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018
 
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
 
GGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di aperturaGGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di apertura
 
Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018
 
DMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparationDMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparation
 
DMTM Lecture 19 Data exploration
DMTM Lecture 19 Data explorationDMTM Lecture 19 Data exploration
DMTM Lecture 19 Data exploration
 
DMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph miningDMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph mining
 
DMTM Lecture 17 Text mining
DMTM Lecture 17 Text miningDMTM Lecture 17 Text mining
DMTM Lecture 17 Text mining
 
DMTM Lecture 16 Association rules
DMTM Lecture 16 Association rulesDMTM Lecture 16 Association rules
DMTM Lecture 16 Association rules
 
DMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluationDMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluation
 
DMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clusteringDMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clustering
 
DMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clusteringDMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clustering
 
DMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clusteringDMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clustering
 
DMTM Lecture 11 Clustering
DMTM Lecture 11 ClusteringDMTM Lecture 11 Clustering
DMTM Lecture 11 Clustering
 
DMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensemblesDMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensembles
 
DMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethodsDMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethods
 
DMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rulesDMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rules
 
DMTM Lecture 07 Decision trees
DMTM Lecture 07 Decision treesDMTM Lecture 07 Decision trees
DMTM Lecture 07 Decision trees
 
DMTM Lecture 06 Classification evaluation
DMTM Lecture 06 Classification evaluationDMTM Lecture 06 Classification evaluation
DMTM Lecture 06 Classification evaluation
 
DMTM Lecture 05 Data representation
DMTM Lecture 05 Data representationDMTM Lecture 05 Data representation
DMTM Lecture 05 Data representation
 

Kürzlich hochgeladen

Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
lorenzodemidio01
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
giorgiadeascaniis59
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
lorenzodemidio01
 

Kürzlich hochgeladen (19)

Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 

Algoritmi e Calcolo Parallelo 2012/2013 - Alberi