Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Documenti analoghi
Alberi. Definizioni principali

alberi tipo astratto, implementazione, algoritmi

Algoritmi e Strutture Dati

Alberi ed Alberi Binari

Alberi. In informatica, un albero è un modello astratto di una struttura dati gerarchica

Implementazione ADT: Alberi

Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati

23/10/2016. gli alberi. alcune definizioni. un esempio. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica.

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione

Laboratorio di Python

Alberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica

Tipi di dato e Strutture dati elementari

Organigramma Gerarchia. (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre

Albero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST)

lezione 9 min-heap binario Heap e Alberi posizionali generali

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

Alberi binari e alberi binari di ricerca

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Heap e code di priorità

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Alberi binari (radicati e ordinati) della radice Il padre del nodo 5 e del nodo 3

Algoritmi e Strutture Dati

Alberto Montresor Università di Trento

ADT Dizionario. Ordered search table. Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D:

Esercitazione 3. Heapsort

Informatica 3. Informatica 3. LEZIONE 14: Alberi binari: introduzione. Lezione 14 - Modulo 1. Definizioni. Introduzione. Definizioni e proprietà

Problemi di ordinamento

Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.

ADT Coda con priorità

Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.

Alberi binari di ricerca

Introduzione alla gestione delle collezioni di oggetti

Algoritmi e Strutture Dati. HeapSort

Algoritmi e Strutture Dati

ALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI

Informatica 3. Informatica 3. LEZIONE 17: Alberi generici. Lezione 17 - Modulo 1. Introduzione. ADT dell albero generico.

Note per la Lezione 4 Ugo Vaccaro

Laboratorio di Algoritmi e Strutture Dati. Code con Priorità

Alberi Binari di Ricerca

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

heap heap heap? max- e min-heap concetti ed applicazioni heap = catasta condizione di heap non è una struttura ordinata

Algoritmi e Strutture Dati. Alberi

Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.

Espressioni aritmetiche

Esercitazioni di Algoritmi e Strutture Dati

Esercitazione 6. Alberi binari di ricerca

Alberi binari di ricerca

Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari.

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

Alberi Binari di Ricerca

Divide et impera su alberi

Indice come albero binario di ricerca!

Esercizi su alberi binari

Implementazione con alberi binari di ricerca

alberi completamente sbilanciati

ALGORITMI E STRUTTURE DATI

Alberi binari e di ricerca. Parte 1 BST e GUI. Introduzione. 1. Minimo Antenato Comune. 2. Vistita in ampiezza

Un albero completamente bilanciato o pieno (full) alberi completamente sbilanciati. Un albero binario completo

Un esempio di mutua ricorsione

CONCRETE (interne): è la effettiva implementazione della struttura nel linguaggio e relativa allocazione in memoria della struttura astratta

Per semplicità eliminiamo le ripetizioni nell'albero.

Alberi e alberi binari I Un albero è un caso particolare di grafo

dizionari alberi bilanciati

Algoritmi e Strutture Dati Laboratorio 15/12/2008. Daniele Loiacono

Indici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2

Laboratorio di Python

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Capitolo 3: Gli alberi. Alberi n-ari

Lezione 7 Alberi binari: visite e alberi di ricerca

Implementazione dell albero binario in linguaggio C++

Heap Ordinamento e code di priorità. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 9

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Alberi Binario in Java

Alberi di ricerca. Alberi binari di ricerca. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

ADT ALBERO BINARIO (tree)) ADT ALBERO BINARIO

In questa lezione Alberi binari di ricerca: la cancellazione

Alberi binari. Alberi binari di ricerca

Alberi. Se x è il genitore di y, allora y è un figlio di x. Un albero binario è un albero in cui ogni nodo ha al massimo due figli.

Lezione 5. Giuditta Franco. 19 Febbraio 2008

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Esercizi su strutture dati

Un esempio: l ADT Dizionario (mutabile) Definizione. Alberi binari di ricerca (BST = binary search tree) search(chiave k) -> elem

Albero Binario GT 7.3. interfacce di Positio<E>, Tree<E>, e BinaryTree<E>; il file TestLinkedBinaryTree.java

PROVETTE D ESAME. Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Esercizi di Algoritmi e Strutture Dati

Homework 2. 1 Il problema. Corso di Fondamenti di Informatica II. 26 Novembre L'Albero dei divisori

Lezione 12 Tabelle Hash

TRIE (albero digitale di ricerca)

Alberi binari. Esercizi su alberi binari

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

Strutture di accesso ai dati: B + -tree

Esercizi di Algoritmi e Strutture Dati

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

Strutture dati non lineari. Esercitazione 3. Rappresentazione della Conoscenza Daniele Nardi, 2008Esercitazione 3 0

Transcript:

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Sommario Implementazione con Vettori Implementazione con Strutture Collegate

Concetti di base Tipo di dato non lineare Memorizza informazioni in modo gerarchico Padre di x Radice x Fratelli di x Figli di x Foglie

Terminologia Terminologia Livello di un nodo: lunghezza (N.ro nodi) percorso unico radice-nodo Ramo percorso radice-foglia Altezza albero lunghezza ramo piu' lungo

Operazioni Operazioni per ADT albero element(v): restituisce l'elemento memorizzato nel nodo v root(): restituisce il nodo radice parent(v): restituisce il genitore del nodo v children(v): restituisce i gli di v isleaf(v): vero se v e' una foglia isroot(v): vero se v e' la radice

Altre Operazioni Altre Operazioni per ADT albero livello di un nodo altezza dell'albero numero nodi numero foglie arita': massimo numero di gli di un nodo isempty: vero se l'albero ha zero nodi

Implementazione con Array paralleli Array Paralleli Indicizziamo ciascun nodo con un identicativo (Intero) Un vettore E[num nodi] di elementi (e.g., Integer, Studente, etc.) per accedere alle informazioni contenute nel nodo E[i] = elemento contenuto nel nodo con id i Tre vettori di interi per mantenere la struttura: Padre P[i] = identicativo del padre di i (-1 se radice) Figlio F[i] = identicativo del primo glio di i (-1 se foglia) Fratello Fr[i] = identicativo del fratello successivo di i (-1 se non ha fratelli) Necessario un ordinamento tra gli e fratelli e.g, Il primo glio e' quello piu' a sinistra, il fratello successivo e' il primo fratello a destra.

Implementazione con Array paralleli: Esempio Example (Array paralleli) 2 1 3 5 P Fi Fr E 4 6 7 1-1 2-1 e1 2 1-1 3 e2 3 1 4 5 e3 4 3-1 -1 e4 5 1 6-1 e5 6 5-1 7 e6 7 5-1 -1 e7

Implementazione tramite strutture collegate Nodo dell'albero Deniamo un nodo che contiene: 1 l'elemento da rappresentare 2 un riferimento al nodo padre 3 un riferimento al primo glio 4 un riferimento al fratello successivo Deniamo metodi opportuni per manipolare le informazioni contenute nel nodo Classe TreeNode.java

Implementazione Tramite Strutture Collegate: Esempio Example (Strutture Collegate) 1 1 2 3 5 2 3 5 4 6 7 4 6 7

Esercizi Esercizi su alberi Calcolare il livello di un nodo, implementare il metodo level() della classe TreeNode.java. Assumere che il livello del padre sia 1 Calcolare l'altezza di un sottoalbero, implementare il metodo height() della classe TreeNode.java. Assumere che l'altezza di una foglia sia 1.

Implementazione tramite strutture collegate L'albero L'albero viene denito con un riferimento al nodo radice Deniamo metodi opportuni per la struttura albero visite metodi per gestire le informazioni rilevanti Interfaccia Tree.java Classe LinkedTree.java

Tipologie di visite Visita: accedere a tutti gli elementi dell'albero, Ordine di accesso denisce la tipologia di visita Denite in maniera ricorsiva Profondita' pre-ordine in-ordine post-ordine Ampiezza

in profondita': pre-ordine Visita in Pre-Ordine Prima il nodo poi i gli pre-ordine(nodo) se il nodo e' null stop accedi all'elemento del nodo (e.g. stampa) visita tutti i sottoalberi del nodo

in Profondita': post-ordine Post-ordine prima i gli poi il nodo post-ordine(nodo) se il nodo e' null stop visita tutti i sottoalberi del nodo accedi all'elemento del nodo (e.g. stampa)

in Profondita': in-ordine In-ordine Appropriata quando gli elementi dell'albero possono essere ordinati binari di ricerca in-ordine(nodo) se il nodo e' null stop visita il sottoalbero del primo glio accedi all'elemento del nodo (e.g. stampa) visita tutti gli altri sottoalberi del nodo

in Profondita' in Profondita' 1 2 7 2 3 5 1 4 6 1 3 6 4 6 7 3 5 7 2 4 5 Pre ordine In ordine Post ordine

Visita in Ampiezza Visita in Ampiezza Visita a livelli Utilizza una coda di appoggio visita(nodo) metti in coda nodo no a quando ho elementi nella coda estrai primo nodo della coda accedi all'elemento del primo nodo metti in coda tutti i gli del nodo estratto

Visita in Ampiezza Visita in Ampiezza 1 2 3 4 5 6 7

Esercizi Esercizi su Realizzare la visita in post ordine, implementare il metodo postordine(...) della classe LinkedTree.java Realizzare la visita in ampiezza, implementare il metodo ampiezza(...) della classe LinkedTree.java Calcolare il numero di nodi di un albero, realizzare il metodo numnodi() della classe LinkedTree.java Calcolare l'arita; di un albero, realizzare il metodo arita(...) della classe LinkedTree.java