UFMG - ICEx – DCC
Teoria de Linguagens
Optimal Insertion in
deterministic DAWGs
David Menoti
[email protected]
Belo Horizonte
Dezembro 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)
n1

s
n2
L  Q x Q x  é o conjunto de
transições
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?
Download

Optimal Insertion in deterministic DAWGs