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?