SlideShare a Scribd company logo

Casamento de Padrões

Ricardo Terra
Ricardo Terra
Ricardo TerraProfessor at Universidade Federal de Lavras

Aula sobre Casamento de Padrões.

Casamento de Padrões

1 of 85
Download to read offline
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

Recommended

Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática ComputacionalRicardo Terra
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Ricardo Terra
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 14
(ACH2002) Introdução à Análise de Algoritmos - Aula 14(ACH2002) Introdução à Análise de Algoritmos - Aula 14
(ACH2002) Introdução à Análise de Algoritmos - Aula 14Norton Trevisan Roman
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 12
(ACH2002) Introdução à Análise de Algoritmos - Aula 12(ACH2002) Introdução à Análise de Algoritmos - Aula 12
(ACH2002) Introdução à Análise de Algoritmos - Aula 12Norton Trevisan Roman
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 15
(ACH2002) Introdução à Análise de Algoritmos - Aula 15(ACH2002) Introdução à Análise de Algoritmos - Aula 15
(ACH2002) Introdução à Análise de Algoritmos - Aula 15Norton Trevisan Roman
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 13
(ACH2002) Introdução à Análise de Algoritmos - Aula 13(ACH2002) Introdução à Análise de Algoritmos - Aula 13
(ACH2002) Introdução à Análise de Algoritmos - Aula 13Norton Trevisan Roman
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 18
(ACH2002) Introdução à Análise de Algoritmos - Aula 18(ACH2002) Introdução à Análise de Algoritmos - Aula 18
(ACH2002) Introdução à Análise de Algoritmos - Aula 18Norton Trevisan Roman
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 19
(ACH2002) Introdução à Análise de Algoritmos - Aula 19(ACH2002) Introdução à Análise de Algoritmos - Aula 19
(ACH2002) Introdução à Análise de Algoritmos - Aula 19Norton Trevisan Roman
 

More Related Content

Viewers also liked

Jovens estudo 5 - Namoro e Casamento
Jovens estudo 5 - Namoro e CasamentoJovens estudo 5 - Namoro e Casamento
Jovens estudo 5 - Namoro e Casamentouriank
 
Chatbot workshop - How to build one.#digitized16
Chatbot workshop - How to build one.#digitized16Chatbot workshop - How to build one.#digitized16
Chatbot workshop - How to build one.#digitized16Warply
 
2013 2 tri -lição 3 - as bases do casamento cristão
2013   2 tri -lição 3 - as bases do casamento cristão2013   2 tri -lição 3 - as bases do casamento cristão
2013 2 tri -lição 3 - as bases do casamento cristãoNatalino das Neves Neves
 
chatbot and messenger as a platform
chatbot and messenger as a platformchatbot and messenger as a platform
chatbot and messenger as a platformDaisuke Minamide
 
AI Agent and Chatbot Trends For Enterprises
AI Agent and Chatbot Trends For EnterprisesAI Agent and Chatbot Trends For Enterprises
AI Agent and Chatbot Trends For EnterprisesTeewee Ang
 

Viewers also liked (8)

Casamento, um meeting point
Casamento, um meeting pointCasamento, um meeting point
Casamento, um meeting point
 
Chatbots
ChatbotsChatbots
Chatbots
 
Jovens estudo 5 - Namoro e Casamento
Jovens estudo 5 - Namoro e CasamentoJovens estudo 5 - Namoro e Casamento
Jovens estudo 5 - Namoro e Casamento
 
Chatbot workshop - How to build one.#digitized16
Chatbot workshop - How to build one.#digitized16Chatbot workshop - How to build one.#digitized16
Chatbot workshop - How to build one.#digitized16
 
2013 2 tri -lição 3 - as bases do casamento cristão
2013   2 tri -lição 3 - as bases do casamento cristão2013   2 tri -lição 3 - as bases do casamento cristão
2013 2 tri -lição 3 - as bases do casamento cristão
 
Lição 3
Lição 3Lição 3
Lição 3
 
chatbot and messenger as a platform
chatbot and messenger as a platformchatbot and messenger as a platform
chatbot and messenger as a platform
 
AI Agent and Chatbot Trends For Enterprises
AI Agent and Chatbot Trends For EnterprisesAI Agent and Chatbot Trends For Enterprises
AI Agent and Chatbot Trends For Enterprises
 

More from Ricardo Terra

Microsserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORMMicrosserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORMRicardo Terra
 
Análise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesAnálise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesRicardo Terra
 
Engenharia de Software: POC
Engenharia de Software: POCEngenharia de Software: POC
Engenharia de Software: POCRicardo Terra
 
Which Programming Language is the best one?
Which Programming Language is the best one?Which Programming Language is the best one?
Which Programming Language is the best one?Ricardo Terra
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRicardo Terra
 
English---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsEnglish---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsRicardo Terra
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Ricardo Terra
 
Segurança da Internet
Segurança da InternetSegurança da Internet
Segurança da InternetRicardo Terra
 
Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a InternetRicardo Terra
 
Software Architecture
Software ArchitectureSoftware Architecture
Software ArchitectureRicardo Terra
 
Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Ricardo Terra
 
Apostila Lógica de Programação
Apostila Lógica de ProgramaçãoApostila Lógica de Programação
Apostila Lógica de ProgramaçãoRicardo Terra
 
Apostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTApostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTRicardo Terra
 
Java JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBJava JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBRicardo Terra
 
Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Ricardo Terra
 
Análise Estática de Código
Análise Estática de CódigoAnálise Estática de Código
Análise Estática de CódigoRicardo Terra
 

More from Ricardo Terra (20)

Microsserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORMMicrosserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORM
 
Análise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesAnálise Estática de Código: Aplicações
Análise Estática de Código: Aplicações
 
Engenharia de Software: POC
Engenharia de Software: POCEngenharia de Software: POC
Engenharia de Software: POC
 
Which Programming Language is the best one?
Which Programming Language is the best one?Which Programming Language is the best one?
Which Programming Language is the best one?
 
Refactoring
RefactoringRefactoring
Refactoring
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
English---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsEnglish---and LaTeX---Writing Tips
English---and LaTeX---Writing Tips
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)
 
Segurança da Internet
Segurança da InternetSegurança da Internet
Segurança da Internet
 
Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a Internet
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Aula Zero
Aula ZeroAula Zero
Aula Zero
 
Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)
 
Apostila Lógica de Programação
Apostila Lógica de ProgramaçãoApostila Lógica de Programação
Apostila Lógica de Programação
 
Apostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTApostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLT
 
Java JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBJava JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDB
 
Apostila UML
Apostila UMLApostila UML
Apostila UML
 
Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)
 
Análise Estática de Código
Análise Estática de CódigoAnálise Estática de Código
Análise Estática de Código
 
Apostila XHTML
Apostila XHTMLApostila XHTML
Apostila XHTML
 

Recently uploaded

LDB atualizada 2024 - o que mais cai em concursos da educação
LDB atualizada 2024 - o que mais cai em concursos da educaçãoLDB atualizada 2024 - o que mais cai em concursos da educação
LDB atualizada 2024 - o que mais cai em concursos da educaçãoLucineideDosSantos2
 
LUSSOCARS TRABAJO PARA LA CLASE QUE TENGO
LUSSOCARS TRABAJO PARA LA CLASE QUE TENGOLUSSOCARS TRABAJO PARA LA CLASE QUE TENGO
LUSSOCARS TRABAJO PARA LA CLASE QUE TENGOxogilo3990
 
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdfPLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdfkeiciany
 
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 7º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 7º ANO.pdfPLANO DE CURSO 2O24- ENSINO RELIGIOSO 7º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 7º ANO.pdfkeiciany
 
Q20 - Reações fotoquímicas.pdf
Q20 - Reações fotoquímicas.pdfQ20 - Reações fotoquímicas.pdf
Q20 - Reações fotoquímicas.pdfPedroGual4
 
Quiz | EURO - 25 anos do lançamento da moeda única
Quiz | EURO - 25 anos do lançamento da moeda únicaQuiz | EURO - 25 anos do lançamento da moeda única
Quiz | EURO - 25 anos do lançamento da moeda únicaCentro Jacques Delors
 
LITERATURA, 3.º EM, apostila 1, frentes 2 e 3, módulo 3.ppsx
LITERATURA, 3.º EM, apostila 1, frentes 2 e 3, módulo 3.ppsxLITERATURA, 3.º EM, apostila 1, frentes 2 e 3, módulo 3.ppsx
LITERATURA, 3.º EM, apostila 1, frentes 2 e 3, módulo 3.ppsxrafabebum
 
1° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf
1° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf1° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf
1° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdfkelvindasilvadiasw
 
CURRICULO ed integral.pdf
CURRICULO ed integral.pdfCURRICULO ed integral.pdf
CURRICULO ed integral.pdfdaniele690933
 
Cosmologia Modelo Matemático do Universo 5.pdf
Cosmologia Modelo Matemático do Universo 5.pdfCosmologia Modelo Matemático do Universo 5.pdf
Cosmologia Modelo Matemático do Universo 5.pdfalexandrerodriguespk
 
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 9º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 9º ANO.pdfPLANO DE CURSO 2O24- ENSINO RELIGIOSO 9º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 9º ANO.pdfkeiciany
 
Minimalismo Fitness Simplifique sua Rotina de Exercícios e Maximize Resultado...
Minimalismo Fitness Simplifique sua Rotina de Exercícios e Maximize Resultado...Minimalismo Fitness Simplifique sua Rotina de Exercícios e Maximize Resultado...
Minimalismo Fitness Simplifique sua Rotina de Exercícios e Maximize Resultado...manoelaarmani
 
COMTE, O POSITIVISMO E AS ORIGENS DA SOCIOLOGIA
COMTE, O POSITIVISMO E AS ORIGENS DA SOCIOLOGIACOMTE, O POSITIVISMO E AS ORIGENS DA SOCIOLOGIA
COMTE, O POSITIVISMO E AS ORIGENS DA SOCIOLOGIAHisrelBlog
 
Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...
Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...
Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...manoelaarmani
 
2024 Tec Subsequente em Adm Instituto Federal de Educação, Ciência e Tecnolog...
2024 Tec Subsequente em Adm Instituto Federal de Educação, Ciência e Tecnolog...2024 Tec Subsequente em Adm Instituto Federal de Educação, Ciência e Tecnolog...
2024 Tec Subsequente em Adm Instituto Federal de Educação, Ciência e Tecnolog...pj989014
 
Emagreça em Casa, Treinos Simples e Eficazes Mesmo Não Tendo Equipamentos. Cu...
Emagreça em Casa, Treinos Simples e Eficazes Mesmo Não Tendo Equipamentos. Cu...Emagreça em Casa, Treinos Simples e Eficazes Mesmo Não Tendo Equipamentos. Cu...
Emagreça em Casa, Treinos Simples e Eficazes Mesmo Não Tendo Equipamentos. Cu...manoelaarmani
 
3° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf
3° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf3° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf
3° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdfkelvindasilvadiasw
 
Slides Lição 8, CPAD, A Disciplina na Igreja, 1Tr24, Pr Henrique, EBD NA TV.pptx
Slides Lição 8, CPAD, A Disciplina na Igreja, 1Tr24, Pr Henrique, EBD NA TV.pptxSlides Lição 8, CPAD, A Disciplina na Igreja, 1Tr24, Pr Henrique, EBD NA TV.pptx
Slides Lição 8, CPAD, A Disciplina na Igreja, 1Tr24, Pr Henrique, EBD NA TV.pptxLuizHenriquedeAlmeid6
 

Recently uploaded (20)

LDB atualizada 2024 - o que mais cai em concursos da educação
LDB atualizada 2024 - o que mais cai em concursos da educaçãoLDB atualizada 2024 - o que mais cai em concursos da educação
LDB atualizada 2024 - o que mais cai em concursos da educação
 
LUSSOCARS TRABAJO PARA LA CLASE QUE TENGO
LUSSOCARS TRABAJO PARA LA CLASE QUE TENGOLUSSOCARS TRABAJO PARA LA CLASE QUE TENGO
LUSSOCARS TRABAJO PARA LA CLASE QUE TENGO
 
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdfPLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdf
 
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 7º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 7º ANO.pdfPLANO DE CURSO 2O24- ENSINO RELIGIOSO 7º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 7º ANO.pdf
 
Q20 - Reações fotoquímicas.pdf
Q20 - Reações fotoquímicas.pdfQ20 - Reações fotoquímicas.pdf
Q20 - Reações fotoquímicas.pdf
 
Quiz | EURO - 25 anos do lançamento da moeda única
Quiz | EURO - 25 anos do lançamento da moeda únicaQuiz | EURO - 25 anos do lançamento da moeda única
Quiz | EURO - 25 anos do lançamento da moeda única
 
Slides Lição 8, Betel, Família, uma Obra em permanente construção, 1Tr24.pptx
Slides Lição 8, Betel, Família, uma Obra em permanente construção, 1Tr24.pptxSlides Lição 8, Betel, Família, uma Obra em permanente construção, 1Tr24.pptx
Slides Lição 8, Betel, Família, uma Obra em permanente construção, 1Tr24.pptx
 
LITERATURA, 3.º EM, apostila 1, frentes 2 e 3, módulo 3.ppsx
LITERATURA, 3.º EM, apostila 1, frentes 2 e 3, módulo 3.ppsxLITERATURA, 3.º EM, apostila 1, frentes 2 e 3, módulo 3.ppsx
LITERATURA, 3.º EM, apostila 1, frentes 2 e 3, módulo 3.ppsx
 
1° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf
1° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf1° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf
1° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf
 
CURRICULO ed integral.pdf
CURRICULO ed integral.pdfCURRICULO ed integral.pdf
CURRICULO ed integral.pdf
 
Cosmologia Modelo Matemático do Universo 5.pdf
Cosmologia Modelo Matemático do Universo 5.pdfCosmologia Modelo Matemático do Universo 5.pdf
Cosmologia Modelo Matemático do Universo 5.pdf
 
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 9º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 9º ANO.pdfPLANO DE CURSO 2O24- ENSINO RELIGIOSO 9º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 9º ANO.pdf
 
Minimalismo Fitness Simplifique sua Rotina de Exercícios e Maximize Resultado...
Minimalismo Fitness Simplifique sua Rotina de Exercícios e Maximize Resultado...Minimalismo Fitness Simplifique sua Rotina de Exercícios e Maximize Resultado...
Minimalismo Fitness Simplifique sua Rotina de Exercícios e Maximize Resultado...
 
COMTE, O POSITIVISMO E AS ORIGENS DA SOCIOLOGIA
COMTE, O POSITIVISMO E AS ORIGENS DA SOCIOLOGIACOMTE, O POSITIVISMO E AS ORIGENS DA SOCIOLOGIA
COMTE, O POSITIVISMO E AS ORIGENS DA SOCIOLOGIA
 
Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...
Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...
Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...
 
2024 Tec Subsequente em Adm Instituto Federal de Educação, Ciência e Tecnolog...
2024 Tec Subsequente em Adm Instituto Federal de Educação, Ciência e Tecnolog...2024 Tec Subsequente em Adm Instituto Federal de Educação, Ciência e Tecnolog...
2024 Tec Subsequente em Adm Instituto Federal de Educação, Ciência e Tecnolog...
 
Emagreça em Casa, Treinos Simples e Eficazes Mesmo Não Tendo Equipamentos. Cu...
Emagreça em Casa, Treinos Simples e Eficazes Mesmo Não Tendo Equipamentos. Cu...Emagreça em Casa, Treinos Simples e Eficazes Mesmo Não Tendo Equipamentos. Cu...
Emagreça em Casa, Treinos Simples e Eficazes Mesmo Não Tendo Equipamentos. Cu...
 
3° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf
3° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf3° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf
3° ENSINO MÉDIO PLANO ANUAL ARTES 2024.pdf
 
APOSTILA MATERNAL 2 ANOS PARTE 1.pdf
APOSTILA MATERNAL 2 ANOS PARTE 1.pdfAPOSTILA MATERNAL 2 ANOS PARTE 1.pdf
APOSTILA MATERNAL 2 ANOS PARTE 1.pdf
 
Slides Lição 8, CPAD, A Disciplina na Igreja, 1Tr24, Pr Henrique, EBD NA TV.pptx
Slides Lição 8, CPAD, A Disciplina na Igreja, 1Tr24, Pr Henrique, EBD NA TV.pptxSlides Lição 8, CPAD, A Disciplina na Igreja, 1Tr24, Pr Henrique, EBD NA TV.pptx
Slides Lição 8, CPAD, A Disciplina na Igreja, 1Tr24, Pr Henrique, EBD NA TV.pptx
 

Casamento de Padrões

  • 1. Casamento de Padrões Ricardo Terra rterrabh [at] gmail.com Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 1 / 34
  • 2. 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
  • 3. Introdução Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 3 / 34
  • 4. 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
  • 5. Introdução Em segundo lugar, por que estudar isto? Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 5 / 34
  • 6. 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
  • 7. Introdução Ainda não convencido? Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 6 / 34
  • 8. 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
  • 9. Introdução Nada ainda? Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 7 / 34
  • 10. 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
  • 11. 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
  • 12. Casamento Exato Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 9 / 34
  • 13. 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
  • 14. 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
  • 15. Casamento Exato Exemplo mega simples Texto: 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
  • 16. 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
  • 17. 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
  • 18. 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)] 1lg n = log2n Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 12 / 34
  • 19. 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)] 1lg n = log2n Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 12 / 34
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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,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
  • 28. Algoritmos baseados em AF Exemplo de um AFD Quíntupla (Q,q0,A,Σ,δ) Q = {q1, q2, q3} q0 = 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
  • 29. Algoritmos baseados em AF Exemplo de um AFD Quíntupla (Q,q0,A,Σ,δ) Q = {q1, q2, q3} q0 = 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)
  • 30. 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
  • 31. Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34
  • 32. Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34
  • 33. Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34
  • 34. Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34
  • 35. Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34
  • 36. Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34
  • 37. Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34
  • 38. Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34
  • 39. Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34
  • 40. Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34
  • 41. Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34
  • 42. Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34
  • 43. Algoritmos baseados em AF Exemplo: ( T = abababacaba, P = ababaca) Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 19 / 34
  • 44. 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(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
  • 45. 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 0 s t e s t e s Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34 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
  • 46. 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 0 s 1 0 0 0 0 0 0 0 0 0 t e s t e s Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34 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
  • 47. 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 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 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34 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
  • 48. 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 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 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34 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
  • 49. 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 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 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34 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
  • 50. 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 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 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34 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
  • 51. 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 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 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34 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
  • 52. 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 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 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34 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
  • 53. 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 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 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34 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
  • 54. 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 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 Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 21 / 34 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
  • 55. 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
  • 56. 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
  • 57. 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
  • 58. 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
  • 59. 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
  • 60. 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
  • 61. 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
  • 62. 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
  • 63. 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
  • 64. 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
  • 65. 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
  • 66. 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
  • 67. 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
  • 68. Casamento Aproximado Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 25 / 34
  • 69. Casamento Aproximado Nem sempre procuramos de forma “exata”... Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 26 / 34
  • 70. 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
  • 71. Casamento Aproximado E, às vezes, o Google apenas recomenda... Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 27 / 34
  • 72. 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
  • 73. 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
  • 74. 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 Google
  • 75. 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 < 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
  • 76. 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
  • 77. Considerações Finais Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 31 / 34
  • 78. 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
  • 79. 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
  • 80. Obrigado!!! Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 34 / 34
  • 81. 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
  • 82. 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
  • 83. 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
  • 84. 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
  • 85. Possíveis Questionamentos Arquivo Invertido usando Trie – Exemplo Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 34 / 34