Suffix Tree & Suffix Array

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Suffix Tree & Suffix Array"

Transcript

1 Suffix Tree & Suffix Array Corso Bioinformatica Francesca Marzi

2 String matching esatto Data una stringa T (chiamata testo) e una stringa P (chiamata pattern), trovare tutte le occorrenze di P in T. Di solito T > P Un occorrenza di P in T è una sottostringa di T uguale a P. T = ATACATACCCATATACGAGGCATACATGGCGAGTGTGC P = CGAG

3 String matching esatto T = n, P = m Con preprocessamento Knuth-Morris-Pratt Dato pre-processamento Knuth-Morris-Pratt Con preprocessamento Suffix Tree Dato preprocessamento Suffix Tree Trovare una occorrenza di P O(n+m) O(n) O(n+m) O(m) Se il testo è costante nel tempo (es. genoma), preprocessare (indicizzare) il testo invece del pattern è preferibile (query più efficienti, soprattutto se si deve cercare pattern differenti).

4 Indicizzazione con Suffissi Approccio: si estraggono suffissi da T. Sviluppate negli anni strutture dati, detti indici, in grado di rappresentare tutti i suffissi di un testo T:

5 Indicizzazione con Suffissi Suffissi di T = cacao cacao acao cao ao NOTA: ogni sottostringa di T è prefisso di qualche suffisso o ε (suffisso vuoto)

6 Suffix Trie Albero radicato contenente tutti suffissi del testo Ogni arco è etichettato con un singolo carattere Da uno stesso nodo non esistono due archi uscenti etichettati con lo stesso carattere Ha esattamente n foglie ( T = n) Concatenando i caratteri sul cammino dalla radice ad una foglia, si ottiene un suffisso del testo

7 Suffix Trie T = abaaba T = 6

8 Suffix Trie T = abaaba T = 6 Non ha n = 6 foglie I suffissi a, ba, aba sono prefissi di altri suffissi Non corrispondono ad un cammino dalla radice alla foglia

9 Suffix Trie Si aggiunge un carattere terminale $ alla fine del testo T $ non compare in nessun altra parte in T, e si considera lessicograficamente minore degli altri caratteri Nessun suffisso è prefisso di un altro suffisso Ogni suffisso è rappresentato dal cammino dalla radice ad una foglia T$ = abaaba$

10 Suffix Trie Si può pensare ai nodi come se avessero una etichetta, ottenuta dalla concatenazione dei caratteri sul cammino dalla radice al nodo stesso

11 Suffix Trie: ricerca sottostringa Come verifichiamo se una stringa P è una sottostringa di T? Nota: Ogni sottostringa di T è prefisso di qualche suffisso di T Dalla radice si seguono gli archi etichettati con i caratteri in P Se non ci sono archi uscenti per il successivo carattere di P, allora P non è una sottostringa di T Se si consumano tutti i caratteri di P, allora P è una sottostringa di T

12 Suffix Trie: ricerca sottostringa Come verifichiamo se una stringa P è una sottostringa di T? Nota: Ogni sottostringa di T è prefisso di qualche suffisso di T Dalla radice si seguono gli archi etichettati con i caratteri in P Se non ci sono archi uscenti per il successivo carattere di P, allora P non è una sottostringa di T Se si consumano tutti i caratteri di P, allora P è una sottostringa di T

13 Suffix Trie: ricerca sottostringa Come verifichiamo se una stringa P è una sottostringa di T? Nota: Ogni sottostringa di T è prefisso di qualche suffisso di T Dalla radice si seguono gli archi etichettati con i caratteri in P Se non ci sono archi uscenti per il successivo carattere di P, allora P non è una sottostringa di T Se si consumano tutti i caratteri di P, allora P è una sottostringa di T

14 Suffix Trie: ricerca suffisso Come verifichiamo se una stringa P è un suffisso di T? Si usa la procedura precedente, verificando che il nodo finale nel cammino ha un arco uscente etichettato con $

15 Suffix Trie: ricerca suffisso Come verifichiamo se una stringa P è un suffisso di T? Si usa la procedura precedente, verificando che il nodo finale nel cammino ha un arco uscente etichettato con $

16 Suffix Trie: numero occorrenze Come contiamo il numero di volte che una stringa P compare come sottostringa in T? Si segue il cammino corrispondente a P: Se questo non esiste la risposta è 0. Se esiste allora si arriva ad un nodo n e la risposta è data dal numero di foglie presenti nel sottoalbero radicato in n

17 Suffix Trie Come si trova la più lunga sottostringa che si ripete in T? Si cerca il nodo più profondo con più di un figlio

18 Suffix Trie Numero nodi dell ordine di T 2 nel caso peggiore T = a n b n $

19 Suffix Tree Suffix Trie compattato Ha esattamente n foglie, etichettate da 1 a n, una per ogni suffisso di T Ogni nodo interno ha almeno due figli Ogni arco è etichettato con una sottostringa non vuota di T Gli archi uscenti da uno stesso nodo hanno etichette che cominciano con caratteri differenti La concatenazione delle etichette degli archi sul cammino dalla radice alla foglia etichettata con i, rappresenta il suffisso T[i n] Può essere costruito in tempo O(n) Occupa spazio O(n) Un pattern di lunghezza m può essere cercato nel Suffix Tree in tempo O(m)

20 Suffix Trie à Suffix Tree Idea 1: si compattano in un singolo arco tutti i cammini contenenti nodi con un solo arco uscente Riduce il numero di nodi e archi Nodi interni hanno almeno due figli

21 Suffix Tree La taglia è lineare rispetto ad T = n? Non ancora L = #foglie, I = #nodi interni, E = #archi La taglia del Suffix Tree è definita come L + I + E E = L + I - 1 E 2I (ogni nodo interno ha almeno 2 figli) L + I -1 2I à I L 1 L n (al massimo n suffissi) à I n-1 à E = L + I 1 2n 2 E + L + I 4n 3 = O(n) Ma la lunghezza totale delle etichette degli archi è quadratico in n

22 Suffix Tree Idea 2: si memorizza il testo T insieme al Suffix Tree e si convertono le etichette degli archi in coppie (offset, length) rispetto a T Adesso lo spazio richiesto è lineare in n O(n) puntatori + testo

23 Suffix Tree Le foglie sono etichettate dall indice nel testo del corrispondente suffisso

24 Suffix Tree: ricerca sottostringa Come verifichiamo se una stringa P è una sottostringa di T? Stessa procedura del Suffix Trie

25 Suffix Tree: ricerca suffisso Come verifichiamo se una stringa P è un suffisso di T? Stessa procedura del Suffix Trie

26 Suffix Tree: numero occorrenze Come contiamo il numero di volte che una stringa P compare come sottostringa in T? Stessa procedura del Suffix Trie

27 Costruzione (Naïve Algorithm) Testo T = n, costruisce il Suffix Tree in tempo O(n 2 ) Inserisce in modo incrementale i suffissi T[i n], i = 1,2,,n A i Suffix Tree al passo i, contiene i suffissi che iniziano dalla posizione 1 a i STEP 1: T[1..n] viene inserito in un albero vuoto; A 1 è composto dalla radice r, da un nodo etichettato con 1, e un unico arco, etichettato con T[1..n] tra r ed 1

28 Costruzione (Naïve Algorithm) STEP i+1: inserimento di T[i+1 n] in A i Dalla radice di A i si cerca il più lungo cammino che fa match con un prefisso di T[i+1...n] NO MATCH nessuno dei precedenti suffissi inizia con il carattere T[i+1] viene creata una nuova foglia numerata con i+1 e viene aggiunto un nuovo arco dalla radice alla foglia i+1, etichettato con T[i+1..n] SI MATCH sia u il nodo in cui termina il match (se il nodo u è implicito lo si rende esplicito splittando l arco su cui si trova) viene creata una nuova foglia etichettata con i+1, e creato un nuovo arco (u,i+1) etichettato con il suffisso di T[i+1,n] che non fa match

29 Costruzione (Esempio) T = {abcab$} n=6 STEP 1: T[1..6] viene inserito in un albero vuoto, quindi A 1 è composto da un nodo, con etichetta 1, e un unico arco etichettato con T[1..6] dal nodo radice r al nodo 1 T[1..6] = abcab$ A 1 r abcab$ 1

30 Costruzione (Esempio) T = {abcab$} n=6 STEP 2: T[2..6] : Esiste un cammino in A 1 che è un prefisso di T[2..6]? T[2..6] = bcab$ A 1 r abcab$ 1

31 Costruzione (Esempio) T$ = {abcab$} n=6 STEP 2: T[2..6] : Esiste un cammino in A 1 che è un prefisso di T[2..6]? NO, viene creata una nuova foglia numerata con 2 e viene aggiunto un nuovo arco dalla radice r alla foglia 2, etichettata con T[2..6] T[2..6] = bcab$ A 1 r A 2 r abcab$ abcab$ bcab$ 1 1 2

32 Costruzione (Esempio) T = {abcab$} n=6 STEP 3: T[3..6] : Esiste un cammino in A 2 che è un prefisso di T[3..6]? T[3..6] = cab$ A 2 abcab$ r bcab$ 1 2

33 Costruzione (Esempio) T = {abcab$} n=6 STEP 3: T[3..6] : Esiste un cammino in A 2 che è un prefisso di T[3..6]? NO, viene creata una nuova foglia numerata con 3 e viene aggiunto un nuovo arco dalla radice r alla foglia 3, etichettata con T[3..6] T[3..6] = cab$ A 2 r A 3 r cab$ abcab$ bcab$ abcab$ bcab$

34 Costruzione (Esempio) T = {abcab$} n=6 STEP 4: T[4..6] : Esiste un cammino in A 3 che è un prefisso di T[4..6]? T[4..6] = ab$ A 3 abcab$ r cab$ 3 1 2

35 Costruzione (Esempio) T = {abcab$} n=6 STEP 4: T[4..6] : Esiste un cammino in A 3 che è un prefisso di T[4..6]? SI, viene creato un nuovo nodo u e una foglia numerata con 4; il nodo u splitta l arco (r,1) nell arco (r,u) e nell arco (u,1); l arco che unisce il nodo u e il nodo 4 viene etichettato con T[6..6] A 3 abcab$ 1 r 2 cab$ 3 A 4 cab$ 1 ab u $ r 4 bcab$ 2 cab$ 3 T[4..6]$ = ab$

36 Costruzione (Esempio) T = {abcab$} n=6 STEP 5: T[5..6] : Esiste un cammino in A 4 che è un prefisso di T[5..6]? T[5..6] = b$ A 4 ab r cab$ cab$ u $ bcab$

37 Costruzione (Esempio) T = {abcab$} n=6 STEP 5: T[5..6] : Esiste un cammino in A 4 che è un prefisso di T[5..6]? SI, viene creato un nuovo nodo w e una foglia numerata con 5; il nodo w splitta l arco (r,2) nell arco (r,w) e nell arco (w,2); l arco che unisce il nodo w e il nodo 5 viene etichettato con T[6..6] A 4 cab$ 1 ab u $ r 4 bcab$ 2 cab$ 3 A 5 cab$ 1 ab u $ r 4 b w cab$ $ cab$ T[5..6] = b$

38 Costruzione (Esempio) T = {abcab$} n=6 STEP 6: T[6..6] : Esiste un cammino in A 4 che è un prefisso di T[6..6]? T[6..6] = $ A 5 cab$ r ab u $ b w cab$ $ cab$ 5 3 A 6 cab$ ab u $ r b w $ cab$ $ cab$

39 Costruzione: Ukkonen Ha la proprietà di essere online Processa il testo simbolo per simbolo da sinistra a destra Ad ogni passo ha il Suffix Tree per la parte di testo già scansionata Osservazione: I suffissi di una stringa T i = t 1 t i possono essere ottenuti dai suffissi della stringa T i-1 = t 1 t i-1 concatenando il t i alla fine di ogni suffisso di T i-1 e aggiungendo il suffisso vuoto Tempo lineare nella lunghezza del testo

40 Suffix Tree Generalizzato Suffix Tree di un insieme di stringhe Un modo semplice di costruzione consiste nell appendere differenti simboli terminali alle stringhe, concatenare le stringhe e costruire il Suffix Tree della stringa risultante Esempio S 1 = ABAB, S 2 = BABA S 1 = ABAB$ 0 S 2 = BABA$ 1 S = ABAB$ 0 BABA$ 1

41 Suffix Tree Applicazioni String Matching Esatto Set Matching Esatto Ricerca di una stringa in un database di stringhe (ad esempio, ricerca di una sequenza di DNA in un database di sequenze genomiche) (Suffix Tree generalizzati) Ricerca della sottostringa di lunghezza massima comune a due o più stringhe ) (Suffix Tree generalizzati) Ricerca di DNA contaminato Ricerca di sequenze ripetitive A. Apostolico. The Myriad Virtues of Subword Trees. In Combinatorial Algorithms on Words, 1985 D. Gusfield. Algorithms on Strings, Trees, and Sequences. Cambridge University Press, New York, 1997

42 Suffix Tree Applicazioni Whole Genome Alignements (Mummer) Multiple Genome Alignement (MGA) Hohl, Kurtz, Ohlenbusch, Efficient multiple genome alignement, 2002

43 DAWG & CDAWG Automi a stati finiti che riconoscono i suffissi di una stringa

44 Suffix Array Array di n interi che specifica l ordine lessicografico dei suffissi di T Introdotti da Manber e Myers nel 1990 Più efficiente in termini di spazio rispetto al Suffix Tree Nella sua forma basica richiede solo 4n bytes (4 bytes per carattere) La costruzione diretta può essere fatta in tempo O(n log n) Puglisi, Smyth, Turpin, A taxonomy of suffix array construction algorithms, ACM Computing Surveys, 39(2):4, 2007

45 Suffix Array Ordinamento lessicografico di tutti i suffissi Memorizzazione dell indice di partenza del suffisso in un array T$ = cattcat$ T è parte dell indice Suffix Array 0 cattcat$ 7 $ 1 attcat$ 5 at$ 2 ttcat$ 1 attcat$ 3 tcat$ Ordinamento suffissi 4 cat$ 4 cat$ 0 cattcat$ 5 at$ 6 t$ 6 t$ 3 tcat$ 7 $ 2 ttcat$

46 Suffix Array & Suffix Tree T$=cattcat$ 7 $ 5 at$ 1 attcat$ 4 cat$ 0 cattcat$ 6 t$ 3 tcat$ Posizione nel testo del suffisso Archi uscenti dai nodi ordinati per etichetta Etichette foglie da sinistra a destra 2 ttcat$

47 Enhanced Suffix Array Ogni algoritmo che usa i Suffix Tree può essere rimpiazzato con un algoritmo che usa i Suffix Array arricchiti con informazioni addizionali (es. LCP array) Si riesce a risolvere gli stessi problemi con la stessa efficienza computazionale Abouelhoda, Mohamed Ibrahim; Kurtz, Stefan; Ohlebusch, Enno (2004). "Replacing suffix trees with enhanced suffix arrays". Journal of Discrete Algorithms 2: 53

48 Suffix Array: ricerca pattern P per essere sottostringa di T, deve essere prefisso di almeno un suffisso di T Suffissi che condividono un prefisso sono consecutivi nel Suffix Array Ricerca binaria O(m log n) Per trovare tutte le occorrenze si eseguono due ricerche binarie (posizione di start e fine dell intervallo)

49 Suffix Array: ricerca pattern def search(p): l = 0; r = n while l < r: mid = (l+r) / 2 if P > suffixat(a[mid]): l = mid + 1 else: r = mid s = l; r = n while l < r: mid = (l+r) / 2 if P < suffixat(a[mid]): r = mid else: l = mid + 1 return (s, r) Ricerca Binaria Manber & Myers (1990) Abouelhoda, Kurtz & Ohlebusch (2004) O(m log n) O(m + log n) O(m)

50 Suffix Array: spazio Spazio lineare in n Tuttavia taglia in bit O(n log n) Testo originale su alfabeto richiede O(n log ) bit Per il genoma umano = 4, n = 3.4 x 10 9 Suffix Array occupa 6 volte più spazio del genoma stesso Compressed Suffix Arrays Compressed Enhanced Suffix Array FM-Index

Suffix Trees. Docente: Nicolò Cesa-Bianchi versione 21 settembre 2017

Suffix 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(

Dettagli

TRIE (albero digitale di ricerca)

TRIE (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

Dettagli

Algoritmi e Strutture Dati. HeapSort

Algoritmi e Strutture Dati. HeapSort Algoritmi e Strutture Dati HeapSort Selection Sort: intuizioni L algoritmo Selection-Sort scandisce tutti gli elementi dell array a partire dall ultimo elemento fino all inizio e ad ogni iterazione: Viene

Dettagli

Problemi di ordinamento

Problemi 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

Dettagli

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione Grammatiche Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione Esempio dei numeri interi Si consideri il linguaggio

Dettagli

Alberi binari e alberi binari di ricerca

Alberi 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

Dettagli

Per semplicità eliminiamo le ripetizioni nell'albero.

Per 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

Dettagli

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso INDICI PER FILE Strutture ausiliarie di accesso 2 Accesso secondario Diamo per scontato che esista già un file con una certa organizzazione primaria con dati non ordinati, ordinati o organizzati secondo

Dettagli

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

Albero 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

Dettagli

Espressioni aritmetiche

Espressioni 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:

Dettagli

Lezione 7 Alberi binari: visite e alberi di ricerca

Lezione 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

Dettagli

Laboratorio di Python

Laboratorio di Python Laboratorio di Python Alberi binari Lab15 12 Maggio 2017 Outline Correzione esercizi per oggi Alberi binari Teoria Esercizi Esercizi per casa Saluti Esercizio 1 per casa Scrivere una funzione palindroma(s)

Dettagli

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

Algoritmi 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

Dettagli

Laboratorio di Python

Laboratorio di Python , Esercizi su alberi Università di Bologna 16 maggio 2013 Sommario 1 2 Consegna non avvenuta Meno di 10 studenti hanno inviato l esercizio svolto. Definizione ricorsiva alberi binari Un albero binario

Dettagli

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

Alberi 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

Dettagli

Strutture dati per insiemi disgiunti

Strutture dati per insiemi disgiunti Strutture dati per insiemi disgiunti Servono a mantenere una collezione S = {S 1, S 2,..., S k } di insiemi disgiunti. Ogni insieme S i è individuato da un rappresentante che è un particolare elemento

Dettagli

Alberi Binari di Ricerca

Alberi Binari di Ricerca Alberi Binari di Ricerca Prof. G. M. Farinella [email protected] www.dmi.unict.it/farinella Riferimenti Bibliografici Cormen T.H., Leiserson C.E., Rivest R.L Introduction to Algorithms, Third Edition,

Dettagli

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

Alberi. 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

Dettagli

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

Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen Esercitazione Ricorsione May 31, 2016 Esercizi presi dal libro di Rosen Problema 2 a) sezione 5.3 Data la seguente funzione definita ricorsivamente come: f(n+1) = 2f(n) f(0) = 3 Determinare il valore di

Dettagli

Esercizi vari. Alberto Montresor. 19 Agosto, 2014

Esercizi vari. Alberto Montresor. 19 Agosto, 2014 Esercizi vari Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive soluzioni

Dettagli

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

Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari. Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari. Algoritmi e Strutture Dati + Lab A.A. / Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro ALBERO

Dettagli

Esercizi su alberi binari

Esercizi su alberi binari Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica

Dettagli

Linguaggi e Grammatiche Liberi da Contesto

Linguaggi e Grammatiche Liberi da Contesto N.Fanizzi-V.Carofiglio Dipartimento di Informatica Università degli Studi di Bari 22 aprile 2016 1 Linguaggi Liberi da Contesto 2 Grammatiche e Linguaggi Liberi da Contesto G = (X, V, S, P) è una grammatica

Dettagli

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

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

Dettagli

Note per la Lezione 4 Ugo Vaccaro

Note per la Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che

Dettagli

Alberi ed Alberi Binari

Alberi 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,

Dettagli

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

GLI 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

Dettagli

Heap e code di priorità

Heap 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

Dettagli

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 9 Agosto, 204 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

Dettagli

Alberi binari di ricerca

Alberi binari di ricerca Alberi binari di ricerca Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi 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

Dettagli

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

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi Linguaggi di Programmazione Corso C Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali Nicola Fanizzi ([email protected]) Dipartimento di Informatica Università degli Studi di Bari Grammatiche

Dettagli

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114 In questa lezione Heapsort ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 11 1 Paternità L heapsort è stato pubblicato da J. W. J. Williams nel 106. Pochi mesi

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Si definisca Interval Tree un albero binario di ricerca le

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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]

Dettagli

Problemi, istanze, soluzioni

Problemi, 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

Dettagli

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

Heap 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),

Dettagli

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Fondamenti 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

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi 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

Dettagli

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15 ANNO ACCADEMICO 2014/15 1 a prova in itinere 13 gennaio 2015 ESERCIZIO 1 Si risolva l equazione di ricorrenza al variare del parametro reale a>1. T (n) = 27 n a T + n 2 log n a ESERCIZIO 2 Si ordinino

Dettagli

Implementazione dell albero binario in linguaggio C++

Implementazione 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

Dettagli

In questa lezione Alberi binari di ricerca: la cancellazione

In 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

Dettagli

Alberi Binari di Ricerca

Alberi 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

Dettagli

Lezione 12 Tabelle Hash

Lezione 12 Tabelle Hash Lezione 12 Tabelle Hash Rossano Venturini [email protected] 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

Dettagli

Pumping lemma per i linguaggi Context-free

Pumping lemma per i linguaggi Context-free Pumping lemma per i linguaggi Context-free Sia L un linguaggio context-free. E possibile determinare una costante k, dipendente da L, tale che qualunque stringa z! L con z > k si può esprimere come z=

Dettagli

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

Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei Alberi Alberi: definizioni Alberi Binari Esercizi su alberi binari: metodi ricorsivi Struttura dati per alberi generici 1 Alberi Gli alberi sono strutture dati naturalmente ricorsive Un albero è un particolare

Dettagli

Tempo e spazio di calcolo (continua)

Tempo e spazio di calcolo (continua) Tempo e spazio di calcolo (continua) I numeri di Fibonacci come case study (applichiamo ad un esempio completo le tecniche illustrate nei lucidi precedenti) Abbiamo introdotto tecniche per la correttezza

Dettagli

alberi binari e ricorsione

alberi binari e ricorsione alberi binari e ricorsione un albero binario: ogni nodo ha al più 2 figli ogni figlio è destro o sinistro figlio sinistro nodo interno radice figlio destro foglia cammini = sequenze di nodi = sequenze

Dettagli

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

Il 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

Dettagli

Strutture dati per insiemi disgiunti (union-find)

Strutture dati per insiemi disgiunti (union-find) Strutture dati per insiemi disgiunti (union-find) Una struttura dati per insiemi disgiunti mantiene una collezione S = { S 1, S 2,..., S k } di insiemi dinamici disgiunti. Ciascun insieme è identificato

Dettagli

Algoritmi e Principi dell Informatica

Algoritmi e Principi dell Informatica Algoritmi e Principi dell Informatica Appello del 20 Febbraio 2012 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 2h e 30 Chi deve sostenere solo il modulo di Informatica

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

Algoritmi e Strutture di Dati (3 a Ed.) String matching. Alan Bertossi, Alberto Montresor

Algoritmi e Strutture di Dati (3 a Ed.) String matching. Alan Bertossi, Alberto Montresor Algoritmi e Strutture di Dati (3 a Ed.) String matching Alan Bertossi, Alberto Montresor STRING MATCHING. Date una stringa P di m caratteri (pattern) e una stringa T di n caratteri, con m n, trovare un

Dettagli

Il passo del gambero. La soluzione di problemi con la tecnica del Backtracking. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez.

Il passo del gambero. La soluzione di problemi con la tecnica del Backtracking. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. Il passo del gambero La soluzione di problemi con la tecnica del Backtracking Nel labirinto Nel labirinto In ogni posizione provo sistematicamente tutte le strade, ricordando ogni volta l ultima scelta

Dettagli

La codifica di sorgente

La codifica di sorgente Tecn_prog_sist_inform Gerboni Roberta è la rappresentazione efficiente dei dati generati da una sorgente discreta al fine poi di trasmetterli su di un opportuno canale privo di rumore. La codifica di canale

Dettagli

ADT Coda con priorità

ADT Coda con priorità Code con priorità ADT Coda con priorità Una coda con priorità è una struttura dati dinamica che permette di gestire una collezione di dati con chiave numerica. Una coda con priorità offre le operazioni

Dettagli

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

Un albero completamente bilanciato o pieno (full) alberi completamente sbilanciati. Un albero binario completo alberi completamente sbilanciati Un albero completamente bilanciato o pieno (full) Definizione: Un albero è pieno se tutte le foglie sono sullo stesso livello e ogni nodo non foglia ha due figli. Il numero

Dettagli

Algoritmi e strutture dati

Algoritmi 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.

Dettagli

Gestione della produzione e della supply chain Logistica distributiva

Gestione della produzione e della supply chain Logistica distributiva Gestione della produzione e della supply chain Logistica distributiva Paolo Detti Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena Convergenza dell algoritmo Se non

Dettagli

METODI DELLA RICERCA OPERATIVA

METODI DELLA RICERCA OPERATIVA Università degli Studi di Cagliari FACOLTA' DI INGEGNERIA CORSO DI METODI DELLA RICERCA OPERATIVA Dott.ing. Massimo Di Francesco ([email protected]) i i Dott.ing. Maria Ilaria Lunesu ([email protected])

Dettagli

Lezione 9 Alberi binari di ricerca

Lezione 9 Alberi binari di ricerca Lezione 9 Alberi binari di ricerca Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 Lista monodirezionale Scrivere

Dettagli

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

Alberi. 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

Dettagli

Problema del cammino minimo

Problema del cammino minimo Algoritmi e Strutture di Dati II Problema del cammino minimo Un viaggiatore vuole trovare la via più corta per andare da una città ad un altra. Possiamo rappresentare ogni città con un nodo e ogni collegamento

Dettagli

Introduzione. Heap-binomiali: un heap binomiale è un insieme di alberi binomiali.

Introduzione. Heap-binomiali: un heap binomiale è un insieme di alberi binomiali. Heap binomiali 1 Introduzione Heap-binomiali: un heap binomiale è un insieme di alberi binomiali. Alberi-binomiali: un albero binomiale è un albero ordinato definito ricorsivamente. 2 Proprietà degli alberi

Dettagli

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 . Cammini ottimi E. Amaldi Fondamenti di R.O. Politecnico di Milano .. Cammini minimi e algoritmo di Dijkstra Dato un grafo orientato G = (N, A) con una funzione di costo c : A c ij R e due nodi s e t,

Dettagli

STRUTTURE NON LINEARI

STRUTTURE NON LINEARI PR1 Lezione 13: STRUTTURE NON LINEARI Michele Nappi [email protected] www.dmi.unisa.it/people/nappi Per la realizzazione della presentazione è stato utilizzato in parte materiale didattico prodotto da Oronzo

Dettagli