Informatica 3. LEZIONE 15: Implementazione di alberi binari - BST. Modulo 1: Implementazione degli alberi binari Modulo 2: BST
|
|
- Silvio Poggi
- 5 anni fa
- Visualizzazioni
Transcript
1 Informatica 3 LEZIONE 15: Implementazione di alberi binari - BST Modulo 1: Implementazione degli alberi binari Modulo 2: BST
2 Informatica 3 Lezione 15 - Modulo 1 Implementazione degli alberi binari
3 Introduzione Implementazione: alberi binari basati su puntatori discussione sullo spazio necessario alberi binary basati su array
4 Implementazione (1) Scelta: stessa definizione per i nodi interni e le foglie?
5 Implementazione (2) Esempi: albero delle espressioni, albero di Huffmann, PR quadtree,... 4x(2x+a)-c
6 Implementazione tramite union (1) enum Nodetype {leaf, internal}; class VarBinNode { // Generic node class public: Nodetype mytype; // Store type for node union { struct { // Internal node VarBinNode* left; // Left child VarBinNode* right; // Right child Operator opx; // Value } intl; }; Operand var; // Leaf: Value only
7 Implementazione tramite union (2) }; // Leaf constructor VarBinNode(const Operand& val) { mytype = leaf; var = val; } // Internal node constructor VarBinNode(const Operator& op, VarBinNode* l, VarBinNode* r) { mytype = internal; intl.opx = op; intl.left = l; intl.right = r; } bool isleaf() { return mytype == leaf; } VarBinNode* leftchild() { return intl.left; } VarBinNode* rightchild() { return intl.right; }
8 Implementazione tramite union (3) // Preorder traversal void traverse(varbinnode* subroot) { } if (subroot == NULL) return; if (subroot->isleaf()) cout << "Leaf: << subroot->var << "\n"; else { cout << "Internal: << subroot->intl.opx << "\n"; traverse(subroot->leftchild()); traverse(subroot->rightchild()); }
9 Implementazione tramite ereditarietà (1) class VarBinNode { // Abstract base class public: virtual bool isleaf() = 0; }; class LeafNode : public VarBinNode { // Leaf private: Operand var; // Operand value public: LeafNode(const Operand& val) { var = val; } // Constructor }; bool isleaf() { return true; } Operand value() { return var; }
10 Implementazione tramite ereditarietà (2) // Internal node class IntlNode : public VarBinNode { private: VarBinNode* left; // Left child VarBinNode* right; // Right child Operator opx; // Operator value public: IntlNode(const Operator& op, VarBinNode* l, VarBinNode* r) { opx = op; left = l; right = r; } bool isleaf() { return false; } VarBinNode* leftchild() { return left; } VarBinNode* rightchild() { return right; } Operator value() { return opx; } };
11 Implementazione tramite ereditarietà (3) // Preorder traversal void traverse(varbinnode *subroot) { } if (subroot == NULL) return; // Empty if (subroot->isleaf()) // Do leaf node cout << "Leaf: " << ((LeafNode *)subroot)->value() << endl; else { // Do internal node cout << "Internal: " << ((IntlNode *)subroot)->value() << endl; traverse((intlnode *)subroot)->leftchild()); traverse(((intlnode *)subroot)->rightchild()); }
12 Ereditarietà - 2^ versione (1) class VarBinNode { // Abstract base class public: virtual bool isleaf() = 0; virtual void trav() = 0; }; class LeafNode : public VarBinNode { // Leaf private: Operand var; // Operand value public: LeafNode(const Operand& val) { var = val; } // Constructor bool isleaf() { return true; } Operand value() { return var; } void trav() { cout << "Leaf: " << value() << endl; } };
13 Ereditarietà - 2^ versione (2) class IntlNode : public VarBinNode { private: VarBinNode* lc; // Left child VarBinNode* rc; // Right child Operator opx; // Operator value public: IntlNode(const Operator& op, VarBinNode* l, VarBinNode* r) { opx = op; lc = l; rc = r; } bool isleaf() { return false; } VarBinNode* left() { return lc; } VarBinNode* right() { return rc; } Operator value() { return opx; } void trav() { cout << "Internal: " << value() << endl; if (left()!= NULL) left()->trav(); if (right()!= NULL) right()->trav(); } };
14 Ereditarietà - 2^ versione (3) // Preorder traversal void traverse(varbinnode *root) { if (root!= NULL) root->trav(); }
15 Differenze Prima versione: semplice aggiungere nuovi metodi per l attraversamento dell albero Seconda versione: l aggiunta di nuovi metodi per l albero richiede di aggiungere dei metodi a livello di nodo Prima versione: occorre considerare sempre il tipo di nodo Seconda versione: il tipo di nodo viene determinato a tempo di esecuzione (late binding) Prima versione: preferibile se le sottoclassi dei tipi di nodi vengono tenute nascoste alla classe albero Seconda versione: preferibile se i nodi hanno anche vita indipendente
16 Spazio necessario (1) Overhead = spazio necessario per mantenere la struttura dati (spazio non utilizzato per memorizzare i dati) dipende da diversi fattori: nodi con stessa definizione oppure definizioni diverse per nodi interni e nodi foglia albero esteso con puntatori al padre albero pieno o non pieno
17 Spazio necessario (2) Esempio: n numero dei nodi p spazio occupato dal puntatore d spazio occupato dai dati Tutti i nodi sono uguali e hanno i puntatori ai figli: Spazio totale: n(2p + d) Overhead: 2pn Se p = d l overhead è pari a 2p/(2p + d) = 2/3 I nodi foglia non hanno i puntatori e l albero è pieno: n/2 (2p) p n/2 (2p) + dn p+d Se p = d l overhead è pari a 1/2 Se i dati vengono memorizzati solo nelle foglie: 2p / (2p + d) per p = d dà un overhead di 2/3
18 Implementazione tramite array (1) Alberi completi: Posizione Padre Figlio di sinistra Figlio di destra Fratello di sinistra Fratello di destra
19 Implementazione tramite array (2) Padre (i) = (i-1) / 2 se i!= 0 Figlio di sinistra (i) = 2i + 1 se 2i + 1 < n Figlio di destra (i) = 2i + 2 se 2i + 2 < n Fratello di sinistra (i) = i - 1 se i è pari Fratello di destra (i) = i + 1 se i è dispari e i + 1 < n
20 Implementazione tramite cursori Alcuni linguaggi di programmazione non dispongono di puntatori Indice Dati Sinistra Destra 1 A B C D E F MAX
21 Informatica 3 Lezione 15 - Modulo 2 Binary Search Tree (BST)
22 Introduzione Definizione di Binary Search Tree (BST) albero binario che soddisfa le seguenti proprietà: ad ogni nodo è associata una chiave le chiavi di tutti i nodi che si trovano nel sotto-albero di sinistra di un nodo con chiave K hanno valore inferiore a K le chiavi di tutti i nodi che si trovano nel sotto-albero di destra di un nodo con chiave K hanno valore maggiore o uguale a K
23 Introduzione (2) La funzione di ordinamento è gratuita : l attraversamento in ordine simmetrico ( in order ) produce come risultato l enumerazione di tutti i nodi dal più piccolo al più grande
24 Ricerca di un elemento Input: Radice di un sotto-albero R Chiave dell elemento da cercare K Algoritmo: Se R ha valore di chiave pari a K la ricerca è terminata (search hit) Se la chiave K è inferiore alla chiave del nodo radice R si prosegue la ricerca nel sotto-albero di sinistra Se la chiave K è maggiore della chiave del nodo radice R si prosegue la ricerca nel sotto-albero di destra Il processo continua finchè si trova la chiave oppure si arriva ad un nodo foglia Se si raggiunge un nodo foglia senza incontrare K l elemento non esiste nel BST (search miss)
25 Ricerca di un elemento (2) Esempio di ricerca di un elemento presente nel BST: ricerca dell elemento 7 7 è minore di 37 > visita del sotto-albero di sinistra 7 è minore di 24 > visita del sotto-albero di sinistra elemento trovato
26 Ricerca di un elemento (3) Esempio di ricerca di un elemento non presente nel BST: ricerca dell elemento è minore di 37 > visita del sotto-albero di sinistra 34 è maggiore di 24 > visita del sotto-albero di destra 34 è maggiore di è un nodo foglia > ricerca terminata: l elemento non è presente
27 Inserimento di un elemento L inserimento è una ricerca con esito negativo seguita dalla sostituzione del link NULL (di sinistra o di destra di un nodo esterno) con il puntatore al nodo da inserire Esempio: inserimento del nodo 34: 34 è minore di 37 > visita del sotto-albero di sinistra 34 è maggiore di 24 > visita del sotto-albero di destra 32 è un nodo foglia - 34 è maggiore di 32 > inserimento a destra 34
28 Inserimento di un elemento già Osservazione: presente se occorre inserire un nodo la cui chiave è già presente nel BST il nuovo elemento viene sistemato nel sotto-albero di destra del nodo già presente Un effetto collaterale di questo modo di procedere è che i nodi con chiavi replicate non sono necessariamente contigui all interno del BST Esempio: inserimento di un elemento con chiave Per cercare tutti gli elementi con una determinata chiave si parte dal primo nodo trovato e si procede con la ricerca nel sotto-albero di destra
29 Cancellazione di un nodo Caso più semplice: eliminazione del nodo con chiave minima (nell esempio rimozione del nodo 5) sotto-radice Si visita l albero partendo dalla radice e continuando a scendere nel sotto-albero di sinistra fino a quando non si arriva al nodo il cui puntatore di sinistra è NULL (nodo di chiave minima) Chiamiamo questo nodo S Per rimuovere S è sufficiente fare in modo che il puntatore a sinistra del padre di S punti al figlio destro di S
30 Cancellazione di un nodo (2) Eliminazione di un nodo R con chiave non minima Si visita l albero partendo dalla radice fino a trovare l elemento da cancellare R Se R non ha figli allora il padre di R dovrà puntare a NULL Se R ha un figlio allora il padre di R dovrà puntare al figlio di R Se R ha due figli si può adottare il seguente approccio: si fa puntare R ad uno dei due sotto-alberi di R si applica la funzione di inserimento per tutti i nodi dell altro sotto-albero
31 Cancellazione di un nodo (3) Approccio alternativo: si cerca un valore in uno dei sotto-alberi che possa sostituire il valore di R (preservando le proprietà del BST) R può essere sostituito dal nodo con: la più piccola chiave maggiore del nodo rimosso la più grande chiave minore del nodo rimosso
32 Cancellazione di un nodo (4) Esempio di cancellazione del nodo 37 può essere sostituito dal nodo con: la più piccola chiave maggiore del nodo rimosso: 40 la più grande chiave minore del nodo rimosso: 32
33 Cancellazione di un nodo Osservazioni generali: Per semplificare gli algoritmi di ricerca le chiavi di ricerca sono integrate nella struttura dati Ciò richiede tipicamente un implementazione più complicata per le operazioni di cancellazione dei nodi Metodi di cancellazione alternativi: cancellazione lazy (pigra): i nodi vengono marcati con un flag come cancellati ma non vengono eliminati dalla struttura dati» gli algoritmi di ricerca devono tenere in considerazione questi flag» svantaggi: eccessive cancellazioni portano a strutture dati che sprecano spazio di memoria e tempo nella ricerca» per attenuare questi svantaggi si possono effettuare ricostruzioni periodiche della struttura oppure utilizzare i nodi cancellati per futuri inserimenti
34 Prestazioni dei BST I tempi di esecuzione degli algoritmi definiti sui BST dipendono dalla forma dell albero Quando l albero è perfettamente bilanciato ci sono circa log N nodi tra la radice e ciascun nodo esterno La forma dell albero dipende dall ordine con il quale gli elementi vengono inseriti Un BST di N nodi può essere costituito da una catena di nodi di altezza N Ciò accade quando gli elementi vengono inseriti ordinati Nel caso peggiore la ricerca di un elemento in un BST con N chiavi richiede N confronti 35
35 Prestazioni dei BST (2) RICERCA di un elemento: Un albero bilanciato ha un costo pari a Θ(log n) nel caso medio Se l albero non è bilanciato il costo nel caso peggiore è Θ(n) INSERIMENTO di N nodi: Se l albero è bilanciato ogni inserimento richiede un costo pari a Θ(log n) > per n nodi: Θ(n log n) Se i nodi vengono inseriti in ordine (albero sbilanciato) il costo dell inserimento diventa Θ(n 2 ) VISITA DELL ALBERO: Costa Θ(n) indipendentemente dal bilanciamento dell albero
36 BST Search template <class Key, class Elem> bool BST<Key, Elem>:: findhelp(binnode<elem>* subroot, const Key& K, Elem& e) const { if (subroot == NULL) return false; else if (K < subroot->val()) return findhelp(subroot->left(), K, e); else if (K > subroot->val())) return findhelp(subroot->right(), K, e); else { e = subroot->val(); return true; } }
37 BST Insert template <class Key, class Elem> BinNode<Elem>* BST<Key,Elem>:: inserthelp(binnode<elem>* subroot, const Elem& val) { if (subroot == NULL) // Empty: create node return new BinNodePtr<Elem>(val,NULL,NULL); if (val < subroot->val()) subroot->setleft(inserthelp(subroot->left(), val)); else subroot->setright( inserthelp(subroot->right(), val)); // Return subtree with node inserted return subroot; }
38 Remove Minimum Value template <class Key, class Elem> BinNode<Elem>* BST<Key, Elem>:: deletemin(binnode<elem>* subroot, BinNode<Elem>*& min) { if (subroot->left() == NULL) { min = subroot; return subroot->right(); } else { // Continue left subroot->setleft( deletemin(subroot->left(), min)); return subroot; } }
39 BST Remove template <class Key, class Elem> BinNode<Elem>* BST<Key,Elem>:: removehelp(binnode<elem>* subroot, const Key& K, BinNode<Elem>*& t) { if (subroot == NULL) return NULL; else if (K < subroot->val()) subroot->setleft( removehelp(subroot->left(), K, t)); else if (K > subroot->val()) subroot->setright( removehelp(subroot->right(), K, t));
40 BST Remove (2) else { // Found it: remove it BinNode<Elem>* temp; t = subroot; if (subroot->left() == NULL) subroot = subroot->right(); else if (subroot->right() == NULL) subroot = subroot->left(); else { // Both children are non-empty subroot->setright( deletemin(subroot->right(), temp)); Elem te = subroot->val(); subroot->setval(temp->val()); temp->setval(te); t = temp; } } return subroot; }
41 Conclusioni I BST sono semplici da implementare e sono efficienti quando l albero è bilanciato Se non controllata questa struttura dati tende a non essere perfettamente bilanciata, portando a peggioramenti delle prestazioni Esistono strutture dati alternative (AVL tree, Splay tree, ecc.) che al prezzo di un maggiore costo per gli inserimenti e le cancellazioni cercano di mantenere bilanciato l albero
Introduzione Implementazione (1)
Informatica 3 Informatica 3 LEZIONE 15: Implementazione di alberi binari - BST Modulo 1: Implementazione degli alberi binari Modulo 2: BST Lezione 15 - Modulo 1 Implementazione degli alberi binari Politecnico
DettagliInformatica 3. LEZIONE 17: Alberi generici. Modulo 1: Definizione e ADT Modulo 2: Implementazione Modulo 3: Alberi e classi di equivalenza
Informatica 3 LEZIONE 17: Alberi generici Modulo 1: Definizione e ADT Modulo 2: Implementazione Modulo 3: Alberi e classi di equivalenza Informatica 3 Lezione 17 - Modulo 1 Definizione e ADT Introduzione
DettagliInformatica 3. Informatica 3. LEZIONE 17: Alberi generici. Lezione 17 - Modulo 1. Introduzione. ADT dell albero generico.
Informatica 3 Informatica 3 LEZIONE 17: lberi generici Lezione 17 - Modulo 1 Modulo 1: Definizione e DT Modulo 2: Implementazione Modulo 3: lberi e classi di equivalenza Definizione e DT Politecnico di
DettagliInformatica 3. LEZIONE 16: Heap - Codifica di Huffmann. Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann
Informatica 3 LEZIONE 16: Heap - Codifica di Huffmann Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann Informatica 3 Lezione 16 - Modulo 1 Heap e code di priorità Introduzione
DettagliInformatica 3. Informatica 3. LEZIONE 14: Alberi binari: introduzione. Lezione 14 - Modulo 1. Definizioni. Introduzione. Definizioni e proprietà
Informatica 3 Informatica 3 LEZIONE 14: Alberi binari: introduzione Lezione 14 - Modulo 1 Modulo 1: Definizioni e proprietà Modulo 2: Attraversamento degli alberi binari Definizioni e proprietà Politecnico
DettagliAlgoritmi e Strutture Dati Laboratorio 20/10/2008. Prof. Pier Luca Lanzi
Algoritmi e Strutture Dati Laboratorio 20/10/2008 Primo Esercizio 2 Scrivere un programma per misurare il tempo necessario per ordinare un vettore di interi contenente 10-10 7 elementi utilizzando l insertion
DettagliAlbero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST)
Albero binario 2 Alberi binari (introduzione) Struttura di dati bidimensionale formata da nodi costituiti ciascuno dai dati da memorizzare e da due link Ver. 2.4 20 - Claudio Fornaro - Corso di programmazione
DettagliStrutture dati Alberi binari
Strutture dati - 2 - Alberi binari Definizione L albero è un insieme di elementi (nodi), sui quali è definita una relazione di discendenza con due proprietà: esiste un solo nodo radice senza predecessori
DettagliAlberi binari e alberi binari di ricerca
Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Alberi Un albero è una collezione non vuota di: nodi con nome e informazioni
DettagliAlgoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Appello del 24 Gennaio 2007 Esercizio 1 (ASD) 1. Sia T (n) = T (n/6) + T (n/3) + Θ(n). Considerare ciascuna delle seguenti affermazioni
DettagliAlberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica giovedì 9
DettagliAlberi di ricerca. Dizionari. Definizione. Alberi binari di ricerca (BST = binary search tree) Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Dizionari Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato dizionario Alberi di ricerca Basato su materiale di C. Demetrescu, I. Finocchi, G.F.
DettagliEsercitazione 6. Alberi binari di ricerca
Esercitazione 6 Alberi binari di ricerca Struttura base Rappresentabile attraverso una struttura dati concatenata in cui ogni nodo è un oggetto di tipo struttura Ogni nodo contiene: campo chiave (key)
DettagliALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI
SOMMARIO ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI Dimensione e Altezza ALBERI BINARI DI RICERCA (BST) Introduzione Ricerca, inserimento e cancellazione Implementazione
DettagliAlberi binari di ricerca
Alberi binari di ricerca Definizione Un albero si dice albero binario di ricerca è un albero binario in cui: - Ogni nodo è caratterizzato un valore chiamato chiave - L insieme delle chiavi è totalmente
DettagliAlgoritmi e strutture dati
Algoritmi e Strutture Dati Alberi di ricerca Dizionari Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato dizionario 2 Alberi binari di ricerca (BST = binary search tree)
DettagliProblemi di ordinamento
Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata
DettagliInformatica 3. LEZIONE 12: Liste. Modulo 1: ADT lista e implementazione basata su array Modulo 2: Lista concatenata
Informatica 3 LEZIONE 12: Liste Modulo 1: ADT lista e implementazione basata su array Modulo 2: Lista concatenata Informatica 3 Lezione 12 - Modulo 1 ADT lista e implementazione basata su array Introduzione
DettagliLE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve
LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione
DettagliAlberi. CORDA Informatica. A. Ferrari. Testi da. Marco Bernardo Edoardo Bontà. Dispense del Corso di. Algoritmi e Strutture Dati
Alberi CORDA Informatica A. Ferrari Testi da Marco Bernardo Edoardo Bontà Dispense del Corso di Algoritmi e Strutture Dati Albero - definizione Albero Figli, fratelli, nodi, foglie Grado, livello, altezza,
DettagliAlberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
DettagliMulti-way search trees
Multi-way search trees GT. 10.4 1 Argomenti Multi-way search trees Multi-way searching 9 (2,4) Trees 2 5 7 10 14 2 1 Alberi Binari di Ricerca Bilanciati n numero di chiavi (entry(key,elem)) AVL tree log(
DettagliUn esempio: l ADT Dizionario (mutabile) Definizione. Alberi binari di ricerca (BST = binary search tree) search(chiave k) -> elem
Un esempio: l ADT Dizionario (mutabile) Algoritmi e Laboratorio a.a. 2006-07 Lezioni Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato astratto dizionario Parte 19-D Alberi
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Alberi di ricerca Domenico Fabio Savo 1 Dizionari Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato Dizionario 2 Alberi binari di ricerca (BST
DettagliAlberi binari di ricerca
Alberi binari di ricerca Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010
DettagliAlgoritmi e Strutture Dati. Lezione 5
Algoritmi e Strutture Dati Lezione 5 www.iet.unipi.it/a.virdis Antonio Virdis antonio.virdis@unipi.it 1 Sommario Hashing Hashing e tipi di input Esercizi 2 Array ++ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3
DettagliEsercizi parte 3. La classe ArrayBinTree dovra implementare, tra le altre, l operazione seguente: padre: dato un nodo, restituire l indice del padre.
Esercizi parte 3 RAPPRESENTAZIONE DI ALBERI BINARI 1. Definire una classe LinkedBinTree che implementa alberi binari in modo collegato, con nodi implementati come oggetti di classe BinNode. La classe dovra
DettagliAlberi di ricerca. Alberi binari di ricerca. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)
Alberi di ricerca Alberi binari di ricerca Un esempio: l ADT Dizionario (mutabile) Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato astratto dizionario Alberi binari di
DettagliOrganigramma Gerarchia. (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre
Alberi Struttura dati Albero Organigramma Gerarchia (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre Esempio di un organigramma di un azienda Tree terminology
DettagliInformatica 3. Informatica 3. LEZIONE 23: Indicizzazione. Lezione 23 - Modulo 1. Indicizzazione. Introduzione. Indicizzazione:
Informatica 3 Informatica 3 LEZIONE 23: Indicizzazione Lezione 23 - Modulo 1 Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees Indicizzazione lineare, ISAM e
DettagliPer semplicità eliminiamo le ripetizioni nell'albero.
Albero binario di ricerca 20 40 100 95 Un albero binario di ricerca é un albero binario in cui ogni nodo ha un etichetta minore o uguale a quelle dei nodi nel sottoalbero radicato nel figlio destro e maggiore
DettagliAlberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione
Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico
DettagliAlgoritmi e strutture dati
Algoritmi e strutture dati Roberto Cordone A. A. 2015-16 Capitolo 3 Implementazioni dei dizionari ordinati Nota: queste dispense sono un rapido riassunto delle lezioni svolte nel dicembre 2015 e gennaio
DettagliAlberi binari di ricerca
Alberi binari di ricerca Definizione Un albero si dice albero binario di ricerca è un albero binario in cui: - Ogni nodo è caratterizzato un valore chiamato chiave - L insieme delle chiavi è totalmente
DettagliAlberi. 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.
Alberi Un albero è un insieme di oggetti, chiamati nodi, su cui è definita una relazione binaria G(x, y) che leggiamo x è genitore di y tale che: 1. esiste un unico nodo, chiamato radice, che non ha genitori;
DettagliAlgoritmi e strutture dati 16 Dicembre 2004 Canali A L e M Z Cognome Nome Matricola
Algoritmi e strutture dati 16 Dicembre 04 Canali A L e M Z Cognome Nome Matricola Problema 1 (6 punti) Determinare la funzione calcolata dal metodo mistero e la sua complessità computazionale in funzione
DettagliEsercizi su programmazione ricorsiva 3
su programmazione ricorsiva 3 Pericle Perazzo pericle.perazzo@iet.unipi.it http://www.iet.unipi.it/p.perazzo/teaching/ http://lettieri.iet.unipi.it/mailman/listinfo/algoritmi_e_basi 10 maggio 2013 Alberi
Dettagliricerca di un elemento, verifica dell appartenenza di un elemento
Alberi Binari di Ricerca Gli alberi binari di ricerca (o, alberi di ricerca binaria) sono strutture dati che consentono, su un insieme di elementi con un ordine totale le operazioni di: ricerca di un elemento,
DettagliL albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche.
Lezioni di C L albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche. qstruttura del file system qalbero genealogico qorganigramma qalbero di decisione q... s=6*8+((2+42)*(5+12)+987*7*123+15*54)
DettagliProva di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE
Prova di Algoritmi e s.d. (1o anno) 17 Settembre 2002 TESTO e RISPOSTE Esercizio 1 (punti 7 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali).
DettagliAlgoritmi e Strutture Dati
Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 6 novembre 2008 Heap binari: definizione Un heap binario è una albero binario quasi completo
DettagliAlberi binari di ricerca
Alberi binari di ricerca Gli alberi binari di ricerca sono ottime strutture dati per memorizzare coppie di elementi (k, e) chiave elemento di un dizionario. Un albero binario di ricerca T è un albero binario
DettagliAlgoritmi e Strutture Dati. Lezione 4
Algoritmi e Strutture Dati Lezione www.iet.unipi.it/a.virdis Antonio Virdis a.virdis@iet.unipi.it Sommario Heap Ordinamento tramite Heap Soluzioni Esercizi heap 3 5 6 7 8 0 9 3 5 3 heap 3 5 6 7 8 0 9 heap
DettagliDizionari. Realizzazione con alberi binari di ricerca. Alberi rosso-neri. Ugo de' Liguoro - Algoritmi e Seprimentazioni 03/04 Lez.
Dizionari Realizzazione con alberi binari di ricerca. Alberi rosso-neri. Dizionari con gli alberi Astro, Dado, Lana, Mela, Tasto,Vela, Zappa Mela Astro Tasto Zappa Alberi binari di ricerca Gli alberi binari
DettagliIndici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2
INDICI MULTILIVELLO DINAMICI Indici multilivello dinamici (B-alberi e B + -alberi) Gli indici multilivello dinamici (B-alberi e B + -alberi) sono casi speciali di strutture ad albero. Un albero è formato
DettagliALBERI. Un Albero. Un grafo aciclico che non è un albero: due archi entranti in uno stesso nodo
ALBERI Un Albero è un grafo orientato connesso e aciclico, in cui inoltre esattamente un nodo (detto radice) non ha nessun arco entrante, e ogni altro nodo ha esattamente un arco entrante. Ogni nodo viene
DettagliK-d-tree A L B E R T O B E L U S S I A N N O A C C A D E M I C O
K-d-tree A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2-2 0 1 3 Caratteristiche di base Il k-d-tree (K-dimensional tree) è un albero binario di ricerca multi-dimensionale in cui ogni nodo
DettagliInformatica 3. LEZIONE 13: Liste doppie, pile e code. Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda
Informatica 3 LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Informatica 3 Lezione 13 - Modulo 1 Free list Free list Le funzioni di sistema
DettagliUn heap binario è un albero binario con le seguenti caratteristiche:
Heap Un heap binario è un albero binario con le seguenti caratteristiche: È quasi completo: tutti i livelli, tranna al più l ultimo sono completi e le foglie dell ultimo livello sono tutte adossate a sinistra.
DettagliAlgoritmi e Strutture Dati. Capitolo 6 Il problema del dizionario
Algoritmi e Strutture Dati Capitolo 6 Il problema del dizionario Il tipo dato Dizionario Suppongo sempre che mi venga dato un riferimento diretto all elemento da cancellare Applicazioni: gestione archivi
DettagliInformatica 3. Informatica 3. LEZIONE 22: Politiche di risoluzione delle collisioni. Lezione 23 - Modulo 1. Politiche di risoluzione delle collisioni
Informatica 3 Informatica 3 LEZIONE 22: Politiche di risoluzione delle collisioni Lezione 23 - Modulo 1 Modulo 1: Open e closed hashing Modulo 2: Sequenze di probe Modulo 3: Analisi del closed hashing
DettagliEsempi. Albero di interi. Struttura che non è un albero!
albero si dice "grafo diretto" un insieme di nodi legati "a due a due" da archi direzionati (puntatori) un albero è un grafo diretto in cui ogni nodo può avere un solo arco entrante ed un qualunque numero
DettagliALBERI BINARI DI RICERCA
ALBERI BINARI DI RICERCA ABR Abbiamo visto che la scelta del tipo di dato astratto da utilizzare dipende dal problema. Se la situazione è tale per cui la lista deve essere continuamente modificata in dimensione
Dettaglilezione 9 min-heap binario Heap e Alberi posizionali generali
lezione 9 Heap e Alberi posizionali generali min-heap binario Un min-heap è un albero binario quasi completo in cui ogni nodo i diverso dalla radice soddisfa la seguente proprietà: il valore memorizzato
DettagliLezione 7 Alberi binari: visite e alberi di ricerca
Lezione 7 Alberi binari: visite e alberi di ricerca Informatica 6 Maggio 2015 Operazioni sugli alberi: visita La visita di un albero esplora tutti i nodi ed esegue una qualche operazione su di essi. Per
DettagliAlgoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
DettagliLezione 12 Tabelle Hash
Lezione 12 Tabelle Hash Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 2 ABR: Visita Scrivere un programma che legga
DettagliADT Dizionario. Ordered search table. Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D:
Ordered search table Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D: possiamo memorizzare le entrate di D in un array list S in ordine non decrescente di chiavi:
DettagliListe concatenate. Violetta Lonati
Liste concatenate Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 2 novembre 2017 Violetta Lonati Liste
DettagliAlgoritmi e Strutture Dati
Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Il concetto di dato Il concetto
Dettagliheap heap heap? max- e min-heap concetti ed applicazioni heap = catasta condizione di heap non è una struttura ordinata
heap heap concetti ed applicazioni heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. tutte le foglie sono a sinistra ma non è un BST!! 3. ogni nodo contiene una chiave maggiore
DettagliEsercizio 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.
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 FB = -1 livello 1 FB = -1 livello 2 livello 3 L altezza è 3, il minimo si trova nel
DettagliAlberi di ricerca binari
Fulvio Corno, Matteo Sonza Reorda Dip. Automatica e Informatica Politecnico di Torino Introduzione Gli alberi di ricerca binari (Binary Search Tree, o BST) sono una struttura di dati che supporta in modo
DettagliAlberi. Alberi: Esempio di utilizzo
Sono strutture dati del tipo: Alberi SOTTOALBERO n1 RADICE DELL ALBERO () n2 n n4 Profondità o Livello 0 1 n n n n n n 2 NODI FOGLIA (LEAF NODES) 1 Alberi: Esempio di utilizzo Rappresentazione di un file
DettagliAlberi Binari di Ricerca e Alberi Rosso-Neri
Alberi Binari di Ricerca e Alberi Rosso-Neri Obiettivi Studiare strutture dati che consentano di effettuare in modo efficiente le operazioni di Minimo e massimo Successore Inserimento e cancellazione Ricerca
DettagliHeap e code di priorità
Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010
DettagliAlgoritmi e Strutture Dati
Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta
DettagliADT albero binario completo
ADT albero binario completo Un albero binario completo è un albero binario in cui ogni livello, fino al penultimo, è completamente riempito. L'ultimo livello è riempito da sinistra a destra a 1 nodo b
DettagliImplementazione ADT: Alberi
Implementazione ADT: Alberi Livelli di astrazione 2001/2002 1 Esercitazione 5 (E6): alberi (tree) albero struttura dati fondamentale, soprattutto per le operazioni di ricerca tipi di albero con radice
DettagliAlgoritmi e Strutture Dati
Strutture Elementari Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 29 ottobre 2008 Strutture Dati Astratte Il concetto di dato Il concetto
DettagliGLI ALBERI BINARI DI RICERCA. Cosimo Laneve
GLI ALBERI BINARI DI RICERCA Cosimo Laneve argomenti 1. alberi binari di ricerca 2. la ricerca di elementi e la complessità computazionale 3. operazione di cancellazione di elementi 4. esempi/esercizi
DettagliInformatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list
LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Lezione 13 - Modulo 1 Free list Politecnico di Milano - Prof. Sara Comai 1 Politecnico di
DettagliIl tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.
Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro
DettagliLaboratorio di Informatica
Liste semplici (semplicemente linkate) Una lista semplice e costituita da nodi Laboratorio di Informatica 7. Strutture complesse di dati in C++ Ogni nodo e una struttura che contiene : Dati Un riferimento
DettagliLaboratorio di Algoritmi e Strutture Dati. Code con Priorità
Laboratorio di Algoritmi e Strutture Dati Code con Priorità Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso
DettagliLezione 6: 12 Novembre 2013
Tutorato di Algoritmi e Strutture Dati [CT0371] Tutor: Alberto Carraro Lezione 6: 12 Novembre 2013 Disclaimer: Queste note non sono state sottoposte al consueto controllo riservato alle pubblicazioni ufficiali.
DettagliEsercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi
Dettaglid. Cancellazione del valore 5 e. Inserimento del valore 1
Esercizio1 Si consideri un albero binario non vuoto in cui a ciascun nodo v è associato un numero reale v.val. Scrivere un algoritmo che, dato in input l'albero T e un numero reale x, restituisce true
DettagliIn questa lezione Alberi binari di ricerca: la cancellazione
In questa leione Alberi binari di ricerca: la cancellaione 1 L algoritmo di Hibbard per cancellare (1962) Sia il nodo da cancellare: 1) è una foglia: si rimuove 2) ha un solo figlio x: si rende x figlio
Dettaglidizionari alberi bilanciati
dizionari alberi bilanciati dizionari ADT che supportano le seguenti operazioni membership anche detta search insert delete o remove le liste e i BST sono dizionari maggio 2002 ASD2002 - Alberi bilanciati
DettagliLaboratorio di Algoritmi
Laboratorio di Algoritmi Corso di Laurea in Matematica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Martedì 8.30-10.30 in aula 3 Mercoledì 10.30-13.30 in aula 2 Giovedì 15.30-18.30 in
DettagliAlgoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Alberi binari di ricerca m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non
DettagliEspressioni aritmetiche
Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:
DettagliDipartimento di Elettronica, Informazione e Bioingegneria API 2013/4
Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4 Bilanciamento negli alberi di ricerca @ G. Gini 2013 Dizionari Dizionario Insieme dinamico che implementa le seguenti funzionalità Cerca
DettagliQuickSort Università degli Studi di Milano
QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : - O(n 2 ) nel caso peggiore - O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior
DettagliImplementazione dell albero binario in linguaggio C++
Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve
DettagliAlbero in cui ogni nodo ha al più due figli. I figli di un nodo costituiscono una coppia ordinata
Il TDA BinaryTree Albero Binario A B C D E F G Albero in cui ogni nodo ha al più due figli. I figli di un nodo costituiscono una coppia ordinata I figli di un nodo vengono chiamati figlio sinistro e figlio
DettagliAlgoritmi e Strutture dati - ANNO ACCADEMICO 2016/17 13 giugno 2017
Algoritmi e Strutture dati - ANNO ACCADEMICO 2016/17 13 giugno 2017 1 2 3 4 5 6 6 5 6 5 6 5 COGNOME E NOME : MATRICOLA: Esercizio 1 a) Descrivere l algoritmo di Dijkstra: a cosa serve, su quale ragionamento
DettagliProva di Algoritmi e s.d. (1o anno) 7 Febbraio TESTO e RISPOSTE
Prova di Algoritmi e s.d. (1o anno) 7 Febbraio 2003 TESTO e RISPOSTE Esercizio 1 (punti 5 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali). Riportiamo
DettagliTutoraggio Informatica Generale Inserimento e cancellazione in un ABR Counting Sort
Tutoraggio Informatica Generale Inserimento e cancellazione in un ABR Counting Sort A.Festa festa@mat.uniroma1.it 20-5-2010 1 Inserimento e cancellazione in ABR Quando si inserisce o si rimuove un elemento
DettagliDizionari. Dizionari con gli alberi. Alberi binari di ricerca. Realizzazione con alberi binari di ricerca. Alberi rosso-neri.
Dizionari Realizzazione con alberi binari di ricerca. Alberi rosso-neri. Dizionari con gli alberi Astro, Dado, Lana, Mela, Tasto,Vela, Zappa Astro Mela Tasto Zappa Alberi binari di ricerca Gli alberi binari
DettagliLezione 9 Alberi binari: visite ed esercizi
Lezione 9 Alberi binari: visite ed esercizi Informatica 4 Maggio 2016 Operazioni sugli alberi: visita La visita di un albero esplora tutti i nodi ed esegue una qualche operazione su di essi. Per esempio,
DettagliAlgoritmi e Strutture Dati
Alberi AVL Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 26/7 Alberi AVL Definizione (bilanciamento in altezza): un albero è bilanciato
DettagliStruttura dati Dizionario
Struttura dati Dizionario Un dizionario è : un insieme di coppie (elemento, chiave) Sul campo chiave è definita una relazione d'ordine totale Su cui definiamo le seguenti operazioni: insert(elem e, chiave
DettagliAlberi Binari di Ricerca
Alberi Binari di Ricerca Prof. G. M. Farinella gfarinella@dmi.unict.it www.dmi.unict.it/farinella Riferimenti Bibliografici Cormen T.H., Leiserson C.E., Rivest R.L Introduction to Algorithms, Third Edition,
Dettagli