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

Documentos relacionados
AULA 21. Algoritmos p.760/792

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

Algoritmos em Strings

Casamento de Padrões

Análise e Síntese de Algoritmos. Problemas NP-Completos CLRS, Cap. 34

Análise e Síntese de Algoritmos

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

Um Estudo Teórico e Experimental em Algoritmos Clássicos de Busca em Texto

AULA 20. Algoritmos p.725/759

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Alfabeto, Cadeias, Operações e Linguagens

Lista de exercícios 1

Universidade Federal de Mato Grosso do Sul Estruturas de Dados e Programação. Processamento de Cadeias

Análise e Síntese de Algoritmos. Algoritmos em Grafos CLRS, Cap. 22

Linguagens Formais e Problemas de Decisão

Propriedades de Fecho de Linguagens Regulares.

Histórico e motivação

Análise e Síntese de Algoritmos. Programação Dinâmica CLRS, Cap. 15

Processamento de Cadeias de Caracteres

Análise e Síntese de Algoritmos

Linguagens Regulares. Prof. Daniel Oliveira

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

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:

Análise e Síntese de Algoritmos

INCLUSÃO DO ALGORITMO DE TRANSFORMAÇÃO DE UM AUTÔMATO FINITO EM EXPRESSÃO REGULAR NO AMBIENTE EDITOR DE AUTÔMATOS FINITOS

Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais

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

Análise e Síntese de Algoritmos

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.

Análise e Síntese de Algoritmos.

Análise e Síntese de Algoritmos. Fluxos Máximos em Grafos CLRS, Cap. 26

WEBERT TOMAZ ALGORITMOS CLÁSSICOS DE BUSCA EM TEXTO E SUA APLICAÇÃO AO ENSINO A DISTÂNCIA: ESTUDO E AVALIAÇÃO

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

Efficient 1-D and 2-D Parallel Pattern Matching with Scaling

Algoritmo de Minimização de AFD

Análise e Síntese de Algoritmos

MAC5722 Complexidade Computacional

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

Algoritmos gulosos (greedy)

Linguagens Livres de Contexto

Estados Equivalentes. Exemplo R: Sim, b e f. Note que se estamos em b ou f então:

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

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

LINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos

Como construir um compilador utilizando ferramentas Java

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Algoritmos Combinatórios: Introdução

Análise e Síntese de Algoritmos

Introdução Definição Conceitos Básicos de Linguagem

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

LFA. Aula 04. Sintaxe e Semântica. Conceitos Básicos Alfabeto Palavra Linguagem

Aula de 26/08/2013. Processadores Simbólicos Aspectos de Arquitetura e Implementação

Linguagens Formais e Autômatos (LFA)

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Análise e Síntese de Algoritmos. Programação Linear CLRS, Cap. 29

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

Prof. Adriano Maranhão COMPILADORES

Estrutura geral de um compilador programa-fonte

BCC242. Auômato Finito Determinístico

QUESTÕES DE PROVAS ANTIGAS

Teoria da Computação

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

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

TEORIA DE COMPLEXIDADE

Aula 3: Autômatos Finitos

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

PCC104 - Projeto e Análise de Algoritmos

Linguagens Formais e Autômatos P. Blauth Menezes

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

Análise e Síntese de Algoritmos

Compiladores - Autômatos

Análise e Síntese de Algoritmos. Fluxos Máximos em Grafos CLRS, Cap. 26

IV Gramáticas Livres de Contexto

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011

Melhores momentos AULA 24. Algoritmos p.906/953

Teoria da Computação

FUNDAMENTOS DA PROGRAMAÇÃO 1º Teste, 19 de abril de 2013, 1h30m

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

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

Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 4, 6

5. Invólucros Convexos no Plano (cont )

Autômatos Finitos Determinís3cos (AFD)

Análise de Algoritmos

Autômatos com Pilha: Reconhecedores de LLCs

Processamento de Cadeias de Caracteres

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Projeto e Análise de Algoritmos

Melhores momentos AULA PASSADA. Complexidade Computacional p. 205

Complexidade computacional

Análise Léxica. Fundamentos Teóricos. Autômatos Finitos e Conjuntos Regulares (cap. III da apostila de Linguagens Formais e Compiladores)

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C

COMPLEXIDADE PARAMETRIZADA PARTE 1. Rafael Coelho.

Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins

Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 7-10

Divisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos

Algoritmos gulosos (greedy) CLRS

1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18

PROGRAMAÇÃO DINÂMICA

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

Transcrição:

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

Contexto Revisão Algoritmos em Grafos Programação Linear Programação Dinâmica Algoritmos Greedy Emparelhamento de Cadeias de Caracteres Problemas NP-Completos Algoritmos de Aproximação 2006/2007 Análise e Síntese de Algoritmos 2

Resumo Emparelhamento de Cadeias de Caracteres (String Matching) Definição do problema Notação Algoritmo elementar Utilização de autómatos finitos Algoritmo de Knuth-Morris-Pratt Outros algoritmos Rabin-Karp 2006/2007 Análise e Síntese de Algoritmos 3

Formulação do Problema Texto: array com n caracteres, T[1..n] Padrão: array com m caracteres, P[1..m] Caracteres pertencentes a alfabeto finito Σ Padrão P ocorre com deslocamento s em T se: 0 s n-m T[s+1..s+m] = P[1..m] Exemplo: T = aabababab P = ababab P ocorre em T com deslocamentos 1 e 3 2006/2007 Análise e Síntese de Algoritmos 4

Notação Conjunto de todas as cadeias de caracteres (strings) de comprimento finito: Σ* String vazia: ε ε Σ* Comprimento da string x, x Concatenação de x e y: Representação: xy Comprimento: x + y 2006/2007 Análise e Síntese de Algoritmos 5

Notação (Cont.) w é prefixo de x, w < x, se x = wy, com y Σ* w é sufixo de x, w > x, se x = yw, com y Σ* Se w > x, então w x Sejam x, y e z strings tais que x > z e y > z. Então, Se x y, então x > y Se x y, então y > x Se x = y, então x = y Prefixos do padrão pretendido P 0 = ε; P k = P[1..k] T k = T[1..k] 2006/2007 Análise e Síntese de Algoritmos 6

Algoritmo Elementar Naive-String-Matcher(T, P) n = length[t] m = length[p] for s = 0 to n - m if P[1..m] = T[s+1..s+m] print Padrão encontrado com deslocação, s Complexidade: Θ((n-m+1)m) Θ(m) Exemplo 2006/2007 Análise e Síntese de Algoritmos 7

Utilização de Autómatos Finitos Autómato finito M (Q, q 0, A, Σ, δ): Q é um conjunto finito de estados q 0 é o estado inicial A Q é um conjunto de estados de aceitação Σ é o alfabeto de entrada δ é uma função de Q Σ em Q, designada função de transição de M Autómato no estado q, com caracter de entrada a, novo estado é dado por δ(q,a) Utilizar DFA para aceitar padrão pretendido 2006/2007 Análise e Síntese de Algoritmos 8

Autómatos Finitos (Cont.) Função de estados finais: φ(w): estado de M após ter lido string w M aceita w se e só se φ(w) A Definição: φ(ε) = q 0 φ(wa) = δ(φ(w),a), para w Σ*, a Σ 2006/2007 Análise e Síntese de Algoritmos 9

Autómatos Finitos (Cont.) Função de sufixo para P[1..m]: σ : Σ* { 0, 1,, m } σ(x) = max { k: P k > x } Comprimento do maior prefixo de P que é sufixo de x Saber em que estado DFA deve estar dada a string x Dado x, qual o maior prefixo de P que é também sufixo de x? Autómato para emparelhamento de strings: Q = { 0, 1,, m } Função de transição: δ(q,a) = σ(p q a) (invariante: φ(t i ) = σ(t i )) Novo estado δ(q,a) corresponde ao prefixo de P com o maior comprimento que é também sufixo de P q a 2006/2007 Análise e Síntese de Algoritmos 10

Autómatos Finitos (Cont.) Finite-Automaton-Matcher(T, δ, m) n = length[t] q = 0 for i = 1 to n q = δ(q,t[i]) if q = m s = i - m Print Padrão encontrado com deslocação, s Exemplos 2006/2007 Análise e Síntese de Algoritmos 11

Autómatos Finitos (Cont.) Compute-Transition-Function(P, Σ) m = length[p] for q = 0 to m foreach a Σ k = min(m+1,q+2) repeat k = k - 1 until P k > P q a δ(q,a) = k return δ Identificar maior k tal que P k é um sufixo de P q a Complexidade do cálculo de δ: O(m 3 Σ ) Complexidade do algoritmo: O(n + m 3 Σ ) É possível obter O(n + m Σ ) 2006/2007 Análise e Síntese de Algoritmos 12

Algoritmo de Knuth-Morris-Pratt Complexidade: O(n + m) Evita cálculo da função de transição δ! Função de prefixo para o padrão P: π : { 1, 2,, m } { 0, 1,, m-1 } π[q] = max { k : k < q e P k > P q } Comprimento do maior prefixo de P que é sufixo de P q Caso o próximo caracter de T não emparelhe, π[q] indica qual o maior prefixo de P que é possível obter como sufixo de P q sabendo que em T existe neste momento (i.e. em T i ) o sufixo P q (e que P[q+1] T[i+1]) 2006/2007 Análise e Síntese de Algoritmos 13

Algoritmo de Knuth-Morris-Pratt (Cont.) Se P[k + 1] T[i], então P k+1 não é sufixo de T i Encontrar j tal que P j seja sufixo de T i Observar que: P k > T i-1 P π[k] > P k maior sufixo de P k e T i-1 que é menor que P k P π[π[k]] > P π[k] maior sufixo de P π[k], P k e T i-1 que é menor que P π[k] T i-1 P k P π[k] P π[π[k]] 2006/2007 Análise e Síntese de Algoritmos 14

Algoritmo de Knuth-Morris-Pratt (Cont.) KMP-Matcher(T, P) n = length[t] m = length[p] π = Compute-Prefix-Function(P) q = 0 for i = 1 to n while q > 0 e P[q + 1] T[i] q = π[q] if P[q + 1] = T[i] q = q + 1 if q = m Print Padrão encontrado com deslocação, i-m q = π[q] 2006/2007 Análise e Síntese de Algoritmos 15

Algoritmo de Knuth-Morris-Pratt (Cont.) Exemplos Compute-Prefix-Function(P, Σ) m = length[p] π[1] = 0 k = 0 for q = 2 to m while k > 0 e P[k + 1] P[q] k = π[k] if P[k + 1] = P[q] k = k + 1 π[q] = k return π 2006/2007 Análise e Síntese de Algoritmos 16

Algoritmo de Knuth-Morris-Pratt (Cont.) Complexidade: Compute-Prefix-Function: O(m) k é incrementado de 1 unidade não mais do que uma vez por cada valor de q, com número total de incrementos limitado superiormente por m Valor de k decrementado devido a atribuição k = π[k], mas k > 0 e valor acumulado de decremento limitado a um total de m unidades KMP-Matcher: O(n + m) Análise semelhante à anterior permite obter resultado 2006/2007 Análise e Síntese de Algoritmos 17

Revisão Emparelhamento de cadeiras caracteres Algoritmo elementar Utilização de autómatos finitos Algoritmo de Knuth-Morris-Pratt Outros algoritmos Rabin-Karp Boyer Moore... A seguir: Problemas NP-Completos (CLRS, Cap. 34) Algoritmos de aproximação (CLRS, Cap. 35) 2006/2007 Análise e Síntese de Algoritmos 18