Dizionari Liste invertite e Trie

Documenti analoghi
alberi binari e ricorsione

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Progettazione di Algoritmi

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Alberi di ricerca binari

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

Algoritmi e Strutture Dati

Strutture dati e algoritmi. Sommario

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

Suono digitale. Ø Un secondo di musica stereo richiede 44'100 campioni di 16 bit (2 byte) ciascuno per due canali, quindi 176'400 byte.

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

I servizi del SITR-IDT

Quick Print. Quick Print. Guida Utente. Copyright 2013 Hyperbolic Software.

Files in C++ Fondamenti di Informatica. R. Basili. a.a

Normalizzazione. Definizione

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

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

INTRODUZIONE ALLE BASI DATI RELAZIONALI

Gestione di files Motivazioni

Informatica Teorica. Macchine a registri

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

I database. Introduzione alla teoria delle basi di dati

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

Gestione risorse (Windows)

Alberi Bilanciati di Ricerca

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Algoritmi e strutture dati. Codici di Huffman

Topologie delle reti di telecomunicazione

Progettazione logica

Manuale Utente per la Gestione dei Revisori degli Enti Locali

DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE.

WINDOWS Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni

CAPITOLO V. DATABASE: Il modello relazionale

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Moduli di misura per corrente ma per corrente ma

Parte 6 Esercitazione sull accesso ai file

2016 PostFinance. Possibili errori

Corso di Informatica. Software di produttività personale e database. Ing Pasquale Rota

Steel&Graphics srl Via Cà Nova Zampieri 4/E San Giovanni Lupatoto VR Tel. 045/ Fax. 045/

Procedura operativa per la gestione della funzione di formazione classi prime

Fondamenti di Internet e Reti

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013

Il comando provoca il salvataggio dello stato e la terminazione dell esecuzione.

Varianti Macchine di Turing

Indici ad albero. Albero Binario di Ricerca

SQL Server Architettura Client-Server. SQL Server Introduzione all uso di SQL Server Dutto Riccardo.

TECNICHE DI COMPRESSIONE DATI

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

Corso di Informatica

PIANO DI LAVORO. a.s / 2016

Documenti accessibili

Esercizi sulla conversione tra unità di misura

Disconnessione Utente

Entropia. Motivazione. ? Quant è l informazione portata dalla sequenza? Abbiamo una sequenza S di N simboli (campioni audio, pixel, caratteri,...

File System. Capitolo 13

Steel&Graphics srl Via Cà Nova Zampieri 4/E San Giovanni Lupatoto VR Tel. 045/ Fax. 045/

Laboratorio di Progettazione di Sistemi Software Progetto: modellazione di un dominio e sue attività

Algoritmi di ordinamento. Algoritmi. Selection sort semplificato - I. Selection sort semplificato - II

testo Saveris Web Access Software Istruzioni per l'uso

Modelli di Information Retrieval: I modelli base

Claudio Arbib Università di L Aquila. Ricerca Operativa. Reti di flusso

Strategie di annotazione di geni e genomi

Manuale Istruzione compilazione C1 per operatore economico

Manuale XML SERVICE FATTURA ELETTRONICA EASY. Version Description Author Date Approved Approved date V1 30/06/2014 V2 01/12/2014

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

TUTORIAL LIBRI IN SIMBOLI

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

Programma Richiesta riproduzione RFID versione 1.0

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

TRENTO 09 APRILE 2013 CATASTO FABBRICATI. INVIO TELEMATICO OPENKat. a cura del GEOM. ALBERTO FRONZA. Provincia Autonoma di Trento

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Lezione 2. Sommario. Il sistema binario. La differenza Analogico/Digitale Il sistema binario

M n a u n a u l a e l e o p o e p r e a r t a i t v i o v o Ver /12/2014

Moduli Bluetooth 03 - connessione seriale via BT

PRESENTAZIONI IN POWER POINT

29/1/ Pantografi cnc Linea IT

ARCHIVI E LORO ORGANIZZAZIONI

RenderCAD S.r.l. Formazione

% oscil.sil. % incid. 0 = no ; 1 = si riduzione L.147/2013 data cessazione (*)

Esercizi sulle equazioni logaritmiche

3.14 Modulo di memoria PCD3.R600 per flash-card (FC)

Importazione dati. e/fiscali Spesometro - Rel con gestionale e/satto. Gestionale e/satto

Lavoro Quantità. si determinino prodotto marginale e medio del fattore lavoro.

SIREA: SISTEMA DI REVISIONE DELLE ANAGRAFI

Si considerino le seguenti specifiche per la realizzazione di un sito web per la gestione di abbonamenti a riviste di vario genere..

Esercitazione 4. Comandi iterativi for, while, do-while

Strumenti freeware/open source per l'insegnamento delle discipline scientifiche

Macchina di Turing ... !!... !!! a b b! b a! Nastro di Input. testina. s t q i. s r. Unità di Controllo q j S / D / F

Scritto da Scirpoli, Fava, Paolucci, Mazzeo Giovedì 19 Maggio :09 - Ultimo aggiornamento Giovedì 19 Maggio :41

Laboratorio di Informatica L-A 1. ne: M se macchina, P se parte Nel caso di macchina seguono: L identificatore

Modulo 1 Information Communication Technology. ICT e computer... Pag. 6 Classificazione dei computer...» 8

Utilizzo della SAPGUI ed accesso al sistema SAPLight

Distonie normative nella progettazione del vetro strutturale

ALBO PRETORIO WEB MANUALE DI GESTIONE

ARROTONDANDO FIGURE CON TRIANGOLI EQUILATERI

Transcript:

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 Insieme S di n elementi (n è la dimensione di S) hp.: e 2 S ha il campo e.chiave 2 U e quello dei dati satellite e.sat (che dipende dall applicazione) Operazioni di base su S per una chiave k 2 U: Ricerca(k) trova e t.c. e.chiave = k (null se non esiste) Inserisci(e) esegue S = S [ {e} (hp. chiavi distinte in S) Cancella(k) esegue S = S - {e} (Appartiene(k) ::= Ricerca(k)!= null)

Dizionario ordinato Per ogni coppia di chiavi k, k 2 U vale k k o k k Estensione agli elementi dell insieme S: e e $ e.chiave e.chiave Operazioni supportate: Predecessore(k) = e se e.chiave = max e 2 S {e.chiave k} Successore(k) = e se e.chiave = min e 2 S {e.chiave k} Intervallo(k,k ) = {e 2 S t.c. k e.chiave k } Rango(k) = cardinalità di {e 2 S t.c. e.chiave k}

Opus libri: liste invertite e trie Information retrieval: recupero di documenti (testi) Molte query sugli stessi documenti: costruzione di un indice (es. motori di ricerca) Liste invertite (file invertite, file dei posting, concordanze): organizzazione logica dei dati termine = parola o sequenza alfanumerica massimale documento = testo partizionato in una sequenza di termini vocabolario V = termini distinti che appaiono nei documenti lista invertita per ogni termine P 2 V (posting) L P = { h T, i i t.c. T=ID(documento) e T[i,i+ P -1] = P } [alvie]

Un implementazione delle liste invertite Dizionario per memorizzare il vocabolario V: per esempio, tabella hash o albero binario di ricerca Ricordiamo che ciascun P 2 V è memorizzato come un elemento e nel dizionario t.c. e.chiave = P e.sat = L P Costruzione di liste invertite

costo: O(n) inserzioni nel dizionario [alvie]

Operazioni booleane P AND Q $ L P \ L Q P OR Q $ L P [ L Q NOT P $ complemento{l P } Conviene mantenere le liste ordinate ) O(m + n) tempo, analogamente alla fusione nel mergesort [hp L P L Q : complessità ottima ( L P log ( L Q / L P ))] P NEAR Q: i termini P e Q devono occorrere vicini (entro maxpos posizioni) [alvie] Lo facciamo in O( L P + L Q +occ) tempo invece che O( L P L Q ), dove occ = numero di occorrenze

stesso testo Ignorando VerificaNear, la scansione delle liste è come quella della fusione nel mergesort ) O( L P + L Q ) tempo

VerificaNear è output-sensitive ogni volta che avanza su una delle due liste, controlla che le posizioni differiscano di al più M fornisce un occorrenza a ogni iterazione del corpo del while viene invocata O( L P + L Q ) volte in tutto e il numero totale di iterazioni è occ. ) il contributo risultante è pari a O( L P + L Q +occ) tempo

TRIE: dizionario di stringhe Vocabolario V memorizzato usando un dizionario progettato appositamente per le stringhe Nuova query: più lungo prefisso che occorre

Definizione ricorsiva di TRIE per un insieme S di stringhe TRIE(S) è un albero cardinale -ario, dove = numero di simboli dell alfabeto = {0, 1,..., } delle stringhe in S: S è vuoto ) TRIE(S) è NULL S non è vuoto ) crea radice r e per ogni c 2 S c = {stringhe in S che iniziano con il simbolo c} rimuovi il simbolo iniziale c dalle stringhe in S c (se vuoto) poni ricorsivamente r.figlio[c] = TRIE(S c ) Ciascun nodo u in TRIE(S) contiene un campo u.dato per memorizzare un elemento del dizionario Terminatore di fine stringa per ciascuna stringa in S (per avere corrispondenza biunivoca)

Ricerca per prefissi in un trie Stringa pattern P di ricerca con m simboli, in O(m) tempo indipendentemente da S Modificando il codice, il tempo di ricerca è O(p+1), dove p è la lunghezza p m del prefisso trovato

Il costo di Recupera per trovare le occ stringhe in S che soddisfano la ricerca per prefissi può essere più di O(occ)...

Trie compatto Ha solo O( S ) nodi Non esistono nodi (eccetto la radice) con un solo figlio Archi etichettati con descrittori di sottostringhe: (stringa, inizio, fine)

Applicazioni: ordinamento di stringhe in tempo lineare Idea simile a RADIXSORT [alvie]

Applicazioni: albero dei suffissi (suffix tree) Più potente delle liste invertite: consente la ricerca anche in testi che non possono essere partizionati in termini (es. sequenze biologiche, testi cinesi, ecc.) Trie compatto dove S = { suffissi T[i,n] di T} Esempio: T = banana$ Solo spazio O(n)!

Albero dei suffissi Proprietà utilizzata dalla ricerca: P = T[i, i+ P -1] sse P è prefisso di T[i,n] 1. Effettua una ricerca per prefissi di P 2. Se P appare interamente in un cammino che dalla radice termina in u, recupera i suffissi T[i,n] nel sottoalbero di u. 3. Per ogni suffisso T[i,n] così recuperato, restituisci la posizione i come occorrenza Algoritmo output-sensitive: tempo O( P + occ)

FINE Lucidi tratti da Crescenzi Gambosi Grossi, Strutture di dati e algoritmi Progettazione, analisi e visualizzazione Addison-Wesley, 2006