310 likes | 382 Views
Explore the Optimal Insertion in Deterministic DAWGs for fast language processing. Learn how to minimize automata states for memory efficiency and online computation speed. Discover the step-by-step algorithm, experiments, and conclusions.
E N D
UFMG - ICEx – DCC Teoria de Linguagens Optimal Insertion in deterministic DAWGs David Menoti menoti@dcc.ufmg.br 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), ?
s Definições • Q é um conjunto de estados • é um conjunto de símbolos (alfabeto) • Uma transição é uma tripla (n1,n2,s) • LQ x Q x é o conjunto de transições n1 n2
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