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

Casamento de Padrões

Embed Size (px)

Citation preview

Page 1: Casamento de Padrões

Casamento de Padrões

Ricardo Terra

rterrabh [at] gmail.com

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

Page 2: Casamento de Padrões

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)

BackgroundAcadê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

Page 3: Casamento de Padrões

Introdução

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

Page 4: Casamento de Padrões

Introdução

Em primeiro lugar, o que é “Casamento de Padrões”?

Em suma, consiste em encontrar ocorrências de um certopadrão em uma sequência de elementos

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

Page 5: Casamento de Padrões

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

Page 6: Casamento de Padrões

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

Page 7: Casamento de Padrões

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

Page 8: Casamento de Padrões

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

Page 9: Casamento de Padrões

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

Page 10: Casamento de Padrões

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

Page 11: Casamento de Padrões

Introdução

Pronto!Ideia: ok

Motivação: ok

Conhecimento: a partir de agora...

Nesta aula: Casamento de Cadeias (String Matching)

Casamento ExatoDefinições

Alfabeto, string, padrão, formalização do problema...

AlgoritmosCategorias

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

Page 12: Casamento de Padrões

Casamento Exato

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

Page 13: Casamento de Padrões

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

Page 14: Casamento de Padrões

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

Page 15: Casamento de Padrões

Casamento Exato

Exemplo mega simplesTexto: aabaabc

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

1 2 3 4 5 6 7

Page 16: Casamento de Padrões

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é-processadosUso 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 = log2n

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

Page 17: Casamento de Padrões

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é-processadosUso 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 = log2n

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

Page 18: Casamento de Padrões

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é-processadosUso 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 = log2n

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

Page 19: Casamento de Padrões

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é-processadosUso 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 = log2n

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

Page 20: Casamento de Padrões

Algoritmo Naive

Algoritmo Naive (padrão e texto não são pré-processados)

Referenciado na literatura também como Força Bruta

Mais simplesTentar 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

Page 21: Casamento de Padrões

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

Page 22: Casamento de Padrões

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

Page 23: Casamento de Padrões

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

Page 24: Casamento de Padrões

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

Page 25: Casamento de Padrões

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

Page 26: Casamento de Padrões

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 deinformação e, por isso, têm melhor desempenho

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

Page 27: Casamento de Padrões

Algoritmos baseados em AF

Algoritmos baseados em Autômatos Finitos (padrão pré-processado)

Autômato é um modelo de computação (máquina) cujopropósito principal é reconhecer linguagens

Um autômato finito M é uma quíntupla (Q,q0,A,Σ,δ) onde

Q é um conjunto finitos de estados

q0 ∈ 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

Page 28: Casamento de Padrões

Algoritmos baseados em AF

Exemplo de um AFD

Quíntupla (Q,q0,A,Σ,δ)

Q = q1,q2,q3q0 = q1

A = q2Σ = 0, 1δ(q1, 0) = q1, δ(q1, 1) = q2δ(q2, 0) = q3, δ(q2, 1) = q2δ(q3, 0) = q2, δ(q3, 1) = q2

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

Page 29: Casamento de Padrões

Algoritmos baseados em AF

Exemplo de um AFD

Quíntupla (Q,q0,A,Σ,δ)

Q = q1,q2,q3q0 = q1

A = q2Σ = 0, 1δ(q1, 0) = q1, δ(q1, 1) = q2δ(q2, 0) = q3, δ(q2, 1) = q2δ(q3, 0) = q2, δ(q3, 1) = q2

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

AFD (um estado ativo)AFND, AFND-λ (n estados ativos)

Page 30: Casamento de Padrões

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

Page 31: Casamento de Padrões

Algoritmos baseados em AF

Exemplo: ( T = abababacaba, P = ababaca)

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

Page 32: Casamento de Padrões

Algoritmos baseados em AF

Exemplo: ( T = abababacaba, P = ababaca)

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

Page 33: Casamento de Padrões

Algoritmos baseados em AF

Exemplo: ( T = abababacaba, P = ababaca)

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

Page 34: Casamento de Padrões

Algoritmos baseados em AF

Exemplo: ( T = abababacaba, P = ababaca)

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

Page 35: Casamento de Padrões

Algoritmos baseados em AF

Exemplo: ( T = abababacaba, P = ababaca)

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

Page 36: Casamento de Padrões

Algoritmos baseados em AF

Exemplo: ( T = abababacaba, P = ababaca)

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

Page 37: Casamento de Padrões

Algoritmos baseados em AF

Exemplo: ( T = abababacaba, P = ababaca)

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

Page 38: Casamento de Padrões

Algoritmos baseados em AF

Exemplo: ( T = abababacaba, P = ababaca)

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

Page 39: Casamento de Padrões

Algoritmos baseados em AF

Exemplo: ( T = abababacaba, P = ababaca)

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

Page 40: Casamento de Padrões

Algoritmos baseados em AF

Exemplo: ( T = abababacaba, P = ababaca)

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

Page 41: Casamento de Padrões

Algoritmos baseados em AF

Exemplo: ( T = abababacaba, P = ababaca)

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

Page 42: Casamento de Padrões

Algoritmos baseados em AF

Exemplo: ( T = abababacaba, P = ababaca)

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

Page 43: Casamento de Padrões

Algoritmos baseados em AF

Exemplo: ( T = abababacaba, P = ababaca)

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

Page 44: Casamento de Padrões

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)]

Ideia1 Construção de uma tabela para armazenar máscara de

bits para cada caractere de P [O(m2)]

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 = 1, uma ocorrência do padrão

Caso contrário, R’ = 0m

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

Page 45: Casamento de Padrões

Algoritmo Shift-And

Exemplo: ( T = "os testes ", P = teste)

Texto (R >>1) | 10m−1 R’o 1 0 0 0 0 0 0 0 0 0s

1 0 0 0 0 0 0 0 0 01 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 01 0 0 0 0 0 0 0 0 0

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

1 2 3 4 5M[t] 1 0 0 1 0M[e] 0 1 0 0 1M[s] 0 0 1 0 0

Page 46: Casamento de Padrões

Algoritmo Shift-And

Exemplo: ( T = "os testes ", P = teste)

Texto (R >>1) | 10m−1 R’o 1 0 0 0 0 0 0 0 0 0s 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 01 0 0 0 0 0 0 0 0 0

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

1 2 3 4 5M[t] 1 0 0 1 0M[e] 0 1 0 0 1M[s] 0 0 1 0 0

Page 47: Casamento de Padrões

Algoritmo Shift-And

Exemplo: ( T = "os testes ", P = teste)

Texto (R >>1) | 10m−1 R’o 1 0 0 0 0 0 0 0 0 0s 1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0t

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 01 0 0 0 0 0 0 0 0 0

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

1 2 3 4 5M[t] 1 0 0 1 0M[e] 0 1 0 0 1M[s] 0 0 1 0 0

Page 48: Casamento de Padrões

Algoritmo Shift-And

Exemplo: ( T = "os testes ", P = teste)

Texto (R >>1) | 10m−1 R’o 1 0 0 0 0 0 0 0 0 0s 1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0t 1 0 0 0 0 1 0 0 0 0e

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 01 0 0 0 0 0 0 0 0 0

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

1 2 3 4 5M[t] 1 0 0 1 0M[e] 0 1 0 0 1M[s] 0 0 1 0 0

Page 49: Casamento de Padrões

Algoritmo Shift-And

Exemplo: ( T = "os testes ", P = teste)

Texto (R >>1) | 10m−1 R’o 1 0 0 0 0 0 0 0 0 0s 1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0t 1 0 0 0 0 1 0 0 0 0e 1 1 0 0 0 0 1 0 0 0s

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 01 0 0 0 0 0 0 0 0 0

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

1 2 3 4 5M[t] 1 0 0 1 0M[e] 0 1 0 0 1M[s] 0 0 1 0 0

Page 50: Casamento de Padrões

Algoritmo Shift-And

Exemplo: ( T = "os testes ", P = teste)

Texto (R >>1) | 10m−1 R’o 1 0 0 0 0 0 0 0 0 0s 1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0t 1 0 0 0 0 1 0 0 0 0e 1 1 0 0 0 0 1 0 0 0s 1 0 1 0 0 0 0 1 0 0t

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 01 0 0 0 0 0 0 0 0 0

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

1 2 3 4 5M[t] 1 0 0 1 0M[e] 0 1 0 0 1M[s] 0 0 1 0 0

Page 51: Casamento de Padrões

Algoritmo Shift-And

Exemplo: ( T = "os testes ", P = teste)

Texto (R >>1) | 10m−1 R’o 1 0 0 0 0 0 0 0 0 0s 1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0t 1 0 0 0 0 1 0 0 0 0e 1 1 0 0 0 0 1 0 0 0s 1 0 1 0 0 0 0 1 0 0t 1 0 0 1 0 1 0 0 1 0e

1 1 0 0 1 0 1 0 0 1

s

1 0 1 0 0 0 0 1 0 01 0 0 0 0 0 0 0 0 0

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

1 2 3 4 5M[t] 1 0 0 1 0M[e] 0 1 0 0 1M[s] 0 0 1 0 0

Page 52: Casamento de Padrões

Algoritmo Shift-And

Exemplo: ( T = "os testes ", P = teste)

Texto (R >>1) | 10m−1 R’o 1 0 0 0 0 0 0 0 0 0s 1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0t 1 0 0 0 0 1 0 0 0 0e 1 1 0 0 0 0 1 0 0 0s 1 0 1 0 0 0 0 1 0 0t 1 0 0 1 0 1 0 0 1 0e 1 1 0 0 1 0 1 0 0 1s

1 0 1 0 0 0 0 1 0 01 0 0 0 0 0 0 0 0 0

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

1 2 3 4 5M[t] 1 0 0 1 0M[e] 0 1 0 0 1M[s] 0 0 1 0 0

Page 53: Casamento de Padrões

Algoritmo Shift-And

Exemplo: ( T = "os testes ", P = teste)

Texto (R >>1) | 10m−1 R’o 1 0 0 0 0 0 0 0 0 0s 1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0t 1 0 0 0 0 1 0 0 0 0e 1 1 0 0 0 0 1 0 0 0s 1 0 1 0 0 0 0 1 0 0t 1 0 0 1 0 1 0 0 1 0e 1 1 0 0 1 0 1 0 0 1s 1 0 1 0 0 0 0 1 0 0

1 0 0 0 0 0 0 0 0 0

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

1 2 3 4 5M[t] 1 0 0 1 0M[e] 0 1 0 0 1M[s] 0 0 1 0 0

Page 54: Casamento de Padrões

Algoritmo Shift-And

Exemplo: ( T = "os testes ", P = teste)

Texto (R >>1) | 10m−1 R’o 1 0 0 0 0 0 0 0 0 0s 1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0t 1 0 0 0 0 1 0 0 0 0e 1 1 0 0 0 0 1 0 0 0s 1 0 1 0 0 0 0 1 0 0t 1 0 0 1 0 1 0 0 1 0e 1 1 0 0 1 0 1 0 0 1s 1 0 1 0 0 0 0 1 0 0

1 0 0 0 0 0 0 0 0 0

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

1 2 3 4 5M[t] 1 0 0 1 0M[e] 0 1 0 0 1M[s] 0 0 1 0 0

Page 55: Casamento de Padrões

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

Page 56: Casamento de Padrões

Algoritmo Knuth-Morris-Pratt

Exemplo: ( P = ababaca)

s’ = s + (q - π[q])s’ = s + (5 - π[5])s’ = s + (5 - 3)

s’ = s + 2

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

Page 57: Casamento de Padrões

Algoritmo Knuth-Morris-Pratt

Exemplo: ( P = ababaca)

s’ = s + (q - π[q])s’ = s + (5 - π[5])s’ = s + (5 - 3)

s’ = s + 2

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

Page 58: Casamento de Padrões

Algoritmo Knuth-Morris-Pratt

Exemplo: ( P = ababaca)

s’ = s + (q - π[q])s’ = s + (5 - π[5])s’ = s + (5 - 3)

s’ = s + 2

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

Page 59: Casamento de Padrões

Algoritmo Knuth-Morris-Pratt

Exemplo: ( P = ababaca)

s’ = s + (q - π[q])s’ = s + (5 - π[5])s’ = s + (5 - 3)

s’ = s + 2

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

Page 60: Casamento de Padrões

Algoritmo Knuth-Morris-Pratt

Exemplo: ( P = ababaca)

s’ = s + (q - π[q])s’ = s + (5 - π[5])s’ = s + (5 - 3)

s’ = s + 2

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

Page 61: Casamento de Padrões

Algoritmo Knuth-Morris-Pratt

Exemplo: ( P = ababaca)

s’ = s + (q - π[q])s’ = s + (5 - π[5])s’ = s + (5 - 3)

s’ = s + 2

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

Page 62: Casamento de Padrões

Algoritmo Knuth-Morris-Pratt

Exemplo: ( P = ababaca)

s’ = s + (q - π[q])s’ = s + (5 - π[5])s’ = s + (5 - 3)

s’ = s + 2

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

Page 63: Casamento de Padrões

Algoritmo Knuth-Morris-Pratt

Exemplo: ( P = ababaca)

s’ = s + (q - π[q])s’ = s + (5 - π[5])s’ = s + (5 - 3)

s’ = s + 2

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

Page 64: Casamento de Padrões

Algoritmo Knuth-Morris-Pratt

Exemplo: ( P = ababaca)

s’ = s + (q - π[q])s’ = s + (5 - π[5])s’ = s + (5 - 3)

s’ = s + 2

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

Page 65: Casamento de Padrões

Algoritmo Knuth-Morris-Pratt

Exemplo: ( P = ababaca)

s’ = s + (q - π[q])s’ = s + (5 - π[5])s’ = s + (5 - 3)

s’ = s + 2

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

Page 66: Casamento de Padrões

Algoritmo Knuth-Morris-Pratt

Exemplo: ( P = ababaca)

s’ = s + (q - π[q])s’ = s + (5 - π[5])s’ = s + (5 - 3)

s’ = s + 2

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

Page 67: Casamento de Padrões

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 dotexto T (ao invés de ler caractere-a-caractere)

Para cada posição desta janela, o algoritmo realizacomparaçõ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

Page 68: Casamento de Padrões

Casamento Aproximado

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

Page 69: Casamento de Padrões

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

Page 70: Casamento de Padrões

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

Page 71: Casamento de Padrões

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

Page 72: Casamento de Padrões

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

Page 73: Casamento de Padrões

Casamento Aproximado

Definição

Existem variações com relação ao casamento exato

A mais importante é aquela que permite “alterações” noque 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 decaracteres) 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

Page 74: Casamento de Padrões

Casamento Aproximado

Definição

Existem variações com relação ao casamento exato

A mais importante é aquela que permite “alterações” noque 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 decaracteres) 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

Google

Page 75: Casamento de Padrões

Casamento Aproximado

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 onde

ed(P,P’)=k

0 < k < mk = 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

Page 76: Casamento de Padrões

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

Page 77: Casamento de Padrões

Considerações Finais

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

Page 78: Casamento de Padrões

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 AulaLista de exercícios sobre casamento exatos

Enunciado do TP

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

Page 79: Casamento de Padrões

Referências

Thomas Cormen et al. Introduction To Algorithms. 3 ed., 2009.

Nívio Ziviani. Projeto de Algoritmos: com Implementaçõesem Pascal e C. 2 ed., 2004.

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

Page 80: Casamento de Padrões

Obrigado!!!

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

Page 81: Casamento de Padrões

Possíveis Questionamentos

Algoritmo BM – Heurística Ocorrência

Alinha a posição no texto que causou a colisão com oprimeiro 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

Page 82: Casamento de Padrões

Possíveis Questionamentos

Algoritmo BM – Heurística Casamento

Ao mover o padrão para a direita, faça-o casar com opedaço do texto anteriormente casado

Exemplo: ( T = aabcaccacbac, P = cacbac )

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

Page 83: Casamento de Padrões

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

Page 84: Casamento de Padrões

Possíveis Questionamentos

Arquivo Invertido – Pesquisa em três passos1 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 daspalavras encontradas no vocabulário são recuperadas

3 Manipulação das ocorrências: as listas de ocorrências sãoprocessadas para tratar frases, proximidade, ou operaçõesbooleanas

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

Page 85: Casamento de Padrões

Possíveis Questionamentos

Arquivo Invertido usando Trie – Exemplo

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