Optimal Insertion in deterministic DAWGs
David [email protected]
UFMG - ICEx – DCC Teoria de Linguagens
Belo HorizonteDezembro de 2004
Sumário Introdução
Problema Motivação Trabalhos Correlatos
Definições Algoritmo Experimentos Conclusões
Introdução – Problema
Representar dados em forma de Autômatos
Aplicações Representação de Dicionários Casamento de Cadeias de Caracteres Processamento de Voz Análise de DNA
Introdução – Problema
DWAGs – Directed acyclic word graph Nodes Links
AFDA – Autômato Finito Determinista e Acíclico Estados Transições
Introdução – Problema
AFDA Conjunto finito de palavras (AF) Palavras de tamanho finito (sem ciclo) Por que determinístico?
Computação rápida e on-line
Introdução – Problema
Palavras dance darts start smart
Introdução – Motivação
AFDA Representação em árvores
Aproveita prefixos exatos
AFDA mínimos Sem ciclos, “arestas” de retorno. Aproveitamento de prefixos e sufixos Definição: Menor nº de estados
possíveis
Introdução – Motivação Autômatos Mínimos Construídos de
Forma incremental Espaço x Tempo Grande conjunto de Dados
Autômato não mínimo pode não caber na Memória Principal.
Redução em quase 20 vezes Aplicação: corretores gramaticais – on-
line
Introdução - Trabalhos
Minimização de Autômatos Moore 1956 - O(n2) Hopcroft 1974 - O(n log n) Revuz 1992 – O(n), Bucket Sort Sgarbas 1995 – O(n2), ?
Definições
Q é um conjunto de estados é um conjunto de símbolos
(alfabeto) Uma transição é uma tripla (n1,n2,s)
L Q x Q x é o conjunto de transições
n1 n2
s
Definições
Uma sucessão de n0 até nk, succ(n0,nk)[(n0,n1,s1),(n1,n2,s2),...,(nk-2,nk-1,sk-1),(nk-1,nk,sk)]
nk é sucessor de n0
n0 é antecessor de nk
Se |succ(n0,nk)| = 1 nk é sucessor imediato de n0
n0 é antecessor imediato de nk
Definições
Uma sucessão G=succ(n0,nk)[(n0,n1,s1),(n1,n2,s2),...,(nk-2,nk-1,sk-1),(nk-1,nk,sk)]
rotulo(G)[s1,s2,...,,sk-1,sk]
H=SUCC(n0,nk), todas as sucessões ROTULO(H), todas as séries
ordenadas
Definições
AFDA D =(Q,L,,i,f) i, f Q n Q-{i}, SUCC(i,n) n Q-{f}, SUCC(n,f) ROTULO(SUCC(i,f)) =
todas as “palavras”
Definições
FIN(n) = {(n’,s): (n’,n,s) L} FOUT(n) = {(n’,s): (n,n’,s) L} Estado Receptor |FIN(n)| > 1
Definições
Estados Equivalentes (n1 n2)ROTULO(SUCC(n1,f)) = ROTULO(SUCC(n2,f))
Estados Similares (n1 n2)FOUT(n1) = FOUT(n2)
Similar Equivalentes Equivalentes Similar
Definições
D =(Q,L,,i,f) AFDA Mínimo é aquele que não
contém Estados Equivalentes Lema 1
Dois Estados Equivalentes de D são similares ou seus sucessores imediatos são também equivalentes
Definições Transição Nula
Algoritmo
Adição de palavras em AFDA mínimo prévio
Ótimo – AFDA produzido é mínimo Inserção O(n), |wi| O(n2) criação de dicionário
Algoritmo
Percorre pequena porção do AFDA Composto de 3 estágios
1º Aproveitamento de Prefixos 2º Anexo do Sufixo restante 3º Minimização – Estados Similares
Idéia: Estados Similares
Algoritmo – 1º Passo Aproveitamento de Prefixo (loop)
Verifica se existe transição com caractere (n,w[i]) FOUT(n0)?
então, se é receptor (|FIN(n)| > 1)? Clona estado (n’) FIN(n) FIN(n) – {transição} FIN(n’) {transição} n n’
n0 n; senão, pára
Algoritmo – 2º Passo
Anexo do sufixo Enquanto houver sufixo
Cria um novo estado n Cria uma nova transição (n0,n,w[i]) n0 n;
cria transição (n0,f,`#`); j (n0,`#`)
Algoritmo – 3º Passo Minimização – Estados Similares
p f; (n’,c) j; /* loop */ Enquanto existir (n,c) FOUT(p)
Se FOUT(n) = FOUT(n’) { j } FIN(n’); FIN(n) FIN(n) { j }; Remova n’, FIN(n’) e FOUT(n’) p n; /* vá para loop */
caso não exista Estado Similar a n’ o processo pára
Algoritmo - Exemplo
Inserindo stair
Algoritmo - Exemplo
Inserindo stair
Experimentos
Dicionário com 230000 palavras gregas
Pentium 200 MHZ Construção Incremental de AFDAs Tamanho do AFDA =
f(estados,transições)
Experimentos
Estados x Palavras - O(n) Transições x Palavras
Experimentos
Estados x Palavras – O(n) Transições x Palavras
Experimentos
Tempo x Palavras – O(n2)
Conclusões
Algoritmo de adição de palavras Adiciona palavras à AFDA não
mínimos Não percorre todo o autômato O(n) (pior caso) com relação ao
tamanho do AFDA O(n2) construção incremental de um
dicionário
Conclusões
Criação de uma árvore é indesejável ou não realizável (memória) – estrutura intermediária
Indicado para atualizar programas de correção gramatical – on-line
Perguntas?