Esercitazioni di Algoritmi e Strutture Dati

Documenti analoghi
Algoritmi e Strutture Dati

Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 5 - Alberi

Esercitazione 6. Alberi binari di ricerca

Alberi Binari di Ricerca

Alberi binari e alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca

Algoritmi e Strutture Dati. HeapSort

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione

Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen

Per semplicità eliminiamo le ripetizioni nell'albero.

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc

Esercizi proposti 10

Strutture di accesso ai dati: B + -tree

lezione 9 min-heap binario Heap e Alberi posizionali generali

Progettazione di algoritmi

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Tracce. 1. Data una lista di elementi di tipo intero, implementare in C++ le seguenti funzioni

Heap e code di priorità

Alberi binari. Esercizi su alberi binari

Esercizi di Algoritmi e Strutture Dati

ADT Coda con priorità

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

TRIE (albero digitale di ricerca)

Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Problema dell albero di cammini minimi (SPT, Shortest Path Tree) o problema dei cammini minimi :

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Alberi binari. Ilaria Castelli A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione

UNIVERSITA DEGLI STUDI DI PERUGIA

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Problemi, istanze, soluzioni

Grafi: visita generica

Alberi Bilanciati di Ricerca

Algoritmi e strutture dati

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Algoritmi e Principi dell Informatica

Problema: calcolare il massimo tra K numeri

Esercizi Capitolo 7 - Hash

ADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte)

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

STRUTTURE NON LINEARI

Ordinamenti per confronto: albero di decisione

Lezione 9 Alberi binari di ricerca

4.1 Modelli di calcolo analisi asintotica e ricorrenze

Il TDA Tree. Alberi. Esempio. Alberi. Applicazioni. Definizione di albero

B-Tree. Struttura dati usata in applicazioni che necessitano di gestire insiemi di chiavi ordinate Una variante (B+-Tree) è diffusa in:

Algoritmo basato su cancellazione di cicli

Linguaggi e Grammatiche Liberi da Contesto

GRAFI. fig.1 - GRAFI (1) Si avvisa il lettore che certe definizioni che verranno date differiscono da quelle presenti in letteratura.

alberi binari di ricerca (BST)

La codifica di sorgente

Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Riassunto sui dizionari

In molte applicazioni sorge il problema di sapere in quanti modi possibili si può presentare un certo fenomeno.

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Suffix Tree & Suffix Array

La teoria dei grafi permette di esprimere in modo sistematico le LKT e LKC con i metodi della

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Indici ad albero. Albero Binario di Ricerca

Informatica Generale Homework di Recupero 2016

Alberi binari di ricerca

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

Sistema Operativo (Software di base)

I B+ Alberi. Sommario

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees

Sommario. Rappresentazione dei grafi. Ordinamento topologico. Visita in ampiezza Visita in profondità

alberi binari e ricorsione

Corso di elettrotecnica Materiale didattico: i grafi

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

Alberi binari di ricerca

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi

Algoritmi e Strutture Dati

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Transcript:

Esercitazioni di Algoritmi e Strutture Dati III esercitazione, 17/03/2016 Tong Liu 1

ESERCIZIO PRECEDENTE Es 2.5, Il rango di un elemento di una lista di interi é la somma degli elementi successivi piú se stesso. Rango di [3,2,5] é [10,7,5] Creare una funzione che calcola il rango di una lista 2

ALBERI 3

ALBERO In un albero Profondità di un nodo: la lunghezza del percorso dalla radice al nodo (i.e., numero archi attraversati) Livello: l'insieme dei nodi alla stessa profondità Altezza dell'albero: massimo livello delle sue foglie p=0 p=1 p=2 p=3 Livello 3 Altezza albero: 3 4

ALBERI: OPERAZIONI TREE % Costruisce un nuovo albero, costituito da un solo nodo e contenente v Tree(ITEM v) % Legge il valore ITEM read() % Scrive v nel nodo write(item v) % Restituisce il padre; nil se questo nodo è radice TREE parent() % Restituisce il primo figlio; nil se questo nodo è foglia TREE leftmostchild() % Restituisce il prossimo fratello del nodo a cui è applicato; nil se assente TREE rightsibling() % Inserisce il sottoalbero t come primo figlio di questo nodo insertchild(tree t) precondition: t.parent() = nil % Inserisce il sottoalbero t come successivo fratello di questo nodo insertsibling(tree t) precondition: t.parent() = nil % Distrugge il sottoalbero radicato nel primo figlio di questo nodo deletechild() % Distrugge il sottoalbero radicato nel prossimo fratello di questo nodo deletesibling() 5

VISITA : PRE-VISITA visitaprofondità(tree t) precondition: t = nil (1) esame anticipato del nodo radice di t TREE u t.leftmostchild() while u = nil do visitaprofondità(u) u u.rightsibling() (2) esame posticipato del nodo radice di t T a b e c d f g Sequenza: a b c d e f g 6

VISITA : POST-VISITA visitaprofondità(tree t) precondition: t = nil (1) esame anticipato del nodo radice di t TREE u t.leftmostchild() while u = nil do visitaprofondità(u) u u.rightsibling() (2) esame posticipato del nodo radice di t T a b e c d f g Sequenza: c d b f g e a 7

VISITA : IN-VISITA invisita(tree t) precondition: t = nil TREE u t.leftmostchild() integer k 0 while u = nil and k<ido k k +1 invisita(u) u.rightsibling() u esame simmetrico del nodo t while u = nil do invisita(u) u u.rightsibling() T a b e c d f g Sequenza (i=1): c b d a f e g 8

VISITA : IN AMPIEZZA visitaampiezza(tree t) precondition: t = nil Queue() Q.enqueue(t) QUEUE Q while not Q.isEmpty() do TREE u Q.dequeue() esame per livelli del nodo u u u.leftmostchild() while u = nil do Q.enqueue(u) u u.rightsibling() T a b e c d f g Sequenza: a b e c d f g

ESERCIZIO VISITE [Libro 5.4] Gli ordini di visita di un albero binario di 9 nodi sono i seguenti: A, E, B, F, G, C, D, I, H(anticipato) B, G, C, F, E, H, I, D, A (posticipato) B, E, G, F, C, A, D, H, I (simmetrico). Si ricostruisca l albero binario e si illustri brevemente il ragionamento. 10

SOLUZIONE 11

ESERCIZIO ALTEZZA [Libro 5.1] L altezza di un albero ordinato è il massimo livello delle sue foglie. Si fornisca una funzione che calcoli in tempo ottimo l altezza di un albero ordinato T di n nodi. 12

ESERCIZIO CANCELLA [Libro 5.2] Dato un albero ordinato i cui nodi contengono valori interi, se ne vogliono cancellare tutte le foglie per le quali il percorso radice-foglia ha somma complessiva dei valori uguale a k. Fornire una procedura di complessità ottima. (Suggerimento: utilizzare l algoritmo pre-visita, modificare tale funzione in modo che la funzione ritorna un bool per dare segnale di cancellazione) 13

SOLUZIONI Le soluzioni si trovano nella pagina 104 del libro: Alan Bertossi, Alberto Montresor. Algoritmi e Strutture di Dati, 3a edizione. Città Studi Edizioni, 2014 14

LINKS Visita Albero: https://www.youtube.com/watch?v=typuvezf8xe Approfondimenti: https://en.wikipedia.org/wiki/tree_traversal 15