Automi e stringhe Lezione n°24 Prof.ssa Rossella Petreschi Lezione del 9 /01/ 2013 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 32 del testo Cormen,Leiserson,Rivest, Stein “Introduzione agli algoritmi” Edizioni: Jackson libri 1
Automi a stati finiti Un automa a stati finiti è una quintupla (Q,q0,A, S,) dove Q è un insieme finito di stati. q0 in Q è lo stato iniziale. A in Q è un insieme distinguibile di stati accettanti. è un alfabeto di input finito. è una funzione da Qx in Q, chiamata funzione di transizione di M, ovvero (q,a) è il nuovo stato in cui giunge l’automa che era nello stato q dopo aver letto il carattere a. Se lo stato corrente q appartiene ad A, si dice che la macchina M accetta la stringa appena letta, altrimenti l’input letto è rifiutato. Si dice che una macchina accetta una stringa w sess (w) appartiene ad A e la funzione da * a Q si chiama funzione stato finale ed è definita ricorsivamente: () =q0 ; (wa) =((w),a), per w in * e a in 2
Automi di corrispondenza fra stringhe Per un automa di corrispondenza fra stringhe relativo ad un dato pattern P [1,…,m] si ha Q , l’insieme finito di stati, è (0,1,…m). lo stato iniziale q0 in Q è 0. l’unico stato accettante di A in Q è m. è un alfabeto di input finito. d , funzione di transizione da Qx in Q, è così definita d(q,a) = s(Pqa), per ogni q in Q e a in Con s(Pqa), corrispondenza tra S* e (0,1,…m), che misura il più lungo prefisso del pattern P che è anche suffisso di Pqa s è chiamata funzione suffisso 3
Idea di base In ogni stato q l’automa ha bisogno solo di conoscere la lunghezza del più lungo prefisso di P che sia suffisso di quanto letto fino a quel momento. Per la funzione suffisso si ha che: - Per un qualunque carattere a e una qualunque stringa x, vale s(xa) ≤ s(x)+1 - Per un qualunque carattere a e una qualunque stringa x, se q = s(x), vale s(xa) ≤ s(Pqa) 4
Calcolo di d Tempo O(m3 S ) Algoritmo calcola d(P, S) m=lungh(P); ciclo da m for q=0 to m ciclo da S do for ogni a in S al più m-1 do k = min (m+1,q+2) fino ad m confronti repeat k = k-1 until Pk suff Pqa d(q,a) = k ritorna d Tempo O(m3 S ) 5
Algoritmo stringhe/automi Algoritmo stringhe/automi (T,d,m) n=lungh(T); q=0; for i=1 to n do q = d(q, T(i)) if q=m then s = i-m; write “il pattern appare con spostamento s” Tempo O(n) + calcolo di d Il miglior algoritmo di corrispondenza fra stringhe e automi richiede tempo O (n+mS) 6
Correttezza dell’algoritmo stringhe/automi TEOREMA: Se è la funzione stato-finale di un automa di corrispondenza tra stringhe per un dato pattern P(1,…,m) e T(1,n) è un testo di input per l’automa, allora (Ti)=s(Ti), i=0,…,n Dimostrazione Si procede per induzione Passo base T0 = quindi (T0) = s(T0) = 0 Ipotesi induttiva (Ti) = s(Ti) Si prova che (Ti+1) = s(Ti+1) (Ti+1) = (Tia) = ((Ti),a) = (q,a) = s(Pq,a) = s(Ti,a) s(Ti+1) 7