Algoritmi di String Matching

Slides:



Advertisements
Presentazioni simili
Equazioni e calcoli chimici
Advertisements

Gestione della Memoria
Metodi e Applicazioni numeriche nell’Ingegneria Chimica
Strutture dati per insiemi disgiunti
Ricorrenze Il metodo di sostituzione Il metodo iterativo
INFORMATICA Algoritmi fondamentali
Sistemi Operativi - Vi 1 Il sistema operativo LINUX Leditor vi Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica.
Capitolo 3 Risorse e Stallo 3.1. Risorse 3.2. Introduzione
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
COORDINATE POLARI Sia P ha coordinate cartesiane
2 SCOPO DELLA TESI Realizzare un sistema capace di migliorare la riproduzione sonora affidata ai comuni altoparlanti MODALITA Realizzazione di un sistema.
Introduzione Cosa sono le reti di Petri?
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
Elettrostatica 3 23 maggio 2011
= 2x – 3 x Definizione e caratteristiche
esponente del radicando
Alberi binari di ricerca
RICONOSCIMENTO DI SEQUENZE DI EVENTI
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
The Knuth-Morris-Pratt Algorithm
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Analisi e Sintesi di circuiti sequenziali
Process synchronization
Algoritmo di Ford-Fulkerson
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
Esercizio 4 Data una stringa P di lunghezza m e definita sullalfabeto, scrivere un programma PERL per calcolare la seguente funzione: PREFIX_FUNCTION:
Esercizio 4 Data una stringa P di lunghezza m e definita sullalfabeto, scrivere un programma PERL per calcolare la seguente funzione: PREFIX_FUNCTION:
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Esercizio 3 Data una stringa P (pattern) di lunghezza m e una stringa T (testo) di lunghezza n, definite su di un alfabeto, modificare il programma dellesercizio.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e strutture dati
Risorse e Stallo.
Seminario su clustering dei dati – Parte II
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
CONTROLLO DI SUPPLY CHAIN MEDIANTE TECNICHE H-INFINITO E NEGOZIAZIONE
Il lavoro dipende dal percorso??
Algoritmi e Strutture Dati
Analisi e Sintesi di circuiti sequenziali. Definizione Una macchina sequenziale é un sistema nel quale, detto I(t) l'insieme degli ingressi in t, O(t)
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Unità Didattica 2 I Linguaggi di Programmazione
Notazioni Asintotiche e Ordini di Grandezza delle funzioni
EXCEL FORMATTAZIONE DATI.
Educare al multimediale 1 – Verso il digitale 2 Presentazione a cura di Gino Roncaglia Prima parte: Informazione in formato digitale.
LA CRITTOGRAFIA QUANTISTICA
Elementi di Informatica di base
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Metodi di soluzione guasti nel volo in formazione di velivoli autonomi Candidato: Simone Di Nisio Relatori: Prof. M.Innocenti Prof. A. Balestrino.
1 Questionario di soddisfazione ATA - a. sc. 2008/09 Il questionario è stato somministrato nel mese di aprile Sono stati restituiti 29 questionari.
Passo 3: calcolo del costo minimo
Un esempio: Calcolo della potenza n-esima di un numero reale
Programmazione di Calcolatori
Algoritmi e Strutture Dati
Pippo.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Esercitazione 1 Marco D. Santambrogio – Ver. aggiornata al 9 Aprile 2014.
1 Il Buffer Cache Unix (Bach: the Design of the Unix Operating System (cap: 3)
Sistemi e Tecnologie Informatiche Ricorsione Umberto Ferraro Petrillo.
Informatica 3 V anno.
Sistemi basati su conoscenza Metodi di ricerca informata Prof. M.T. PAZIENZA a.a
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Suggerimenti [1d5] SE la prima lettera della matrice (in alto a sinistra, matrice[0,0]) è diversa dalla prima lettera della parola (parola[0]) ALLORA siamo.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Prof.ssa Rossella Petreschi Lezione del 7 /01/ 2013 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 32 del testo Cormen,Leiserson,Rivest,
Transcript della presentazione:

Algoritmi di String Matching Il problema dello String Matching Algoritmo semplice di Forza Bruta Algoritmo di Rabin-Karp Algoritmo basato sugli automi a stati finiti Algoritmo di Knuth-Morris-Pratt Algoritmo di Boyer-Moore Luca Tabarelli - Febbraio 2002 Luca Tabarelli

Il problema dello String Matching cercare all’interno di un documento il numero e la posizione delle occorrenze di un insieme di elementi chiamato Pattern. Text ( T ): stringa di elementi molto spesso di dimensione elevata, rappresenta il documento nel quale si effettua la ricerca. Pattern ( P ): e’ l’insieme di elementi che si deve ricercare all’interno di T.

Obiettivo dei ricercatori: Difficoltà: - automatizzare la ricerca in programmi di text-editing ottimizzare il tempo di ricerca in sequenze lunghe e complicate; Obiettivo dei ricercatori: evitare di controllare in dettaglio parti di testo diverse dal pattern; sfruttare tutte le informazioni che il pattern stesso puo’ contenere;

Algoritmo semplice di Forza Bruta Come funziona? * Semplicemente, fa scivolare il pattern sopra il testo; * Se gli elementi di P si confrontano esattamente con quelli di T occorrenza trovata! * Altrimenti, P viene spostato a destra di una posizione.

ricerca di una stringa am in un testo composto da an Forza Bruta Vantaggi: Svantaggi: molto semplice da implementare inefficiente Caso pessimo: ricerca di una stringa am in un testo composto da an aaaa…….aaaa aaaa……………….aa m elementi n elementi

Algoritmo di Rabin-Karp Trasforma il pattern ed il blocco di testo che vuole analizzare in singoli elementi numerici, confrontabili piu’ velocemente; Tutti i risultati sono calcolati modulo un terzo numero (q) per ridurre la loro grandezza;

Esempio: Tutto cio’ che possiamo fare in base 10 si puo’ fare in qualsiasi altra base!

Rabin - Karp Vantaggi: Svantaggi: Lavorando in modulo, alcuni blocchi non validi forniscono comunque valori uguali a quelli del pattern  si devono confrontare tutti gli elementi dei blocchi presi in considerazione; Peggioramento dei tempi di esecuzione se esistono troppe posizioni valide; La trasformazione di ogni blocco del testo puo’ essere ricavata dal valore del blocco precedente  posso leggere il testo un carattere alla volta senza tornare indietro; Esecuzione più veloce con valori opportuni di q ;

Algoritmo basato su Automi a stati finiti Per ricercare le occorrenze si appoggia ad una struttura che costruisce prima di esaminare il testo: un automa a stati finiti; L’automa è formato da una serie di stati nei quali si “naviga” ricevendo un particolare elemento; L’algoritmo legge il testo un carattere alla volta e si sposta nel relativo stato dell’automa; Se arrivo allo stato finale ho trovato un’occorrenza, altrimenti continuo nella ricerca; Ogni pattern diverso forma un automa diverso!

Un automa a stati finiti.

Come viene implementato un automa? Generalmente attraverso una matrice chiamata “matrice di transizione di stato”: le righe rappresentano gli stati; le colonne, i possibili prossimi elementi esaminati.

Come viene inizializzata la matrice? Per creare la matrice l’algoritmo si avvale di una funzione chiamata funzione suffisso, che restituisce la lunghezza del più lungo prefisso di P (Pk) che è suffisso di Pq+ carattere. Esempio: con il pattern ‘ababaca’ (1) la matrice in posizione [3][‘f’] conterrà 0 poiché il prefisso più lungo di P che è suffisso di P3+’f’=‘abaf’ è la stringa vuota; (2) la matrice in posizione [3][‘b’] = 4 poiché il prefisso più lungo di P che è suffisso di P3+’b’=‘abab’ è proprio ‘abab’.

Automa a stati finiti Vantaggi: Svantaggi: Velocità di esecuzione della ricerca grazie all’automa che permette di leggere il testo un carattere alla volta. L’algoritmo perde molto tempo per costruire l’automa soprattutto per pattern particolarmente lunghi.

Algoritmo di Knuth-Morris-Pratt * E’ l’algoritmo che riesce a sfruttare al meglio le informazioni contenute nel pattern; * Confronta il pattern P con se stesso; * Cerca di capire se il pattern contiene al suo interno l’inizio di una nuova occorrenza; * Così facendo non serve ricominciare a confrontare i caratteri del testo con i caratteri iniziali di P, ma dalla posizione indicata dall’algoritmo.

Esempio: 1 2 3 4 5 6 7 8 9 10 P: A B C T: D I primi caratteri del pattern vengono riconosciuti a partire dalla 3° posizione di T con un mismatch nella 7° posizione. Perché ripartire confrontando P con il 4° carattere di T? Sappiamo a priori che la 4° pos. non sarà l’inizio di una nuova occorrenza poiché le prime due lettere di P sono diverse! Ricominciamo a confrontare dalla 5° di T.

Come ricavare l’informazione che il pattern contiene? - Utilizza una tecnica simile a quella degli automi; - Ma evita il calcolo della funzione di transizione; - Utilizza un’altra funzione precalcolata detta funzione prefisso; - Questa funzione restituisce la lunghezza del più lungo prefisso di P che è suffisso di Pq. i 1 2 3 4 5 6 7 8 9 10 P[i] A B C Pref[i]

Knuth – Morris – Pratt Vantaggi: Svantaggi: è uno degli algoritmi più veloci; legge il testo un carattere alla volta senza tornare indietro il pattern non viene sempre riletto dall’inizio; sfrutta bene l’informazione del pattern; - deve calcolare a priori la funzione prefisso per ogni pattern diverso;

Algoritmo di Boyer - Moore * Il suo funzionamento è simile a quello di forza bruta; * Fa scivolare il pattern sopra il testo; * Utilizza due tecniche euristiche: Bad Character e Good Suffix; * Se i caratteri del pattern si confrontano con quelli del testo ho trovato un’occorrenza; * Altrimenti, sposta il pattern di K posizioni, dove K è il massimo fra i valori proposti dalle due euristiche.

Euristica Bad Character Quando nella ricerca un carattere del testo crea un mismatch con il carattere relativo del pattern, l’euristica dichiara quel carattere come bad-character; Fa scivolare il pattern a destra in modo da far coincidere il bad-character con la sua occorrenza più a destra nel pattern.

Euristica Good Suffix Simile all’euristica precedente, ma quando occorre un mismatch, dichiara come good-suffix tutti i caratteri che si sono allineati correttamente a P. Fa scivolare il pattern di uno spostamento minimo da far coincidere il good-suffix con gli eventuali caratteri di P.

Esempio (1):

Esempio (2):

Esempio (3):

Boyer - Moore Vantaggi: Svantaggi: risulta essere l’algoritmo più efficiente se il pattern P è lungo e l’alfabeto utilizzato è grande; sfrutta bene le informazioni del pattern grazie alle due euristiche; - anche questo algoritmo deve costruire a priori due strutture: una per l’euristica bad-character, l’altra per l’euristica good-suffix

Conclusioni Gli algoritmi di string matching che si comportano meglio in generale sono senza dubbio quello di Knuth-Morris-Pratt e quello di Boyer-Moore. In casi particolari comunque, anche gli altri algoritmi possono essere utilizzati tranquillamente; Tutto dipende dal TESTO e dal PATTERN: da quanto sono lunghi, come sono strutturati, da quanti elementi diversi dell’alfabeto sono composti …