• Non ci sono risultati.

Factor OracleFactor Oracle

N/A
N/A
Protected

Academic year: 2021

Condividi "Factor OracleFactor Oracle"

Copied!
27
0
0

Testo completo

(1)

Factor Oracle Factor Oracle

A New Structure for Pattern A New Structure for Pattern

Matching Matching

Daniele Contarino Daniele Contarino

Università degli Studi di Catania Università degli Studi di Catania

Facoltà di Scienze Matematiche FF.NN.

Facoltà di Scienze Matematiche FF.NN.

Corso di Laurea in Informatica Corso di Laurea in Informatica

(2)

Executive summary Executive summary

IntroduzioneIntroduzione

Factor Oracle – L'idea baseFactor Oracle – L'idea base

Costruzione di Oracle Costruzione di Oracle

Algoritmo da alto livelloAlgoritmo da alto livello Costruzione onlineCostruzione online

String MatchingString Matching

BOM (Backward Oracle Matching) e Turbo-BOMBOM (Backward Oracle Matching) e Turbo-BOM

Dati sperimentaliDati sperimentali

Factor Oracle in real worldFactor Oracle in real world

(3)

Introduzione Introduzione

Oracle (Oracolo) …. chi è??

Oracle (Oracolo) …. chi è??

““Nell'era classica, un Nell'era classica, un

oracolo oracolo

era una persona era una persona considerata come fonte di sagge

considerata come fonte di sagge considerazioni,

considerazioni, previsioni previsioni profetiche

profetiche o precognizioni del o precognizioni del futuro, ispirati dagli dei.”

futuro, ispirati dagli dei.”

(4)

Introduzione Introduzione

Per il pattern matching, sarebbe utile un oracolo Per il pattern matching, sarebbe utile un oracolo

che possa indicare,

che possa indicare, anche se non precisamenteanche se non precisamente (come le profezie di un oracolo), dove si possano (come le profezie di un oracolo), dove si possano

trovare i match del nostro pattern all'interno di trovare i match del nostro pattern all'interno di

un testo in tempi ottimi.

un testo in tempi ottimi.

Il Il Factor OracleFactor Oracle importa questa intuizione importa questa intuizione nell'informatica!

nell'informatica!

(5)

Factor Oracle – L'idea base Factor Oracle – L'idea base

Il Factor Oracle è un nuovo automa per il pattern Il Factor Oracle è un nuovo automa per il pattern

matching che agisce come un oracolo su tutti i matching che agisce come un oracolo su tutti i

fattori (sotto stringhe) di un stringa.

fattori (sotto stringhe) di un stringa.

(6)

Factor Oracle – L'idea base Factor Oracle – L'idea base

L'idea infatti del Factor Oracle è che se una L'idea infatti del Factor Oracle è che se una

stringa viene accettata dal automa

stringa viene accettata dal automa

può essere può essere

un fattore di p (weak factor recognition).

un fattore di p (weak factor recognition).

Ovviamente tutti i match di p su t sono accettati Ovviamente tutti i match di p su t sono accettati

dall'automa.

dall'automa.

(7)

Factor Oracle – Definizioni Factor Oracle – Definizioni

Ora diamo alcune definizioni che ci torneranno Ora diamo alcune definizioni che ci torneranno

utili in seguito. Diciamo che utili in seguito. Diciamo che

x ∈Fact ( p) se e solo se p=uxv , u e v ∈Σ * x ∈Pref ( p) se e solo se p= xu , u ∈ Σ *

x ∈Suff ( p) se e solo se p=ux , u ∈Σ * pref p (i) è il prefisso di p, per 0≤i ≤∣p∣

poccur (u , p)={∣z∣: z=wuetp=wuv}

endposp (u)={i | p=wupi+ 1 ... pm}

(8)

Factor Oracle Factor Oracle

Build_Oracle (p = p1 p2 ... pm) For i ← 0 to m

Crea un nuovo stato i For i ← 0 to m -1

Costruisci una nuova transizione da i a i + 1 da p i +1 For i ← 0 to m -1

Sia u una parola di lunghezza minima nello stato i For each σ Σ, σ ≠ p i +1

If uσ Fact (p i-| u |+1 ... pm)

Costruisci una nuova transizione da i a i + poccur (pi-| u |+1 ... pm) da σ

(9)

Factor Oracle – l'automa Factor Oracle – l'automa

L'automa Factor Oracle di

L'automa Factor Oracle di abbbaababbbaab

Nel Factor Oracle tutti i stati sono terminali.

Nel Factor Oracle tutti i stati sono terminali.

La parola

La parola abbaabba è accettata anche se non è un è accettata anche se non è un fattore di

fattore di abbbaababbbaab

(10)

Factor Oracle – Proprietà Factor Oracle – Proprietà

(a)(a) Factor Oracle è un automa deterministico Factor Oracle è un automa deterministico aciclico;

aciclico;

(b)(b) Riconosce almeno i fattori di p;Riconosce almeno i fattori di p;

(c)(c) Ha il minor numero di stati possibili(per una Ha il minor numero di stati possibili(per una stringa p di lunghezza m ci sono esattamente stringa p di lunghezza m ci sono esattamente

m +1 stati);

m +1 stati);

(d)(d) Ha un numero lineare di transizioni (compresi Ha un numero lineare di transizioni (compresi tra m e 2m-1).

tra m e 2m-1).

(11)

Di seguito verrà presentata una versione della Di seguito verrà presentata una versione della costruzione del Factor Oracle leggendo il pattern costruzione del Factor Oracle leggendo il pattern

da sinistra verso destra, aggiornando di volta in da sinistra verso destra, aggiornando di volta in

volta l'automa.

volta l'automa.

Per procedere alla definizione dell'algoritmo Per procedere alla definizione dell'algoritmo

abbiamo bisogno di altre 2 definizioni abbiamo bisogno di altre 2 definizioni

Factor Oracle – Factor Oracle – Costruzione online Costruzione online

(12)

Definiamo Definiamo repeat repeat pp (i) (i) il più lungo suffisso il più lungo suffisso presente in

presente in prefprefpp(i)(i) che compare almeno 2 che compare almeno 2 volte;

volte;

Definiamo la Definiamo la funzione supplementofunzione supplemento che che mappa ogni stato i-esimo dell'automa ed mappa ogni stato i-esimo dell'automa ed

memorizza una transazione dallo stato i-esimo memorizza una transazione dallo stato i-esimo

fino allo stato in cui finisce la lettura della fino allo stato in cui finisce la lettura della

funzione

funzione repeat repeat (i) (i)

Factor Oracle – Factor Oracle – Costruzione online Costruzione online

(13)

Function add-letter (Oracle (p = p1 p2 ... pm), σ) Crea un nuovo stato m + 1

Crea una nuova transizione da m a m + 1 etichettata σ k ← S p (m)

While k> - 1 e non c'è passaggio da k per σ Do

Crea una nuova transizione da k per m + 1 per σ k ← Sp (k)

End While

If (k = - 1) Then s ← 0

Else s ← dove conduce la transizione da k per σ.

Spσ (m + 1) ← s

Return Oracle (p = p1 p2 ... pm σ)

Factor Oracle – Factor Oracle – Costruzione online Costruzione online

(14)

Oracle-on-line (p = p1 p2 ... pm) Crea Oracle (ε) con:

un singolo stato 0 Sε (0) ← - 1

For i ← 1 to m Do

Oracle (p = p1 p2 ... pi) ← add-letter(Oracle (p = p1 p2 ... pi-1), pi ) End For

Applichiamo

Applichiamo add-letteradd-letter ad ogni lettera del ad ogni lettera del pattern, usando un automa con il solo stato pattern, usando un automa con il solo stato

iniziale iniziale

Factor Oracle – Factor Oracle – Costruzione online Costruzione online

(15)

Factor Oracle – Factor Oracle – Costruzione online Costruzione online

Oracle-on-line (p = p1 p2 ... pm) Crea Oracle (ε) con:

un singolo stato 0 Sε (0) ← - 1

For i ← 1 to m Do

Crea un nuovo stato m

Crea una nuova transizione da m-1 a m etichettata pi k ← S p (i-1)

While k> - 1 e non c'è passaggio da k per pi Do Crea una nuova transizione da k per i per pi k ← Sp (k)

End While

If (k = - 1) Then s ← 0

Else s ← dove conduce la transizione da k per pi

Spσ (i) ← s End For

Volendo usare una sola funzione, possiamo implementare Volendo usare una sola funzione, possiamo implementare

tutto come di seguito tutto come di seguito

(16)

Factor Oracle – BOM Factor Oracle – BOM

BOM (Backward Oracle Matching) è l'algoritmo BOM (Backward Oracle Matching) è l'algoritmo

che implementa insieme BDM (Backward Dawg che implementa insieme BDM (Backward Dawg

Matching) con il Factor Oracle, sfruttandone Matching) con il Factor Oracle, sfruttandone

entrambe le proprietà.

entrambe le proprietà.

(17)

Factor Oracle – BOM Factor Oracle – BOM

L'idea del BDM è quella di creare una finestra, L'idea del BDM è quella di creare una finestra,

nella quale cercare i fattori di p

nella quale cercare i fattori di prr (il reverse di p) (il reverse di p) da destra verso sinistra. Appena la ricerca

da destra verso sinistra. Appena la ricerca

fallisce, la finestra si posiziona a partire dalla fallisce, la finestra si posiziona a partire dalla

posizione successiva dove la ricerca è fallita.

posizione successiva dove la ricerca è fallita.

La complessità di BOM nel caso peggiore è La complessità di BOM nel caso peggiore è

O(mn) O(mn)

(18)

Factor Oracle – BOM

Factor Oracle – BOM

(19)

Factor Oracle – BOM Factor Oracle – BOM

BOM ( p = p1 p2 ... pm, T = t1 t2 ... tn ) Pre-elaborazione

Costruzione dell 'Oracle di pr Cerca

pos ← 0

While (pos <= n - m) do

stato ← stato iniziale di Oracle (pr ) j ← m

While esiste lo stato do

stato ← immagine dello stato da T [pos + j] in Oracle (pr ) j ← j - 1

EndWhile If j = 0 do

contrassegnare una occorenza a pos + 1 j ← 1

EndIf

pos ← pos + j EndWhile

(20)

Factor Oracle – Turbo-BOM Factor Oracle – Turbo-BOM

Siccome l'automa Factor Oracle accetta parole Siccome l'automa Factor Oracle accetta parole

che non sono realmente fattori del pattern, è che non sono realmente fattori del pattern, è

ragionevole pensare che il numero di ispezioni ragionevole pensare che il numero di ispezioni

sia maggiore rispetto a quelle effettuate con sia maggiore rispetto a quelle effettuate con BDM.BDM.

Introduciamo allora un nuovo Introduciamo allora un nuovo

algoritmo che dotiamo come algoritmo che dotiamo come

Turbo-BOM

Turbo-BOM che combina che combina insieme gli algoritmi KMP e insieme gli algoritmi KMP e

(21)

Factor Oracle – Turbo-BOM Factor Oracle – Turbo-BOM

La posizione critica è posizione d'inizio (partendo La posizione critica è posizione d'inizio (partendo

da destra verso sinistra) di Oracle nella da destra verso sinistra) di Oracle nella

precedente ricerca precedente ricerca

(22)

Factor Oracle – Turbo-BOM Factor Oracle – Turbo-BOM

Caso 1 : la posizione critica non viene raggiunta Caso 1 : la posizione critica non viene raggiunta

(23)

Factor Oracle – Turbo-BOM Factor Oracle – Turbo-BOM

Caso 2 : la posizione critica viene raggiunta Caso 2 : la posizione critica viene raggiunta

(24)

Factor Oracle Factor Oracle

Dati Sperimentali Dati Sperimentali

Risultati sperimentali nel Risultati sperimentali nel

tempo degli algoritmi di tempo degli algoritmi di string matching sul test string matching sul test

casuali di 10 Mb di casuali di 10 Mb di

dimensione su alfabeti di dimensione su alfabeti di dimensione 2, 4, 16 e 32.

dimensione 2, 4, 16 e 32.

L'asse X rappresenta la L'asse X rappresenta la

lunghezza del modello e lunghezza del modello e

l'asse Y il tempo di ricerca l'asse Y il tempo di ricerca

(25)

Factor Oracle – Real World Factor Oracle – Real World

CatBOX (Computer Audition Toolbox)CatBOX (Computer Audition Toolbox)

uso: Factor Oracle for Midi improvisation uso: Factor Oracle for Midi improvisation

http://cosmal.ucsd.edu/cal/projects/CATbox/catboxdownload.htm http://cosmal.ucsd.edu/cal/projects/CATbox/catboxdownload.htm

• Applicazioni per trovare occorrenze in:Applicazioni per trovare occorrenze in:

Dati compressiDati compressi

BioinformaticaBioinformatica

(26)

Factor Oracle – References Factor Oracle – References

C. Allauzen, M. Crochemore, and M. Raffinot:C. Allauzen, M. Crochemore, and M. Raffinot: Factor oracle: a Factor oracle: a new structure for pattern matching

new structure for pattern matching, , in SOFSEM’99, J. in SOFSEM’99, J.

Pavelka, G. Tel, and M. Bartosek, eds., LNCS 1725, Pavelka, G. Tel, and M. Bartosek, eds., LNCS 1725,

Milovy,Czech Republic, 1999, Springer-Verlag, Berlin, pp. 291–

Milovy,Czech Republic, 1999, Springer-Verlag, Berlin, pp. 291–

306.306.

Factor Oracle Suffix Oracle, Factor Oracle Suffix Oracle,

http://www.slideserve.com/ula/factor-oracle-suffix-oracle http://www.slideserve.com/ula/factor-oracle-suffix-oracle

(27)

Grazie per l'attenzione

Grazie per l'attenzione

Riferimenti

Documenti correlati

I nodi aventi indice 1 e n g , dove n g è il numero totale di nodi nella generica direzione principale, sono di tipo ghost, cioè nodi fittizi che non appartengono al dominio fisico

◼ Select the top two most sold items, their code, their weight, the total amount sold, and their ranking according to the total amount sold.. Oracle data warehousing

– Caricamento dei dati immediato, fast refresh eseguita automaticamente dopo ogni commit e abilitazione alla riscrittura delle interrogazioni. Esempio di vista materializzata

Torniamo ora a Sql Developer per effettuare la connessione a Oracle usando il nuovo account prova appena creato su Oracle e poter così accedere al Workspace “prova” su cui

La lista degli script precedentemente definiti è mostrata nella parte centrale della pagina; qui è possibile modificarli, eseguirli nuovamente o mostrare i risultati delle

Questa verifica non può essere effettuata eseguendo direttamente un conteggio delle tuple in IMP, in quanto in un trigger a granularità di tupla non è possibile accedere

I servizi oggetto della gara, dovranno essere attivati previo accordo con il Responsabile unico del procedimento i 18 18 decorreranno dalla data di sottoscrizione di

• Partizionare gli articoli in base alla tipologia ed enumerare in modo progressivo i dati all’interno di ogni partizione. All’interno di ogni partizione i dati sono ordinati in