itc: introdu˘c~ao a teoria da computa˘c~ao · 2019. 2. 19. · motiva˘c~ao i em teoria da...
TRANSCRIPT
ITC: Introducao a Teoria da Computacao
Prof. Dr. Marcos Castilho
Departamento de Informatica/UFPR
19 de fevereiro de 2019
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Motivacao
I O que e um computador?
I O que e um algoritmo?
I Para que serve um algoritmo?
I Quando um algoritmo e bom?
I A analise de um algoritmo depende do computador?
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Motivacao
I Em teoria da computacao, a preocupacao e estudar o processoda computacao independentemente do hardware ou dosoftware da maquina atraves de modelos matematicos.
I Uma soma de dois numeros e sempre uma soma, nao importase voce usou um computador ou os dedos da mao!
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
O que estudaremos?
I Modelos computacionais: maquinas abstratas que podem serdefinidas matematicamente.
I Linguagens: do ponto de vista de um problema de decisao.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Problemas de decisao
Um problema de decisao e um problema computacional que podeser respondido com SIM ou NAO.
I Exemplo: Para uma string de dıgitos qualquer, ela representaum numero primo?
Deve existir um modelo computacional que reconhece as stringsque representam numeros primos.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Panorama
I Automatos Finitos
I Automatos com Pilha
I Maquinas de Turing
I Decidibilidade
I Complexidade computacional
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Automatos Finitos
I Reconhecem as linguagens regulares obtidas por aplicacao deoperacoes simples em termos de um alfabeto.
I Problema: nao tem memoria.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Automatos com Pilha
I Reconhecem as linguagens livre de contexto, como porexemplo as linguagens de programacao.
I Problema: tem memoria auxiliar, mas muito simples.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Maquinas de Turing
I Podem realizar qualquer tarefa que um computador pode, emsuma e o modelo matematico do computador por excelencia!
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Decidibilidade
I E o estudo sobre decidir se um problema pode ser resolvido ounao por um computador.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Pre-requisitos
I Teoria dos conjuntos: produto cartesiano, relacoes e funcoes;
I Relacoes de equivalencia;
I Conjuntos enumeraveis e nao enumeraveis;
I Definicoes recursivas;
I Logica matematica;
I Tecnicas de provas de teoremas, em particular: inducao finita.
Co-requisito: desejavel conhecimento de teoria dos grafos.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Questoes tratadas em Teoria da Computacao
I Como sao definidas as linguagens?
I O que e um algoritmo?
I Quais sao as capacidades e limites da computacao?
I Quanto custa uma computacao?
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Teoria de Linguagem Formal
I Como as linguagens sao definidas?
I Inıcio: Chomsky no contexto das linguagens naturais.
I Na Ciencia da Computacao: Gramatica Livre de Contextopara a linguagem ALGOL 60.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Computabilidade
O que e um algoritmo?
I A resposta depende de um modelo formal da computacao.
I Primeira tentativa: um computador e uma linguagem deprogramacao.
Sim, mas qual computador? Quanta memoria? Qual linguagem deprogramacao?
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Quais sao as capacidades e limites da computacaoalgarıtmica?
Problemas para responder esta pergunta:
I O que e soluvel em um computador pode nao ser em outro!
I Deve haver um modelo independente para servir como base!!!
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Modelos conhecidos (desde 1930...)
I Funcoes recursivas;
I Lambda calculus;
I Sistemas de Markov;
I Maquinas abstratas, por exemplo, as Maquinas de Turing.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Tese de Church/Turing
I Um problema tem solucao algorıtmica apenas se pode serresolvido com um destes modelos computacionais.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Modelo escolhido aqui
Adotaremos as Maquinas de Turing, pois:
I Processam entrada;
I Escrevem em memoria;
I Produzem saıda.
Qualquer computacao em um computador pode ser simulada emuma Maquina de Turing, assim o estudo e imune as limitacoes detempo e espaco.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
MT como base
I Quais as capacidades e limites da computacao algorıtmica?
I Tese de Church/Turing: um problema e soluvel apenas seexiste uma Maquina de Turing que o resolve.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Questoes subsequentes
I Quanto tempo leva uma computacao?
I Quanta memoria consome?
O estudo de complexidade computacional e um topico avancadoem Teoria da Computacao e nao sera abordada em profundidadeneste curso.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Tudo ao seu tempo
I Automatos finitos: modelo sem memoria bastantesimplificado. A aplicacao e em analise lexica de linguagens deprogramacao e design de circuitos.
I Automatos com pilha: modelo mais complexo, pois temmemoria baseada em pilhas. A aplicacao e em compilacao delinguagens de programacao.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Linguagens e Computabilidade
I Sao conceitos intimamente relacionados, basta ver o nome depraticamente todos os livros da area.
I Computacoes de uma maquina podem ser usadas parareconhecer uma linguagem.
I Assim, cada maquina tem uma linguagem associada.
I E esta linguagem caracteriza a maquina.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Importancia das linguagens
I Engenharia;
I Fısica;
I Quımica;
I Computacao
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Plano de curso
1. Introducao
2. Linguagens
3. Automatos finitos
4. Linguagens regulares
5. Automatos com pilha e gramaticas livre de contexto
6. Introducao a analise sintatica
7. Formas normais
8. Maquinas de Turing
9. A hierarquia de Chomsky
10. Decidibilidade
11. Introducao a complexidade computacional
12. Classes de complexidade
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Bibliografia basica
I Introducao aos Fundamentos da Computacao, Newton JoseVieira, Pioneira Thomson Learning, 2006.
I Languages and Machines: An Introduction to the Theory ofComputer Science Thomas Sudkamp. Addison-Wesley,Second Edition, 1998.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Bibliografia complementar
I Introducao a Teoria de Automatos, Linguagens e ComputacaoJohn E. Hopcroft, Jeffrey D. Ullman, Rajeev Motwani,Segunda Edicao, Editora Campus, 2003.
I Elementos de Teoria da Computacao, Harry F. Lewis, C. H.Papadimitriou. 2a Edicao, Editora Bookman. 2004.
I Introduction to the Theory of Computation, Michael Sipser,Course Technology; 2 edition, February 15, 2005.
I Theory of Computation, Wood, D., Ed. John Wiley & Sons,1987.
I Linguagens Formais e Automatos, Numero 3 – serie livrosdidaticos, Paulo Blauth de Menezes, Instituto deInformatica/UFRGS, 2a edicao, 1998. Editora Sagra Luzzatto.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Bibliografia dos pre-requisitos
I How to prove it, a structured approach. Valleman, Daniel.Cambridge University Press. Second edition. 2006.
I Fundamentos de Matematica Elementar - Vol. 1 - Conjuntos -Funcoes - 9a Ed. 2013, Iezzi, Gelson; Murakami, Carlo
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Linguagens
I Linguagem natural
I Linguagem matematica
I Linguagem de computadores
I . . .
Para definir formalmente o conceito de linguagem precisamosenglobar todos estes tipos.
Definiremos linguagem atraves da nocao de conjuntos.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Linguagens
Definicao formal:
I Uma linguagem sera um conjunto de palavras (strings) sobreum alfabeto.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Linguagens
I Linguagens interessantes sao constituıdas de palavras quesatisfazem uma propriedade: a sintaxe.
I Usaremos definicoes recursivas e operacoes sobre conjuntos.
I Terminaremos com a nocao de conjuntos regulares que saouma famılia de linguagens especial.
I Partiremos de uma construcao em Teoria dos Conjuntos everemos que os conjuntos regulares sao gerados pelasgramaticas regulares e reconhecidos pelos automatos finitos.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Palavras e linguagens
I Uma palavra sobre um conjunto X e uma sequencia finita deelementos de X .
I O conjunto de elementos a partir dos quais as palavras saoconstituıdas e chamado alfabeto.
I Um alfabeto consiste de um conjunto finito e nao vazio deobjetos indivisıveis. Σ denotara este alfabeto.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Exemplo 1
I Alfabeto do Portugues: palavras do dicionario.
I Banana e diferente de Ba nana.
I ex.: comida casa olimpıada abrir sao computador
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Exemplo 2
I Alfabeto Σ = {a, b, c}.I ex.: aabcacba
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Notacao:
I Elementos do alfabeto: letras a, b, c, d, e
I Palavras: p, q, u, v, w, x, y, z
Obs.: Existe uma palavra que consiste de zero elementos doalfabeto, denominada palavra vazia ou nula que sera representadapelo sımbolo λ.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Definicao
Seja Σ um alfabeto. Entao Σ∗ sera o conjunto de palavras sobreΣ, assim definido:
I (i) BASE: λ ∈ Σ∗
I (ii) PASSO RECURSIVO: Se w ∈ Σ∗ e a ∈ Σ entao wa ∈ Σ∗
I (iii) FECHO: w ∈ Σ∗ apenas se pode ser obtido a partir de λpor um numero finito de aplicacoes do passo recursivo.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Observacoes
I ∀Σ,Σ∗ e um conjunto infinito.
I Se Σ = {a} entao Σ∗ contem: λ, a, aa, aaa, aaaa, . . .
I tamanho(w) e o numero de aplicacoes do passo recursivonecessarios para construir a palavra a partir dos elementos doalfabeto.
I Se |Σ| = n entao existem nk palavras de tamanho k em Σ∗.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Exemplo
Seja Σ = {a, b, c , }. Os elementos de Σ∗ incluem:
I tamanho 0: λ
I tamanho 1: a, b, c
I tamanho 2: aa, ab, ac, ba, bb, bc, ca, cb, cc
I tamanho 3: aaa, aab, . . . , ccb, ccc
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Observacao
I Uma linguagem consiste de palavras sobre um alfabeto.
I Nem toda palavra de vocabulos do portugues forma umasentenca valida.
I Assim, uma linguagem consiste de um subconjunto de todasas palavras sobre um alfabeto.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Definicao: linguagem
I Uma linguagem sobre um alfabeto Σ e um subconjunto de Σ∗.
Veremos agora propriedades e operacoes sobre palavras.
Notem que definicoes formais devem ser baseadas apenas emconceitos primitivos ja definidos.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Definicao: Concatenacao
Sejam u, v ∈ Σ∗. A concatenacao de u e v , denotado por uv e aoperacao binaria sobre Σ∗ assim definida
I (i) BASE: Se tamanho(v) = 0 entao v = λ e uv = u.
I (ii) PASSO RECURSIVO: Seja v uma palavra com tamanhotamanho(v) = n > 0. Entao v = wa para algum w ∈ Σ∗ comtamanho(w) = n − 1 e a ∈ Σ, e uv = (uw)a.
I (iii) FECHO: Uma palavra w e a concatenacao de duaspalavras u e v somente se podem ser obtidas a partir daBASE com um numero finito de aplicacoes do passo recursivo.
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao
Exemplo
Sejam u = ab, v = ca, w = bb.
Entao:
I uv = abca
I vw = cabb
I (uv)w = abcabb
I u(vw) = abcabb
Prof. Dr. Marcos Castilho Departamento de Informatica/UFPR
ITC: Introducao a Teoria da Computacao