• Non ci sono risultati.

Struttura dati ad Albero

N/A
N/A
Protected

Academic year: 2021

Condividi "Struttura dati ad Albero"

Copied!
56
0
0

Testo completo

(1)

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

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

SDA - Alberi 8 di 56 Daniele Contarino

Strutture dati fondamentali

Introduzione

(9)

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

(10)

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

(11)

SDA - Alberi 11 di 56 Daniele Contarino

Foglia

La struttura dell’albero n-ario

Radice

Padre

Figlio

Zio Fratello

Dato Puntatori

Nodo

(12)

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

(13)

SDA - Alberi 13 di 56 Daniele Contarino

Albero Binario

Visita In-order

(14)

SDA - Alberi 14 di 56 Daniele Contarino

Albero Binario

Visita In-order

(15)

SDA - Alberi 15 di 56 Daniele Contarino

Albero Binario

Visita In-order

(16)

SDA - Alberi 16 di 56 Daniele Contarino

Albero Binario

Visita In-order

(17)

SDA - Alberi 17 di 56 Daniele Contarino

Albero Binario

Visita In-order

(18)

SDA - Alberi 18 di 56 Daniele Contarino

Albero Binario

Visita In-order

(19)

SDA - Alberi 19 di 56 Daniele Contarino

Albero Binario

Visita In-order

(20)

SDA - Alberi 20 di 56 Daniele Contarino

Albero Binario

Visita In-order

(21)

SDA - Alberi 21 di 56 Daniele Contarino

Albero Binario

Visita Post-order

(22)

SDA - Alberi 22 di 56 Daniele Contarino

Albero Binario

Visita Post-order

(23)

SDA - Alberi 23 di 56 Daniele Contarino

Albero Binario

Visita Post-order

(24)

SDA - Alberi 24 di 56 Daniele Contarino

Albero Binario

Visita Post-order

(25)

SDA - Alberi 25 di 56 Daniele Contarino

Albero Binario

Visita Post-order

(26)

SDA - Alberi 26 di 56 Daniele Contarino

Albero Binario

Visita Post-order

(27)

SDA - Alberi 27 di 56 Daniele Contarino

Albero Binario

Visita Post-order

(28)

SDA - Alberi 28 di 56 Daniele Contarino

Albero Binario

Visita Post-order

(29)

SDA - Alberi 29 di 56 Daniele Contarino

Albero Binario

Visita Pre-order

(30)

SDA - Alberi 30 di 56 Daniele Contarino

Albero Binario

Visita Pre-order

(31)

SDA - Alberi 31 di 56 Daniele Contarino

Albero Binario

Visita Pre-order

(32)

SDA - Alberi 32 di 56 Daniele Contarino

Albero Binario

Visita Pre-order

(33)

SDA - Alberi 33 di 56 Daniele Contarino

Albero Binario

Visita Pre-order

(34)

SDA - Alberi 34 di 56 Daniele Contarino

Albero Binario

Visita Pre-order

(35)

SDA - Alberi 35 di 56 Daniele Contarino

Albero Binario

Visita Pre-order

(36)

SDA - Alberi 36 di 56 Daniele Contarino

Albero Binario

Visita Pre-order

(37)

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

(38)

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

(39)

SDA - Alberi 39 di 56 Daniele Contarino

Inserimento

Albero Binario di Ricerca

(40)

SDA - Alberi 40 di 56 Daniele Contarino

Inserimento

Albero Binario di Ricerca

(41)

SDA - Alberi 41 di 56 Daniele Contarino

Inserimento

Albero Binario di Ricerca

(42)

SDA - Alberi 42 di 56 Daniele Contarino

Inserimento

Albero Binario di Ricerca

(43)

SDA - Alberi 43 di 56 Daniele Contarino

Albero Binario di Ricerca

Ricerca

Cerca il nodo con

il valore 12

(44)

SDA - Alberi 44 di 56 Daniele Contarino

Albero Binario di Ricerca

Ricerca

Cerca il nodo con

il valore 12

(45)

SDA - Alberi 45 di 56 Daniele Contarino

Albero Binario di Ricerca

Ricerca

Cerca il nodo con

il valore 12

(46)

SDA - Alberi 46 di 56 Daniele Contarino

Albero Binario di Ricerca

Ricerca

Cerca il nodo con

il valore 12

(47)

SDA - Alberi 47 di 56 Daniele Contarino

Complessità computazionale

Albero Binario di Ricerca

h=4

# max di nodi= 15

# passo =1

(48)

SDA - Alberi 48 di 56 Daniele Contarino

Complessità computazionale

Albero Binario di Ricerca

h=4

# max di nodi= 15

# passo = 2

(49)

SDA - Alberi 49 di 56 Daniele Contarino

Complessità computazionale

Albero Binario di Ricerca

h=4

# max di nodi= 15

# passo = 3

(50)

SDA - Alberi 50 di 56 Daniele Contarino

Complessità computazionale

Albero Binario di Ricerca

h=4

# max di nodi= 15

# passo = 4

(51)

SDA - Alberi 51 di 56 Daniele Contarino

Complessità computazionale

Albero Binario di Ricerca

h=log

2

n

# passi = O(log

2

n)

# max di nodi= 2

h

-1

(52)

SDA - Alberi 52 di 56 Daniele Contarino

Caso Peggiore – Albero sbilanciato

Albero Binario di Ricerca

h=n

# passi = O(n)

(53)

SDA - Alberi 53 di 56 Daniele Contarino

Tecniche di bilanciamento

Albero Binario di Ricerca

 Alberi Splay

 Alberi AVL

 Albero Rosso-Nero (Milanista)

(54)

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

(55)

SDA - Alberi 55 di 56 Daniele Contarino

 Sviluppo BST in C99 (procedurale)

 Sviluppo BST in Java (Object-Oriented)

Esercitazione di laboratorio

(56)

Alberi

Daniele Contarino

Didattica di Algoritmi e Programmazione Laboratorio di Didattica di Programmazione

Percorso Abilitante Speciale A.A. 2013/14

Riferimenti

Documenti correlati

Calcolare il momento di inerzia rispetto ad un asse ortogonale alla ruota e passante per il centro e rispetto ad un asse a questo parallelo e passante per un punto del

Scrivere una funzione che prende in input un albero binario e restituisce in output una stampa dell’albero in notazione a parentesi, come visto nella prima sezione.. F Scrivere

• In un albero binario la profondità di un nodo è la lunghezza del percorso dalla radice al nodo (cioè il numero di archi tra la radice e il nodo). • L’altezza dell’albero

• Nella rappresentazione basata sui nodi ogni nodo di un albero binario avrà due riferimenti a ciascuno dei figli (Left e Right). In alcune implementazioni si può avere anche

L’albero risultante dovr avere la seguente propriet` a: per ogni nodo u dell’albero, tutti i nodi nel sottoalbero sinistro hanno chiave maggiore della chiave di u e tutti i nodi

Scrivere un programma che legga da tastiera una sequenza di n interi NON distinti e li inserisca senza duplicati in una tabella hash di dimensione 2n posizioni utilizzando

Scrivere un programma che legga da tastiera una sequenza di N interi di- stinti e li inserisca in un albero binario di ricerca (senza ribilanciamento).. Il programma deve

Dato un albero binario i cui nodi sono colorati di rosso o di nero, progettare un algoritmo efficiente che calcoli il numero di nodi aventi lo stesso numero di discendenti rossi