Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006
|
|
- Valentino Tedesco
- 6 anni fa
- Visualizzazioni
Transcript
1 aboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006 Insiemi di Stringhe e tries Marco Antoniotti Sommario Dizionari Dizionari Associazioni tra chiavi e valori Ricerca per chiave BSTs bilanciati hanno una complessità logaritmica per la ricerca e hash tables hanno complessità attesa costante, ma dipendono anche dalla complessità della struttura della chiave (in particolare dalla sua lunghezza ) Domanda: è necessario fare confronti di chiavi? No Domanda: è necessaria la scansione lineare di una chiave? No Ottimo: esame di soli O(lg(N)) bits asi speciali: dizionari ottimizzati per stringhe usate come chiavi Più veloci delle hash table Più flessibili dei BST II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 1/31 1
2 Tries Etimologia: la parola inglese retrieval ; si pronuncia come try aratteristiche Si immagazzinano i caratteri di una stringa nei nodi, non l intera chiave Si immagazinano i valori nei nodi esterni (foglie) Si usano i caratteri delle stringhe per guidare la ricerca Esempio: sells sea shells by the sea shore II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 2/31 Applicazioni ontrollori di ortografia ompletamento automatico ompressione dati Biologia computazionale Indici inversi per il Web Tabelle di instradamento per indirizzi IP (IP routing tables) Immagazzinamento e query di documenti XM T9 text input predittivo per i cellulari II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 3/31 2
3 Insieme di String: operazioni Inserimento: a_tring_set.add(s); Appartenenza: a_string_set.contains(s); Esempio: rimuovere i duplicati dall input string_set ss; istream in = cin; ostream out = cout; string key; while (in >> key) { if (! ss.contains(key)) { ss.add(key); out << key << endl; II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 4/31 hiave: sequenza di caratteri DNA: sequenza di a c g t IPv6: sequenza di 128 bits Italiano: sequenza di caratteri Proteine: sequenza di 20 aminoacidi (A,, Y) arte di credito: sequenza di 16 cifre odici bibliografici: sequenza di caratteri alfanumerici Questa lezione: Sequenze di caratteri ASII II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 5/31 3
4 Insiemi (dizionari) di stringhe: sommario aso tipico Implementazione Ricerca positiva Insert Spazio Input* Red-Black Trees + lg(n) lg(n) Hash tables Sfida veloce quanto hashing, flessibile quanto BST N = numero di stringhe = dimensione stringhe (media, massima, etc) = numero totale di caratteri in input R = radice * ettura dell input II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 6/31 Tries ad R-vie Esempio: sells sea shells by the sea shore II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 7/31 4
5 Tries ad R-vie: implementazione Trie ad R vie per il controllo di esistenza (ovvero di appartenenza) Nodo: contiene riferimenti ad R nodi public: private: int R; struct Node { Node* next[]; Node() : end(false) { next = new (Node*)[R]; for (int i; i < R; i++) next[i] = 0; bool end; ; II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 8/31 Tries ad R-vie: implementazione class StringSetRWayTrie { private: struct Node { ; typedef Node *ink; typedef string Key; ink root; bool searchr(ink h, Key k, int d) { int i = k[d]; if (h == 0) return false; if (i == NUcharacter) return h->end; return searchr(h->next[i], k, d+1); // continua II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 9/31 5
6 Tries ad R-vie: implementazione class StringSetRWayTrie { private: ink insertr(ink h, Key k, int d) { int i = k[d]; if (h == 0) h = new Node; if (i == NUcharacter) h->end = true; else h->next[i] = insertr(h->next[i], k, d+1); return h; // continua II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 10/31 Tries ad R-vie: implementazione class StringSetRWayTrie { public: StringSetRWayTrie(int r) R(r) { root = 0; bool search(key k) { return searchr(root, k, 0); ; void insert(key k) { insertr(root, k, 0); II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 11/31 6
7 Insiemi (dizionari) di stringhe: sommario aso tipico Implementazione Ricerca positiva Insert Spazio Input* Red-Black Trees + lg(n) lg(n) Hash tables Trie ad R vie RN + Trie ad R vie più veloce di hashing per R piccolo, troppo spazio richiesto e sprecato per R grande Sfida si possono migliorare le caratteristiche di uso di memoria? N = numero di stringhe = dimensione stringhe (media, massima, etc) = numero totale di caratteri in input R = radice * ettura dell input II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 12/31 Alberi Ternari di Ricerca (Ternary Search Trees - TSTs) Ternary Search Tree [Bentley-Sedgewick] Ogni nodo ha 3 figli Sinistra più piccoli, centrale uguali, destro più grandi Esempio: sells sea shells by the sea shore Osservazione: Pochi links sprecati! II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 13/31 7
8 Trie a 26 vie a confronto con TSTs TST: collassa i link vuoti di un Trie a 26 vie II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 14/31 TST: implementazione TST string set: un nodo Nodo: 5 campi Il carattere d I tre figli Il flag end; private: struct Node { char c; Node* left; Node* middle; Node* right; bool end; ; II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 15/31 8
9 TST: implementazione class StringSetTST { private: struct Node { ; Node* root; bool searchr(node* n, string s, int i) { if (x == 0) return false; char c = s[i]; if (c < n->c) return searchr(n->left, s, i+1); else if (c > n->c) return searchr(n->right, s, i+1); else if (i < s.length() - 1) return searchr(n->middle, s, i+1); else return n->end; bool contains(string s) { return searchr(root, s, 0); // continua II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 16/31 TST: implementazione class StringSetTST { private: struct Node { ; Node* root; Node* insertr(node* n, string s, int i) { char c = s[i]; if (n == 0) n = new Node; if (c < n->c) n->left = insertr(n->left, s, i+1); else if (c > n->c) n->right = insertr(n->right, s, i+1); else if (i < s.length() - 1) n->middle = insertr(n->middle, s, i+1); else n->end = true; return n; ; void insert(string s) { root = insertr(root, s, 0); II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 17/31 9
10 Insiemi (dizionari) di stringhe: sommario aso tipico Implementazione Ricerca positiva Insert Spazio Input* Red-Black Trees + lg(n) lg(n) Hash tables Trie ad R vie RN + TSTs + lg(n) + lg(n) N = numero di stringhe = dimensione stringhe (media, massima, etc) = numero totale di caratteri in input R = radice * ettura dell input II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 18/31 TST con R 2 rami alla radice Ibrido di TST e Trie ad R vie Si fa una ramificazione ad R od a R 2 vie alla radice Ognuno dei rami punta ad un TST Domanda: cosa succede con parole di una lettera? II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 19/31 10
11 Sommario sui TST Vantaggi Spazio richiesto lineare Ricerche positive molto veloci Si esaminano pochi bit di una chiave Ricerche negative anche più veloci Si adatta eleganetemente alle irregolarità dell insieme di chiavi Ammette operazioni su dizionari molto sofisticate Morale TST è più flessibile di BST e più veloce di hashing Specie se molte ricerche negative II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 20/31 Tries: operazioni avanzate Operazioni standard su dizionari Insert Search Delete Operazioni su BSTs Ordina Select Ricerca vincolata Operazioni su Tries ongest prefix match Wildcard match Stringa più simile Trova la stringa che differisce da quella in input per P caratteri ontrolli ortografici e OR II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 21/31 11
12 ongest Prefix Match Trovare una stringa nel database che ha il match di prefisso più lungo Esempio: cerca tra gli indirizzi di IP rispetto all IP di destinazione, trova quello con il match di prefisso più lungo ed instrada di conseguenza II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 22/31 ongest Prefix Match su un Trie ad R vie Si cerca e si ritorna la lunghezza del match di prefisso più lungo string prefix(string s) { int len = prefixmatch(root, s, 0); return s.substring(s, 0, len); int prefixmatch(node* n, string s, int i) { if (n == 0) return 0; int len = 0; if (n->end) len = i; if (i = s.length()) return len; char c = s[i]; return max(len, prefixmatch(n->next[i], s, i+1)); II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 23/31 12
13 Wildcard match Si usa il carattere. per pagnare (!) ogni carattere II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 24/31 Wildcard match Si cerca normalmente se il carattere non è. Si seguono tutte e tre i rami in caso contrario string wildsearch(string s) { vector<string> results; wildcard(root, s, 0,, results); // do something with results. void wildcard(node* n, string s, int i, string& prefix, vector<string>& results) { if (n == 0) return; char c = s[i]; if (c ==. c < n->key) wildcard(n->left, s, i+1, prefix); if (c ==. c > n->key) wildcard(n->right, s, i+1, prefix); if (c ==. c == n->key) { if (i < s.length() - 1) wildcard(n->mid, s, i+1, prefix + x->c); else results.push_back(prefix); II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 25/31 13
14 T9 SMS Obiettivo: battere un messaggio sulla tastiera di un telefonino Battuta multipla: si continua a battere un tasto fino a che la lettera corretta non appare Battuta T9 : Un modo molto più veloce di battere testo su un telefonino. Si trovano tutte le parole che corrispondono ad una data sequenza di numeri (ordinate per frequenza) Si batte 0 per vedere tutte i possibili completamenti Esempio: hello Battuta multipla: Battuta T9: II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 26/31 Dizionario TST Si immagazzinano le coppie chiave-valore nelle foglie e ricerche positive terminano ritornando la coppia chiave-valore e ricerche negative terminano ritornando NU I nodi interni immagazzinano il carattere Usiamo nodi diversi per foglie e nodi interni? ollassiamo (e suddividiamo) i rami ad una via in fondo all albero? II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 27/31 14
15 Insiemi (dizionari) di stringhe: sommario aso tipico Implementazione Ricerca positiva Insert Spazio Input* Red-Black Trees + lg(n) lg(n) Hash tables Trie ad R vie RN + TSTs + lg(n) + lg(n) TST con R 2 + lg(n) + lg(n) Trie ad R vie con collasso in fondo log R (N) log R (N) RN + TST con collasso in fondo log R (N) log R (N) Proprietà fondamentale: indipendenza dalla lunghezza della chiave onseguenza: si possono usare con chiavi molto lunghe N = numero di stringhe = dimensione stringhe (media, massima, etc) = numero totale di caratteri in input R = radice * ettura dell input II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 28/31 PATRIIA Tries Practical Algorithm To Retrieve Information oded In Alphanumeric (PATRIIA) Si collassano i nodi ad un ramo in un trie a due vie Si collegano i nodi con una tecnica che ci permette di evitare nodi multipli R = II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 29/31 15
16 Albero di suffissi Suffix Tree: PATRIIA tree di suffissi di stringhe Applicazioni Sottostringa comune più lunga Sottostringa ripetuta più lunga Sottostringa palindromica più lunga Prefisso comune più lungo di due stringhe Basi dati per la Biologia omputazionale (BAST, FASTA) Ricerche di musiche sulla base delle melodie II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 30/31 Dizionari: conclusioni Hash tables: separate hashing, linear probing BSTs: randomizzati, Red-Black Tries: R-vie, TST onclusioni Scegliere la struttura dati più consona alle caratteristiche dell applicazione Potete recuperare qualunque cosa (se ben organizzati) con 40 (o 100) bits II Semestre 2005/2006 aboratorio Algoritmi - Marco Antoniotti 31/31 16
LE 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 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
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
DettagliLaboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Riassunto sui dizionari
Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006 Alberi di Ricerca Bilanciati Marco Antoniotti Riassunto sui dizionari Dizionario: astrazione di collezioni Operazioni fondamentali
DettagliDizionari Liste invertite e Trie
Dizionari Liste invertite e Trie Lucidi tratti da Crescenzi Gambosi Grossi, Strutture di dati e algoritmi Progettazione, analisi e visualizzazione Addison-Wesley, 2006 Dizionari Universo U delle chiavi
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
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
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
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
DettagliLezione 9 Alberi binari di ricerca
Lezione 9 Alberi binari di ricerca Rossano Venturini rossano.venturini@unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 Lista monodirezionale Scrivere
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. 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
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
DettagliLezione 5. Giuditta Franco. 19 Febbraio 2008
Outline Lezione 5 Dipartimento di Informatica, Università di Verona 19 Febbraio 2008 Talk Outline Outline 1. 2. 3. Come costruire un Un esempio introduttivo L albero dei suffissi di una data stringa è
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
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,
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
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
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
DettagliAlberi Binario in Java
Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un
DettagliAppunti Senza Pretese di Programmazione II: Costruzione di un Albero Bilanciato
Appunti Senza Pretese di Programmazione II: Costruzione di un Albero Bilanciato Alessandro Panconesi DSI, La Sapienza via Salaria 113, 00198, Roma Consideriamo un problema che ci consentirá di vedere un
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
DettagliSuffix Tree & Suffix Array
Suffix Tree & Suffix Array Corso Bioinformatica Francesca Marzi String matching esatto Data una stringa T (chiamata testo) e una stringa P (chiamata pattern), trovare tutte le occorrenze di P in T. Di
DettagliQuesta soluzione va contemplata quando le lunghezze stimate dalle liste usate sono significativamente maggiori delle dimensioni di un elemento.
Un ulteriore semplificazione si ottiene utilizzando un elemento sentinella (dummy) che non contiene informazione, ma serve a segnalare la fine (e l inizio) di una lista. Questa soluzione va contemplata
DettagliAlgoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio
Algoritmi Greedy Tecniche Algoritmiche: tecnica greedy (o golosa) Idea: per trovare una soluzione globalmente ottima, scegli ripetutamente soluzioni ottime localmente Un esempio Input: lista di interi
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliAlberi ed Alberi Binari
Alberi ed Alberi Binari Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell informazione,
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
DettagliTRIE (albero digitale di ricerca)
TRIE (albero digitale di ricerca) Struttura dati impiegata per memorizzare un insieme S di n stringhe (il vocabolario V). Tabelle hash le operazioni di dizionario hanno costo O(m) al caso medio per una
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:
DettagliAlberi e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra
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 di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
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,
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
DettagliHash Table. Hash Table
Hash Table La ricerca di un elemento su una lista (semplice o doppia) presenta una complessità di tipo O(n), dato che occorre scandire (al più) l intera lista per poter trovare l elemento desiderato. Le
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
DettagliStrutture dati dinamiche in C (II)
Strutture dati dinamiche in C (II) Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Le liste concatenate (ancora ma in modo più formale) L
DettagliI B+ Alberi. Sommario
I B+ Alberi R. Basili (Basi di Dati, a.a. 2002-3) Sommario Indici organizzati secondo B + -alberi Motivazioni ed Esempio Definizione Ricerca in un B + -albero Esempio Vantaggi Inserimento/Cancellazione
DettagliLezione 9 Alberi binari di ricerca
Lezione 9 Alberi binari di ricerca Rossano Venturini rossano.venturini@unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 Lista monodirezionale Scrivere
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;
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)
DettagliAlgoritmi e Strutture Dati Laboratorio 15/12/2008. Daniele Loiacono
Algoritmi e Strutture Dati Laboratorio 15/12/2008 Problema della compressione Rappresentare i dati in modo efficiente Impiegare il numero minore di bit per la rappresentazione Goal: risparmio spazio su
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
DettagliBreve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
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
DettagliFondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
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
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
DettagliSuffix Trees. Docente: Nicolò Cesa-Bianchi versione 21 settembre 2017
Complementi di Algoritmi e Strutture Dati Suffix Trees Docente: Nicolò Cesa-Bianchi versione 21 settembre 2017 In generale, possiamo trovare tutte le occorrenze di un pattern y in un testo x in tempo O(
DettagliMemorizzazione di una relazione
Heap file File ordinati Indici o Hash o B+-tree Costo delle operazioni algebriche Simboli: NP: numero di pagine NR: numero record LP: lunghezza pagina LR: lunghezza record Memorizzazione di una relazione
DettagliEsercizi su programmazione ricorsiva 1. Pericle Perazzo 23 marzo 2012
su programmazione ricorsiva 1 Pericle Perazzo pericle.perazzo@iet.unipi.it http://info.iet.unipi.it/~fondii/ 23 marzo 2012 Ripasso di programmazione ricorsiva Ripasso di programmazione ricorsiva Algoritmo
DettagliAlberi binari e di ricerca. Parte 1 BST e GUI. Introduzione. 1. Minimo Antenato Comune. 2. Vistita in ampiezza
Alberi binari e di ricerca Introduzione L esercitazione corrente riguarda problemi su alberi binari semplici e di ricerca. 1. Nella prima parte vengono proposti esercizi da svolgere mediante le classi
DettagliAlberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.
Alberi Alberi Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Frodo Dudo Daisy Alberi Gli alberi sono una generalizzazione
DettagliALGORITMI E STRUTTURE DATI
ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Puntatori e Alberi, ABR StudentiDIA
DettagliAlberi Binari di Ricerca
Alberi Binari di Ricerca Algoritmi su gli alberi binari: visite Dato un puntatore alla radice di un albero vogliamo scandire in modo sistematico tutti i nodi di tale albero In una lista abbiamo una unica
DettagliHeap scenario. Ho un insieme dinamico di oggetti, ciascuno identificato con una priorità. (la priorità è semplicemente un numero);
Heap Heap scenario Ho un insieme dinamico di oggetti, ciascuno identificato con una priorità. (la priorità è semplicemente un numero); Voglio poter: inserire: nuovi elementi, ciascuno con una data priorità
DettagliINTRODUZIONE INTRODUZIONE TABELLE HASH FUNZIONE HASH
INTRODUZIONE INTRODUZIONE Una tabella hash è una struttura dati che permette operazioni di ricerca e inserimento molto veloci: in pratica si ha un costo computazionale costante O(1). Si ricorda che la
DettagliSommario. Le strutture dati elementari per implementare sequenze: Vettori Liste
Sequenze Sommario Le strutture dati elementari per implementare sequenze: Vettori Liste Strutture dati elementari Le strutture dati vettore e lista sono fra le strutture dati più usate e semplici Il loro
DettagliCorso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
DettagliArgomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto
Argomenti della lezione Introduzione agli Algoritmi e alle Strutture Dati Operazioni su Liste Dr. Emanuela Merelli Tipi di Dato Astratto Lista Lineare Pila Coda Concetto di Struttura dati dinamiche Lista
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
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
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
DettagliOrganizzazione Fisica dei Dati (Parte II)
Modello Fisico dei Dati Basi di Dati / Complementi di Basi di Dati 1 Organizzazione Fisica dei Dati (Parte II) Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Modello Fisico
DettagliIterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E07 Iterazione C. Limongelli Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Iterazione 1 Contenuti Si vogliono formalizzare
DettagliRicerca binaria (o dicotomica) di un elemento in un vettore
Ricerca binaria (o dicotomica) di un elemento in un La ricerca binaria o dicotomica è utilizzata per ricercare i dati in un ORDNATO. L algoritmo di ricerca binaria, dopo ogni confronto, scarta metà degli
DettagliIndice come albero binario di ricerca!
Indice come albero binario di ricerca! n Obiettivo: Utilizzare una struttura dati del tipo albero binario di ricerca per realizzare un indice su file Ricerca sull indice in memoria centrale, poi accesso
DettagliAlgoritmi e strutture dati
Algoritmi e strutture dati Roberto Cordone A. A. 2015-16 Capitolo 4 Implementazioni delle partizioni Nota: queste dispense sono un rapido riassunto delle lezioni svolte nel dicembre 2015 e gennaio 2016.
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
DettagliLa struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
DettagliAlberi rosso-neri. Oltre ad essere alberi binari di ricerca, gli alberi rosso-neri soddisfano le seguenti proprietà:
Alberi rosso-neri Gli alberi rosso-neri sono alberi binari di ricerca in cui le operaioni Insert e Delete sono opportunamente modificate in modo tale da garantire un altea dell albero h = O(log n). A tale
DettagliStrutture dati dinamiche in C (III)
Strutture dati dinamiche in C (III) Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Alcune utilities per la gestione di stringhe Gli alberi
DettagliALBERI DI RICERCA BINARI (O ALBERI BINARI DI RICERCA)
ALBERI DI RICERCA BINARI (O ALBERI BINARI DI RICERCA) Definizione induttiva: un albero vuoto è un albero di ricerca binario un albero non vuoto avente per radice l'elemento (di chiave) x e per sottoalberi
DettagliProblemi, istanze, soluzioni
lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un
DettagliAlberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.
Alberi Alberi Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Dudo Frodo Daisy Alberi Gli alberi sono una generalizzazione
DettagliADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)
ADT LISTA Pochi Linguaggi forniscono tipo lista fra predefiniti (LISP, Prolog); per gli altri, ADT lista si costruisce a partire da altre strutture dati (in C tipicamente vettori o puntatori) OPERAZIONI
Dettagliliste ogni nodo ha un successore, tranne l ultimo della lista che ne ha zero; alberi binari ogni nodo ha zero, uno oppure due figli
Alberi generali Gli alberi visti fino a questo momento erano insiemi di nodi collegati fra di loro, in cui ogni nodo poteva avere al massimo due figli. Negli alberi generali, ogni nodo può avere un numero
DettagliLezione 9 Esercizi d esame
Lezione 9 Esercizi d esame Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 Qsort su interi Scrivere un programma
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
Dettagli23/10/2016. gli alberi. alcune definizioni. un esempio. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica.
gli alberi Un albero è una struttura dati NON LINEARE organizzata gerarchicamente. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica È costituito da un insieme di nodi collegati tra di loro:
DettagliT 1 =1. n 4 n log n. T n =3 T. Esercizio 1 (6 punti) A.A Esame di Algoritmi e strutture dati 18 luglio 2008
A.A. 00 0 Esame di Algoritmi e strutture dati luglio 00 Esercizio (6 punti) Risolvere con almeno due metodi diversi la seguente relazione di ricorrenza T = T n = T n n log n A.A. 00 0 Esame di Algoritmi
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:
DettagliStrutture di accesso ai dati: B + -tree
Strutture di accesso ai dati: B + -tree A L B E R T O B E L U S S I S E C O N D A P A R T E A N N O A C C A D E M I C O 2 0 0 9-2 0 0 Osservazione Quando l indice aumenta di dimensioni, non può risiedere
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]
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E04 Esercizi sui problemi di ordinamento C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Algoritmi di Ordinamento
DettagliAlgebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
DettagliEsercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
DettagliHeap Ordinamento e code di priorità. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 9
Heap Ordinamento e code di priorità Heap: definizione Definizione. Uno Heap (binario) è un albero binario finito i cui vertici sono etichettati da elementi di un insieme linearmente ordinato (chiavi),
DettagliPROVETTE D ESAME. Algoritmi e Strutture Dati
PROVETTE D ESAME Algoritmi e Strutture Dati ESERCIZIO 1 Si ottengano limiti superiori e inferiori per la seguente ricorrenza ESERCIZIO 1 ESERCIZIO 2 Dato un albero binario T, il grado di sbilanciamento
DettagliLezione 8 Struct e qsort
Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort
DettagliAlgoritmi e Strutture Dati
Alberi Rosso-Neri (RB-Trees) Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Alberi Rosso-Neri Definizione Altezza nera di un red-black tree
DettagliVerificare se un albero binario è bilanciato
Verificare se un albero binario è bilanciato Definizione: Un albero è bilanciato nel Numero dei Nodi, brevemente n- bilanciato, quando, per ogni sottoalbero t radicato in un suo nodo, il numero dei nodi
DettagliProgrammazione Funzionale
1/11 Programmazione Funzionale Esercizi in preparazione dell esame Davide Mottin - Themis Palpanas May 28, 2014 Svolgimento d esame Inferire il tipo di un espressione Esercizi sul lambda-calcolo Esercizi
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
DettagliInformatica 1. Prova di recupero 21 Settembre 2001
Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo
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
DettagliAlberi binari (radicati e ordinati) della radice Il padre del nodo 5 e del nodo 3
Alberi binari (radicati e ordinati) Il figlio sinistro della radice Il padre del nodo 5 e del nodo 3 4 3 Il figlio sinistro del nodo 2 2 5 1 6 7 8 9 La radice Il figlio destro della radice una foglia Figlio
Dettagli