Unità Didattica
Struttura dati ad Albero
Daniele Contarino
Didattica di Algoritmi e Programmazione Laboratorio di Didattica di Programmazione
Percorso Abilitante Speciale A.A. 2013/14
SDA - Alberi 2 di 56 Daniele Contarino
Didattica: prerequisiti e finalità
Introduzione
Alberi n-ari e alberi binari
Binary Search Tree
Esercizi di laboratorio
Indice degli argomenti
SDA - Alberi 3 di 56 Daniele Contarino
Target: alunni della classe 4° A Informatica
Prerequisiti:
• Conoscenza dei fondamenti dei linguaggi di programmazione
• Conoscenza della programmazione Object-Oriented (ove è necessaria)
• Conoscenza delle strutture dati List, Stack e Queque.
• Rudimenti di complessità temporale
Unità didattica
SDA - Alberi 4 di 56 Daniele Contarino
Tempi di realizzazione Unità didattica
Argomenti Ore Metodologia Strumenti
Introduzione e ricollegamento con gli argomenti precedenti
1 Brainstorming
Discussione partecipata
Lavagna / LIM I tipi di alberi n-ari e binari 2 Lezione Frontale Lavagna / LIM Libro di testo Alberi Binari di Ricerca (BST) 3 Lezione Frontale
Esercitazioni alla lavagna e al computer
Lavagna / LIM
Laboratorio multimediale Libro di testo
Analisi di complessità 2 Lezione Frontale Lavagna / LIM
Libro di testo Tecniche di bilanciamento 2 Lezione Frontale
Esercitazioni alla lavagna e al computer
Lavagna / LIM
Laboratorio multimediale Esercitazione laboratoriale 3 Peer-Tutoring
Discussione partecipata
Laboratorio multimediale Verifica ed eventuale recupero 2 Test cartaceo
Esercizio di laboratorio
Laboratorio multimediale
TOTALE 15
SDA - Alberi 5 di 56 Daniele Contarino
Obiettivi specifici
Conoscenze Abilità / Capacità
Struttura intrinseca del albero n-ario e binario
Implementazione della SDA «Albero» e dei sui algoritmi fondamentali
Conoscenza dei algoritmi di inserimento ed eliminazione dell'Albero
Valutazione della complessità computazione dell'Albero Conoscenza dei algoritmi di visita e di
ricerca dell'Albero
Individuare l’esistenza della SDA «Albero»
nelle standard library fornite dai vari linguaggi di programmazione
Confronto con gli altri linguaggi di programmazione
Best pratices
SDA - Alberi 6 di 56 Daniele Contarino
Interdisciplinarietà
Complementi di Matematica
Competenze (DM 139/07)
Risultati dell’apprendimento
Usare al meglio la SDA ‘Albero’
Conoscere la complessità computazionale del SDA ‘Albero’
Progettare programmi che prevedono l’uso del BST
Ulteriori indicatori
Professionali Indirizzo informatico
Assi culturali (all. 1) scientifico/tecnologico (Competenza n. 3) chiave di cittadinanza (all. 2) Progettare
SDA - Alberi 7 di 56 Daniele Contarino
Didattica: prerequisiti e finalità
Introduzione
Alberi n-ari e alberi binari
Binary Search Tree
Esercizi di laboratorio
Indice degli argomenti
SDA - Alberi 8 di 56 Daniele Contarino
Strutture dati fondamentali
Introduzione
SDA - Alberi 9 di 56 Daniele Contarino
L’albero è la
migliore struttura per rappresentare al meglio alcuni modelli di vita reale
Alberi – Perché usarli?
Albero
genealogico
Directory del
Filesystem
SDA - Alberi 10 di 56 Daniele Contarino
Didattica: prerequisiti e finalità
Introduzione
Alberi n-ari e alberi binari
Binary Search Tree
Esercizi di laboratorio
Indice degli argomenti
SDA - Alberi 11 di 56 Daniele Contarino
Foglia
La struttura dell’albero n-ario
Radice
Padre
Figlio
Zio Fratello
Dato Puntatori
Nodo
SDA - Alberi 12 di 56 Daniele Contarino
L’albero binario è un albero dove ogni nodo ammette al massimo due figli.
È la struttura dati ad Albero più comune, per i motivi che verranno illustrati in seguito
Albero binario
SDA - Alberi 13 di 56 Daniele Contarino
Albero Binario
Visita In-order
SDA - Alberi 14 di 56 Daniele Contarino
Albero Binario
Visita In-order
SDA - Alberi 15 di 56 Daniele Contarino
Albero Binario
Visita In-order
SDA - Alberi 16 di 56 Daniele Contarino
Albero Binario
Visita In-order
SDA - Alberi 17 di 56 Daniele Contarino
Albero Binario
Visita In-order
SDA - Alberi 18 di 56 Daniele Contarino
Albero Binario
Visita In-order
SDA - Alberi 19 di 56 Daniele Contarino
Albero Binario
Visita In-order
SDA - Alberi 20 di 56 Daniele Contarino
Albero Binario
Visita In-order
SDA - Alberi 21 di 56 Daniele Contarino
Albero Binario
Visita Post-order
SDA - Alberi 22 di 56 Daniele Contarino
Albero Binario
Visita Post-order
SDA - Alberi 23 di 56 Daniele Contarino
Albero Binario
Visita Post-order
SDA - Alberi 24 di 56 Daniele Contarino
Albero Binario
Visita Post-order
SDA - Alberi 25 di 56 Daniele Contarino
Albero Binario
Visita Post-order
SDA - Alberi 26 di 56 Daniele Contarino
Albero Binario
Visita Post-order
SDA - Alberi 27 di 56 Daniele Contarino
Albero Binario
Visita Post-order
SDA - Alberi 28 di 56 Daniele Contarino
Albero Binario
Visita Post-order
SDA - Alberi 29 di 56 Daniele Contarino
Albero Binario
Visita Pre-order
SDA - Alberi 30 di 56 Daniele Contarino
Albero Binario
Visita Pre-order
SDA - Alberi 31 di 56 Daniele Contarino
Albero Binario
Visita Pre-order
SDA - Alberi 32 di 56 Daniele Contarino
Albero Binario
Visita Pre-order
SDA - Alberi 33 di 56 Daniele Contarino
Albero Binario
Visita Pre-order
SDA - Alberi 34 di 56 Daniele Contarino
Albero Binario
Visita Pre-order
SDA - Alberi 35 di 56 Daniele Contarino
Albero Binario
Visita Pre-order
SDA - Alberi 36 di 56 Daniele Contarino
Albero Binario
Visita Pre-order
SDA - Alberi 37 di 56 Daniele Contarino
Didattica: prerequisiti e finalità
Introduzione
Alberi n-ari e alberi binari
Binary Search Tree
Esercizi di laboratorio
Indice degli argomenti
SDA - Alberi 38 di 56 Daniele Contarino
più piccolo
Albero Binario di Ricerca
In un albero binario di ricerca - Binary Search Tree (BST) i nodi figli sono
disposti in maniera ordinata rispetto al valore del nodo
padre
più grande
SDA - Alberi 39 di 56 Daniele Contarino
Inserimento
Albero Binario di Ricerca
SDA - Alberi 40 di 56 Daniele Contarino
Inserimento
Albero Binario di Ricerca
SDA - Alberi 41 di 56 Daniele Contarino
Inserimento
Albero Binario di Ricerca
SDA - Alberi 42 di 56 Daniele Contarino
Inserimento
Albero Binario di Ricerca
SDA - Alberi 43 di 56 Daniele Contarino
Albero Binario di Ricerca
Ricerca
Cerca il nodo con
il valore 12
SDA - Alberi 44 di 56 Daniele Contarino
Albero Binario di Ricerca
Ricerca
Cerca il nodo con
il valore 12
SDA - Alberi 45 di 56 Daniele Contarino
Albero Binario di Ricerca
Ricerca
Cerca il nodo con
il valore 12
SDA - Alberi 46 di 56 Daniele Contarino
Albero Binario di Ricerca
Ricerca
Cerca il nodo con
il valore 12
SDA - Alberi 47 di 56 Daniele Contarino
Complessità computazionale
Albero Binario di Ricerca
h=4
# max di nodi= 15
# passo =1
SDA - Alberi 48 di 56 Daniele Contarino
Complessità computazionale
Albero Binario di Ricerca
h=4
# max di nodi= 15
# passo = 2
SDA - Alberi 49 di 56 Daniele Contarino
Complessità computazionale
Albero Binario di Ricerca
h=4
# max di nodi= 15
# passo = 3
SDA - Alberi 50 di 56 Daniele Contarino
Complessità computazionale
Albero Binario di Ricerca
h=4
# max di nodi= 15
# passo = 4
SDA - Alberi 51 di 56 Daniele Contarino
Complessità computazionale
Albero Binario di Ricerca
h=log
2n
# passi = O(log
2n)
# max di nodi= 2
h-1
SDA - Alberi 52 di 56 Daniele Contarino
Caso Peggiore – Albero sbilanciato
Albero Binario di Ricerca
h=n
# passi = O(n)
SDA - Alberi 53 di 56 Daniele Contarino
Tecniche di bilanciamento
Albero Binario di Ricerca
Alberi Splay
Alberi AVL
Albero Rosso-Nero (Milanista)
SDA - Alberi 54 di 56 Daniele Contarino
Didattica: prerequisiti e finalità
Introduzione
Alberi n-ari e alberi binari
Binary Search Tree
Esercizi di laboratorio
Indice degli argomenti
SDA - Alberi 55 di 56 Daniele Contarino