Casamento de Padrões
-
Upload
ricardo-terra -
Category
Education
-
view
199 -
download
0
Transcript of Casamento de Padrões
![Page 1: Casamento de Padrões](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/1.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/2.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/3.jpg)
Introdução
Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 3 / 34
![Page 4: Casamento de Padrões](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/4.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/5.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/6.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/7.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/8.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/9.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/10.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/11.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/12.jpg)
Casamento Exato
Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 9 / 34
![Page 13: Casamento de Padrões](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/13.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/14.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/15.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/16.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/17.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/18.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/19.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/20.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/21.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/22.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/23.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/24.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/25.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/26.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/27.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/28.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/29.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/30.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/31.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/32.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/33.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/34.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/35.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/36.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/37.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/38.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/39.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/40.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/41.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/42.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/43.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/44.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/45.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/46.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/47.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/48.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/49.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/50.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/51.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/52.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/53.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/54.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/55.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/56.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/57.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/58.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/59.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/60.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/61.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/62.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/63.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/64.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/65.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/66.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/67.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/68.jpg)
Casamento Aproximado
Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 25 / 34
![Page 69: Casamento de Padrões](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/69.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/70.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/71.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/72.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/73.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/74.jpg)
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 75: Casamento de Padrões](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/75.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/76.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/77.jpg)
Considerações Finais
Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 31 / 34
![Page 78: Casamento de Padrões](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/78.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/79.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/80.jpg)
Obrigado!!!
Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 34 / 34
![Page 81: Casamento de Padrões](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/81.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/82.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/83.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/84.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022031823/55b54289bb61eb353a8b45ea/html5/thumbnails/85.jpg)
Possíveis Questionamentos
Arquivo Invertido usando Trie – Exemplo
Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 34 / 34