Casamento de Padrões

Documentos relacionados
Análise e Síntese de Algoritmos. Emparelhamento de Cadeias de Caracteres CLRS, Cap. 32

Reconhecimento de Padrões. Prof. Flávio Humberto Cabral Nunes

Estrutura de dados 1. Processamento de Cadeias de Caracteres

Processamento de Cadeias de Caracteres

Strings (Casamento de padrões) Estrutura de Dados II Jairo Francisco de Souza

Matemática computacional: métodos numéricos, programação linear, otimização

Algoritmos em Strings

Busca em Memória Primária Estrutura de Dados II

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

Processamento de Cadeias de Caracteres

LFA Aula 05. AFND: com e sem movimentos 05/12/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

Casamento de Cadeias. Introdução. Introdução. Estrutura de Dados. Cadeia de caracteres: sequência de elementos denominados caracteres.

Aula 7: Autômatos com Pilha

Autómatos Finitos Determinísticos (AFD)

Linguagens Formais e Autômatos 02/2016. LFA Aula 04 16/11/2016. Celso Olivete Júnior.

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

INE5317 Linguagens Formais e Compiladores AULA 6: Autômatos Finitos Com S aída

a n Sistemas de Estados Finitos AF Determinísticos

Lista de exercícios 1

Linguagens Livres de Contexto

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso:

SCC 205 Teoria da Computação e Linguagens Formais

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07

Autômatos com Pilha. Douglas O. Cardoso docardoso.github.io

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

LFA Aula 08. Minimização de AFD Autômatos Finitos com saídas 25/01/2017. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 4. Autômatos Finitos

Aula 9: Máquinas de Turing

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

SCC Capítulo 3 Linguagens Sensíveis ao Contexto e Autômatos Limitados Linearmente

Processamento de Cadeias de Caracteres

Como construir um compilador utilizando ferramentas Java

Teoria da Computação. Expressões Regulares e Autômatos Finitos. Thiago Alves

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Autômatos finitos não-determinísticos

Algoritmos de Ordenação: HeapSort

LFA Aula 07. Equivalência entre AFD e AFND. Equivalência entre ER s e AF s Equivalência entre GR s e AF s. Linguagens Formais e Autômatos

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam

AULA 20. Algoritmos p.725/759

Teoria da Computação. Computabilidade e complexidade computacional

Algoritmos e Estrutura de Dados

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

Aula 15 Árvores Digitais / Trie

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Sistemas de Estados Finitos AF Determinísticos. (H&U, 1979) e (H;M;U, 2001)

Lista de Exercícios CT-200 Primeiro Bimestre Carlos Henrique Quartucci Forster Estagiário: Wesley Telles. Revisão de Teoria de Conjuntos

Lista de Figuras Figura 1 1: Figura 1 2: Figura 1 3: Figura 1 4: Figura 1 5: Figura 1 6: Figura 1 7: Figura 1 8: Figura 1 9: Figura 1 10:

Algoritmos e Estrutura de Dados. Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira

Gramáticas Livres de Contexto Parte 1

Linguagens Formais e Problemas de Decisão

Compiladores - Análise Ascendente

Compressão de Textos

Fundamentos da Teoria da Computação

Linguagens Formais e Autômatos

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática

Conjuntos disjuntos dinâmicos

BCC242. Auômato Finito Determinístico

Linguagens Regulares. Prof. Daniel Oliveira

Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel Introdução.

Compressão Sem Perdas: Codificações Huffman e Aritmética. Adelar da Silva Queiróz Marcelo Teixeira Thiago da Silva Sodré

Teoria da Computação. 2006/2007 Trabalho prático nº 1. Trabalho realizado por: Pedro Oliveira ( ) Rui Costa ( ) Turma: TP1

Teoria da Computação Aula 02 Introdução

ORDENAÇÃO EXTERNA DE ARQUIVOS: GERAÇÃO DE PARTIÇÕES CLASSIFICADAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Aula 10: Tratabilidade

Máquinas Universais. Máquina de Turing. Celso Olivete Júnior.

Teoria da Computação. Capítulo 1. Máquina de Turing. Prof. Wanderley de Souza Alencar, MSc.

Correção Ortográfica. Processamento Estatístico da Linguagem Natural. Correção de Erros. Distância Mínima de Edição. Distância Mínima de Edição

03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II

Transcrição:

Casamento de Padrões Ricardo Terra rterrabh [at] gmail.com Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 1 / 34

CV Nome: Ricardo Terra Email: rterrabh [at] gmail.com www: ricardoterra.com.br Twitter: rterrabh Lattes: lattes.cnpq.br/ 0162081093970868 Ph.D. (UFMG/UWaterloo), Post-Ph.D. (INRIA/Université Lille 1) Background Acadêmico : UFLA (desde 2014), UFSJ (1 ano ), FUMEC (3 anos ), UNIPAC (1 ano ), FAMINAS (3 anos ) Profissional : DBA Eng. (1 ano ), Synos (2 anos ), Stefanini (1 ano ) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 2 / 34

Introdução Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 3 / 34

Introdução Em primeiro lugar, o que é Casamento de Padrões? Em suma, consiste em encontrar ocorrências de um certo padrão em uma sequência de elementos Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 4 / 34

Introdução Em segundo lugar, por que estudar isto? Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 5 / 34

Introdução Em segundo lugar, por que estudar isto? Se isso não é importante, o Google também não é! Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 5 / 34

Introdução Ainda não convencido? Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 6 / 34

Introdução Ainda não convencido? O que seria do Bing sem o Google? (veja url) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 6 / 34

Introdução Nada ainda? Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 7 / 34

Introdução Nada ainda? Processamento de texto, sequenciamento de DNA, representação de imagens... Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 7 / 34

Introdução Pronto! Ideia: ok Motivação: ok Conhecimento: a partir de agora... Nesta aula: Casamento de Cadeias (String Matching) Casamento Exato Definições Alfabeto, string, padrão, formalização do problema... Algoritmos Categorias Naive, AF, Shift-And e KMP Casamento Aproximado (uma visão geral) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 8 / 34

Casamento Exato Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 9 / 34

Casamento Exato Definições Texto: arranjo T[1..n] Padrão: arranjo P[1..m], m n Seus elementos gerados a partir de um Alfabeto finito Σ e.g., Σ = {0,1} ou Σ = {a,b,...,z} T e P são chamados de strings Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 10 / 34

Casamento Exato Definições Texto: arranjo T[1..n] Padrão: arranjo P[1..m], m n Seus elementos gerados a partir de um Alfabeto finito Σ e.g., Σ = {0,1} ou Σ = {a,b,...,z} T e P são chamados de strings Formalização do Problema Dois strings Texto T de comprimento T = n Padrão P de comprimento P = m m n Objetivo: saber as ocorrências de P em T Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 10 / 34

Casamento Exato Exemplo mega simples Texto: aabaabc 1 2 3 4 5 6 7 Padrão: ab Alfabeto: Σ = {a,b, c} Nosso objetivo: 2 e 5 Aplicações mega simples Comando / do Vi i.e., função básica de Localizar em editores de texto Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 11 / 34

Casamento Exato Categorias de Algoritmos Padrão e texto não são pré-processados O(m n) [espaço O(1)] Algoritmo Naive Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 12 / 34

Casamento Exato Categorias de Algoritmos Padrão e texto não são pré-processados O(m n) [espaço O(1)] Algoritmo Naive Padrão pré-processado O(n) [espaço O(m Σ )] Algoritmo AF, Shift-And e KMP Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 12 / 34

Casamento Exato Categorias de Algoritmos Padrão e texto não são pré-processados O(m n) [espaço O(1)] Algoritmo Naive Padrão pré-processado O(n) [espaço O(m Σ )] Algoritmo AF, Shift-And e KMP Padrão e texto são pré-processados Uso de índices (e.g., arquivos invertidos, árvores trie e Patricia) Bases semi-estáticas O(lg n) 1 [espaço O(n)] 1 lg n = log 2 n Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 12 / 34

Casamento Exato Categorias de Algoritmos Padrão e texto não são pré-processados O(m n) [espaço O(1)] Algoritmo Naive Padrão pré-processado O(n) [espaço O(m Σ )] Algoritmo AF, Shift-And e KMP Padrão e texto são pré-processados Uso de índices (e.g., arquivos invertidos, árvores trie e Patricia) Bases semi-estáticas O(lg n) 1 [espaço O(n)] 1 lg n = log 2 n Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 12 / 34

Algoritmo Naive Algoritmo Naive (padrão e texto não são pré-processados) Referenciado na literatura também como Força Bruta Mais simples Tentar casar o padrão com todas as subcadeias do texto P[1..m] = T[s+1..s+m] para n-m+1 possíveis valores de s Pior desempenho O(nm) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 13 / 34

Algoritmo Naive Pseudocódigo Exemplo: ( T = acaabc, P = aab, n-m+1=4 ) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 14 / 34

Algoritmo Naive Pseudocódigo Exemplo: ( T = acaabc, P = aab, n-m+1=4 ) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 14 / 34

Algoritmo Naive Pseudocódigo Exemplo: ( T = acaabc, P = aab, n-m+1=4 ) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 14 / 34

Algoritmo Naive Pseudocódigo Exemplo: ( T = acaabc, P = aab, n-m+1=4 ) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 14 / 34

Algoritmo Naive Pseudocódigo Exemplo: ( T = acaabc, P = aab, n-m+1=4 ) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 14 / 34

Algoritmo Naive Por que é ineficiente? (para não dizer ruim) Não aprende! Isto é, informação obtida do texto para um valor de s é ignorada para os outros valores de s e.g., se P = aaab e s=0 é válida Implica s=1 ou 2 ou 3 não são válidos pois T[4]=b Mas, ele testa mesmo assim! Os próximos algoritmos tornam efetivo o uso desse tipo de informação e, por isso, têm melhor desempenho Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 15 / 34

Algoritmos baseados em AF Algoritmos baseados em Autômatos Finitos (padrão pré-processado) Autômato é um modelo de computação (máquina) cujo propósito principal é reconhecer linguagens Um autômato finito M é uma quíntupla (Q,q 0,A,Σ,δ) onde Q é um conjunto finitos de estados q 0 Q é o estado inicial A Q é o conjunto de estados finais Σ é um alfabeto de entrada finito δ é uma função de transição Q x Σ Q Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 16 / 34

Algoritmos baseados em AF Exemplo de um AFD Quíntupla (Q,q 0,A,Σ,δ) Q = {q 1, q 2, q 3 } q 0 = q 1 A = {q 2 } Σ = {0, 1} δ(q 1, 0) = q 1, δ(q 1, 1) = q 2 δ(q 2, 0) = q 3, δ(q 2, 1) = q 2 δ(q 3, 0) = q 2, δ(q 3, 1) = q 2 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 17 / 34

Algoritmos baseados em AF Exemplo de um AFD AFD (um estado ativo) AFND, AFND-λ (n estados ativos) Quíntupla (Q,q 0,A,Σ,δ) Q = {q 1, q 2, q 3 } q 0 = q 1 A = {q 2 } Σ = {0, 1} δ(q 1, 0) = q 1, δ(q 1, 1) = q 2 δ(q 2, 0) = q 3, δ(q 2, 1) = q 2 δ(q 3, 0) = q 2, δ(q 3, 1) = q 2 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 17 / 34

Algoritmos baseados em AF Ideia (ou sacada) 1 Construir um AF para o padrão P [O(m Σ )] 2 O AF consome caractere a caractere do texto T [Θ(n)] Se estado atual = estado final, então ocorrência do padrão Pseudocódigo Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 18 / 34

Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34

Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34

Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34

Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34

Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34

Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34

Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34

Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34

Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34

Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34

Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34

Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34

Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34

Algoritmo Shift-And Algoritmo Shift-And (padrão pré-processado) Usa o conceito de paralelismo de bit Bom desempenho devido às operações sobre bits [O(1)] Ideia 1 Construção de uma tabela para armazenar máscara de bits para cada caractere de P [O(m 2 )] e.g., se P=abba, então M[a]=1001 Pois, a aparece nas posições 1 e 4 2 Cada caractere lido (T) atualiza a máscara de bits R [Θ(n)] Se o caractere casar com o padrão, um shift é realizado Se a R m Caso contrário, R = 0 m = 1, uma ocorrência do padrão Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 20 / 34

Algoritmo Shift-And Exemplo: ( T = "os testes ", P = teste) Texto (R >>1) 10 m 1 R o 1 0 0 0 0 0 0 0 0 0 s t e s t e s 1 2 3 4 5 M[t] 1 0 0 1 0 M[e] 0 1 0 0 1 M[s] 0 0 1 0 0 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34

Algoritmo Shift-And Exemplo: ( T = "os testes ", P = teste) Texto (R >>1) 10 m 1 R o 1 0 0 0 0 0 0 0 0 0 s 1 0 0 0 0 0 0 0 0 0 t e s t e s 1 2 3 4 5 M[t] 1 0 0 1 0 M[e] 0 1 0 0 1 M[s] 0 0 1 0 0 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34

Algoritmo Shift-And Exemplo: ( T = "os testes ", P = teste) Texto (R >>1) 10 m 1 R o 1 0 0 0 0 0 0 0 0 0 s 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 t e s t e s 1 2 3 4 5 M[t] 1 0 0 1 0 M[e] 0 1 0 0 1 M[s] 0 0 1 0 0 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34

Algoritmo Shift-And Exemplo: ( T = "os testes ", P = teste) Texto (R >>1) 10 m 1 R o 1 0 0 0 0 0 0 0 0 0 s 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 t 1 0 0 0 0 1 0 0 0 0 e s t e s 1 2 3 4 5 M[t] 1 0 0 1 0 M[e] 0 1 0 0 1 M[s] 0 0 1 0 0 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34

Algoritmo Shift-And Exemplo: ( T = "os testes ", P = teste) Texto (R >>1) 10 m 1 R o 1 0 0 0 0 0 0 0 0 0 s 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 t 1 0 0 0 0 1 0 0 0 0 e 1 1 0 0 0 0 1 0 0 0 s t e s 1 2 3 4 5 M[t] 1 0 0 1 0 M[e] 0 1 0 0 1 M[s] 0 0 1 0 0 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34

Algoritmo Shift-And Exemplo: ( T = "os testes ", P = teste) Texto (R >>1) 10 m 1 R o 1 0 0 0 0 0 0 0 0 0 s 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 t 1 0 0 0 0 1 0 0 0 0 e 1 1 0 0 0 0 1 0 0 0 s 1 0 1 0 0 0 0 1 0 0 t e s 1 2 3 4 5 M[t] 1 0 0 1 0 M[e] 0 1 0 0 1 M[s] 0 0 1 0 0 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34

Algoritmo Shift-And Exemplo: ( T = "os testes ", P = teste) Texto (R >>1) 10 m 1 R o 1 0 0 0 0 0 0 0 0 0 s 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 t 1 0 0 0 0 1 0 0 0 0 e 1 1 0 0 0 0 1 0 0 0 s 1 0 1 0 0 0 0 1 0 0 t 1 0 0 1 0 1 0 0 1 0 e s 1 2 3 4 5 M[t] 1 0 0 1 0 M[e] 0 1 0 0 1 M[s] 0 0 1 0 0 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34

Algoritmo Shift-And Exemplo: ( T = "os testes ", P = teste) Texto (R >>1) 10 m 1 R o 1 0 0 0 0 0 0 0 0 0 s 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 t 1 0 0 0 0 1 0 0 0 0 e 1 1 0 0 0 0 1 0 0 0 s 1 0 1 0 0 0 0 1 0 0 t 1 0 0 1 0 1 0 0 1 0 e 1 1 0 0 1 0 1 0 0 1 s 1 2 3 4 5 M[t] 1 0 0 1 0 M[e] 0 1 0 0 1 M[s] 0 0 1 0 0 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34

Algoritmo Shift-And Exemplo: ( T = "os testes ", P = teste) Texto (R >>1) 10 m 1 R o 1 0 0 0 0 0 0 0 0 0 s 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 t 1 0 0 0 0 1 0 0 0 0 e 1 1 0 0 0 0 1 0 0 0 s 1 0 1 0 0 0 0 1 0 0 t 1 0 0 1 0 1 0 0 1 0 e 1 1 0 0 1 0 1 0 0 1 s 1 0 1 0 0 0 0 1 0 0 1 2 3 4 5 M[t] 1 0 0 1 0 M[e] 0 1 0 0 1 M[s] 0 0 1 0 0 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34

Algoritmo Shift-And Exemplo: ( T = "os testes ", P = teste) Texto (R >>1) 10 m 1 R o 1 0 0 0 0 0 0 0 0 0 s 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 t 1 0 0 0 0 1 0 0 0 0 e 1 1 0 0 0 0 1 0 0 0 s 1 0 1 0 0 0 0 1 0 0 t 1 0 0 1 0 1 0 0 1 0 e 1 1 0 0 1 0 1 0 0 1 s 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 2 3 4 5 M[t] 1 0 0 1 0 M[e] 0 1 0 0 1 M[s] 0 0 1 0 0 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34

Algoritmo Knuth-Morris-Pratt Algoritmo Knuth-Morris-Pratt (padrão pré-processado) Algoritmo utiliza informação já obtida para avançar em s Ao contrário do Naive que sempre faz s = s + 1 [O(n m)], KMP calcula o s de forma a evitar testes desnecessários [Θ(n)] E, ainda, evita a computação da função transição δ Por meio de uma arranjo auxiliar π[1..m] pré-computado em Θ(m) Em algoritmos por AF, isso é pré-computado em O(m Σ ) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 22 / 34

Algoritmo Knuth-Morris-Pratt Exemplo: ( P = ababaca) Pseudocódigo Compute-Prefix-Function(P) i 1 2 3 4 5 6 7 P[i] a b a b a c a π[i] Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 23 / 34

Algoritmo Knuth-Morris-Pratt Exemplo: ( P = ababaca) Pseudocódigo Compute-Prefix-Function(P) i 1 2 3 4 5 6 7 P[i] a b a b a c a π[i] 0 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 23 / 34

Algoritmo Knuth-Morris-Pratt Exemplo: ( P = ababaca) Pseudocódigo Compute-Prefix-Function(P) i 1 2 3 4 5 6 7 P[i] a b a b a c a π[i] 0 0 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 23 / 34

Algoritmo Knuth-Morris-Pratt Exemplo: ( P = ababaca) Pseudocódigo Compute-Prefix-Function(P) i 1 2 3 4 5 6 7 P[i] a b a b a c a π[i] 0 0 1 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 23 / 34

Algoritmo Knuth-Morris-Pratt Exemplo: ( P = ababaca) Pseudocódigo Compute-Prefix-Function(P) i 1 2 3 4 5 6 7 P[i] a b a b a c a π[i] 0 0 1 2 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 23 / 34

Algoritmo Knuth-Morris-Pratt Exemplo: ( P = ababaca) Pseudocódigo Compute-Prefix-Function(P) i 1 2 3 4 5 6 7 P[i] a b a b a c a π[i] 0 0 1 2 3 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 23 / 34

Algoritmo Knuth-Morris-Pratt Exemplo: ( P = ababaca) Pseudocódigo Compute-Prefix-Function(P) i 1 2 3 4 5 6 7 P[i] a b a b a c a π[i] 0 0 1 2 3 0 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 23 / 34

Algoritmo Knuth-Morris-Pratt Exemplo: ( P = ababaca) Pseudocódigo Compute-Prefix-Function(P) i 1 2 3 4 5 6 7 P[i] a b a b a c a π[i] 0 0 1 2 3 0 1 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 23 / 34

Algoritmo Knuth-Morris-Pratt Exemplo: ( P = ababaca) Pseudocódigo Compute-Prefix-Function(P) i 1 2 3 4 5 6 7 P[i] a b a b a c a π[i] 0 0 1 2 3 0 1 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 23 / 34

Algoritmo Knuth-Morris-Pratt Exemplo: ( P = ababaca) Pseudocódigo s = s + (q - π[q]) s = s + (5 - π[5]) s = s + (5-3) s = s + 2 Compute-Prefix-Function(P) i 1 2 3 4 5 6 7 P[i] a b a b a c a π[i] 0 0 1 2 3 0 1 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 23 / 34

Algoritmo Knuth-Morris-Pratt Exemplo: ( P = ababaca) Pseudocódigo s = s + (q - π[q]) s = s + (5 - π[5]) s = s + (5-3) s = s + 2 Compute-Prefix-Function(P) i 1 2 3 4 5 6 7 P[i] a b a b a c a π[i] 0 0 1 2 3 0 1 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 23 / 34

Algoritmos baseados em Janelas Deslizante Algoritmos Boyer-Moore (BM), BMH e BMHS (padrão pré-processado) Enfoque diferente Usam uma janela de tamanho m que desliza ao longo do texto T (ao invés de ler caractere-a-caractere) Para cada posição desta janela, o algoritmo realiza comparações no sentido da direita para a esquerda Se não ocorrer desigualdade, uma ocorrência do padrão Senão, o algoritmo calcula o deslocamento BM propõe duas heurísticas: ocorrência e casamento O que difere entre o BM, BMH e BMHS Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 24 / 34

Casamento Aproximado Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 25 / 34

Casamento Aproximado Nem sempre procuramos de forma exata... Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 26 / 34

Casamento Aproximado Nem sempre procuramos de forma exata... Observe que o Google já corrigiu! Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 26 / 34

Casamento Aproximado E, às vezes, o Google apenas recomenda... Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 27 / 34

Casamento Aproximado E, às vezes, o Google apenas recomenda... Por que será? Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 27 / 34

Casamento Aproximado Definição Existem variações com relação ao casamento exato A mais importante é aquela que permite alterações no que você procura (i.e., no padrão P) Por exemplo, ao procurar este, talvez pesquisar também: esse, essa, esta, isso, nessa... Distância de edição É o número de operações (inserção, substituição ou retirada de caracteres) para transformar um string x em um string y ed( este, esse )=1 ed( este, isso )=3 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 28 / 34

Casamento Aproximado Definição Existem variações com relação ao casamento exato A mais importante é aquela que permite alterações no que você procura (i.e., no padrão P) Por exemplo, ao procurar este, talvez pesquisar também: esse, essa, esta, isso, nessa... Distância de edição Google É o número de operações (inserção, substituição ou retirada de caracteres) para transformar um string x em um string y ed( este, esse )=1 ed( este, isso )=3 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 28 / 34

Casamento Aproximado Formalização do Problema Dois strings m n Texto T de comprimento T = n Padrão P de comprimento P = m Objetivo: saber as ocorrências de P em T onde ed(p,p )=k 0 < k < m k = 0 casamento exato k = m aí já pode mudar tudo (sem sentido algum) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 29 / 34

Casamento Aproximado Algoritmos Não são triviais Basicamente modificações em algoritmos conhecidos Shift-And Algoritmos baseados em AF Não serão abordados nessa disciplina Provavelmente abordados em TPs Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 30 / 34

Considerações Finais Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 31 / 34

Considerações Finais Para concluir, viu-se nesta aula: Casamento de Cadeias Problema, motivação, notação e terminologia Casamento Exato (foco) Naive, AF, Shift-And e KMP Casamento Aproximado (uma visão geral) Próxima Aula Lista de exercícios sobre casamento exatos Enunciado do TP Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 32 / 34

Referências Thomas Cormen et al. Introduction To Algorithms. 3 ed., 2009. Nívio Ziviani. Projeto de Algoritmos: com Implementações em Pascal e C. 2 ed., 2004. Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 33 / 34

Obrigado!!! Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 34 / 34

Possíveis Questionamentos Algoritmo BM Heurística Ocorrência Alinha a posição no texto que causou a colisão com o primeiro caractere no padrão que casa com ele Exemplo: ( T = aabcaccacbac, P = cacbac ) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 34 / 34

Possíveis Questionamentos Algoritmo BM Heurística Casamento Ao mover o padrão para a direita, faça-o casar com o pedaço do texto anteriormente casado Exemplo: ( T = aabcaccacbac, P = cacbac ) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 34 / 34

Possíveis Questionamentos Arquivo Invertido (padrão e texto são pré-processados) Contém vocabulário e ocorrências Lei de Heaps (V = Kn β = O(n β )) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 34 / 34

Possíveis Questionamentos Arquivo Invertido Pesquisa em três passos 1 Pesquisa no vocabulário: palavras e padrões da consulta são isoladas e pesquisadas no vocabulário 2 Recuperação das ocorrências: as listas de ocorrências das palavras encontradas no vocabulário são recuperadas 3 Manipulação das ocorrências: as listas de ocorrências são processadas para tratar frases, proximidade, ou operações booleanas Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 34 / 34

Possíveis Questionamentos Arquivo Invertido usando Trie Exemplo Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 34 / 34