CT-200 Fundamentos de Linguagens Formais e Automata - Aula 01 - In...

Documentos relacionados
SCC-5832 Teoria da Computação

SCC Introdução à Teoria da Computação

SCC Teoria da Computação e Linguagens Formais

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 22 de Fevereiro de 2018

sumário 1 introdução e conceitos básicos 1 2 noções de lógica e técnicas de demonstração introdução à matemática discreta...

Linguagens Formais e Autômatos. Tiago Alves de Oliveira

Teoria da Computação (BBC244)

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

Linguagens Formais e Autômatos (BBC242) Professor: Anderson Almeida Ferreira DECOM-UFOP

Teoria da Computação Prof. Lucília Figueiredo Prova 03 - ENTREGA DIA 24/06/2015. (a) Descreva o programa da MT usando um pseudocódigo.

Computação efectiva. Que linguagens podem ser reconhecidas por algum tipo de autómato?

UNIVERSIDADE ESTADUAL DO SUDOESTE DA BAHIA - UESB DEPARTAMENTO DE CIÊNCIAS EXATAS - DCE PLANO DE CURSO DISCIPLINA

PLANO DE ENSINO. CURSO: Bacharelado em Sistemas de Informação MODALIDADE: PRESENCIAL ( X ) OBRIGATÓRIA ( ) OPTATIVA DEPARTAMENTO: DEINFO

formais e autómatos Linguagens g recursivas e recursivamente enumeráveis Gramáticas não-restringidas

2. DISCIPLINA REQUISITO (RECOMENDAÇÃO) 3. INDICAÇÃO DE CONJUNTO (BCC) Obrigatória TEORIA: 60 LABORATÓRIO: 30

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos Apresentação da Disciplina

IBM1088 Linguagens Formais e Teoria da Computação

Teoria Ingênua dos Conjuntos (naive set theory)

Linguaguens recursivamente enumeráveis

Introdução ao Curso. Área de Teoria DCC/UFMG 2019/01. Introdução à Lógica Computacional Introdução ao Curso Área de Teoria DCC/UFMG /01 1 / 22

Lógica Computacional

Linguagens recursivamente enumeráveis

Turma A - Segundas e Quartas das 8h30min - 10h10min Turma B - Segundas e Quartas das 10h30min - 12h10min

Matemática Discreta para Ciência da Computação

Fundamentos 1. Lógica de Predicados

Teoria da Computação Aula 01 Revisão de Conjuntos

Linguagem (formal) de alfabeto Σ

Modelos de Computação

Revisões de Conjuntos

Capítulo A máquina de Turing (TM) padrão Combinações de máquinas de Turing A Tese de Turing. ADC/TC/Cap.9/ /LEI/DEIFCTUC 375

Linguaguens recursivamente enumeráveis e recursivas

Máquinas Universais. Máquina de Turing. Celso Olivete Júnior.

Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação

Já falamos que, na Matemática, tudo se baseia em axiomas. Já estudamos os números inteiros partindo dos seus axiomas.

1 INTRODUÇÃO E CONCEITOS BÁSICOS

Para Computação. Aula de Monitoria - Miniprova

INE5317 Linguagens Formais e Compiladores. Ricardo Azambuja Silveira INE-CTC-UFSC URL:

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

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 2. Conceitos Básicos da Teoria da Computação

Linguagens Formais e Autômatos

MDI0001 Matemática Discreta Aula 01

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

MDI0001 Matemática Discreta Aula 04 Álgebra de Conjuntos

2019/01. Estruturas Básicas: Conjuntos, Funções, Sequências, e Somatórios Área de Teoria DCC/UFMG /01 1 / 76

Teoria dos Conjuntos MATEMÁTICA DISCRETA CONCEITOS PRELIMINARES. Fundamentos de Lógica Técnicas Elementares de Prova A NOÇÃO DE CONJUNTO

Teoria da Computação

Referências e materiais complementares desse tópico

MATEMÁTICA DISCRETA CONCEITOS PRELIMINARES

Universidade de Caxias do Sul Centro de Ciências Exatas e Tecnologia Departamento de Informática. Matemática Discreta. Márcia Rodrigues Notare

I.2 Introdução a Teoria da Computação

Bases Matemáticas. Aula 1 Elementos de Lógica e Linguagem Matemática. Prof. Rodrigo Hausen. 24 de junho de 2014

Linguagens Formais e Autômatos P. Blauth Menezes

Álgebra Linear e Geometria Analítica

Linguagens Regulares. Prof. Daniel Oliveira

Matemática para Ciência de Computadores

Teoria da Computação. Computabilidade e complexidade computacional

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

Decidibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)

Notas de Aula de Probabilidade A

1 introdução. capítulo. O que é uma solução computável? Quais são os limites do que pode ser computado? Existem problemas sem solução computacional?

PCS3616. Programação de Sistemas (Sistemas de Programação) Visão Geral

Aula 10: Decidibilidade

Aula 1: Introdução ao curso

SCC Capítulo 3 Linguagens Sensíveis ao Contexto e Autômatos Limitados Linearmente

Teoria da Computação. Computabilidade e complexidade computacional

Teoria intuitiva de conjuntos

Máquinas Universais. Departamento de Ciência de Computadores da FCUP MC Aula 23 1

GBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Teoria de Algoritmos: Computabilidade e Máquina de Turing

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

Aula 1 Aula 2. Ana Carolina Boero. Página:

Notas de aula de MAC0329 Álgebra Booleana e Aplicações

13.2. Sistemas de Post Sistemas de rescrita Cálculo Lambda. ADC/TC/Cap.13/ /LEI/DEIFCTUC 497

1 TEORIA DOS CONJUNTOS

Sumário. 1 CAPÍTULO 1 Revisão de álgebra

UNIDADE UNIVERSITÁRIA:

Conceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem

Aula 1 Aula 2 Aula 3. Ana Carolina Boero. Página:

Introdução. Matemática Discreta. Prof Marcelo Maraschin de Souza

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

Noções de grafos (dirigidos)

MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERALRURAL DO RIO DE JANEIRO Instituto Multidisciplinar Departamento de Ciência da Computação

Funções, Seqüências, Cardinalidade

Linguagens Formais e Problemas de Decisão

Máquina de Turing. Controle finito

Matemática Discreta para Ciência da Computação

Centro de Informática UFPE

Notas de Aula de Fundamentos de Matemática

Faculdade de Computação

ECO026 TEORIA DA COMPUTAÇÃO. Prof: Rafael Santos Site:

Programação em Lógica. UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010

1) Verifique as afirmativas abaixo e responda, qual é a correspondente ao conjunto infinito?

Matemática Discreta - 01

Matemática Discreta para Computação e Informática

LINGUAGENS FORMAIS E AUTÔMATOS

Linguagens Formais e Autômatos P. Blauth Menezes

Elementos de Matemática

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

Transcrição:

1 de 14 14/3/2010 09:28 CT-200 Fundamentos de Linguagens Formais e Automata Aula 01 - Introdução Primeira aula (updated just now by YourName) Orientações Gerais: Horários e Avaliação Horários: 3 tempos semanais (teoria) - terças às 9:00 Avaliação (por bimestre): Um exame escrito individual em sala. Um projeto realizado em dupla. Uma lista de exercício realizada individualmente. Tópicos Teoria de Conjuntos Provas de Teoremas Conjuntos Infinitos Estruturas de Dados e Algoritmos Linguagens Regulares Autômatos Finitos Teorema de Kleene Propriedades e Minimização de Autômatos Gramáticas Hierarquia de Chomsky Gramáticas Livres de Contexto Normalização de Gramáticas Autômato de Pilha Análise Sintática Máquinas de Turing Linguagens Irrestritas e Computabilidade Bibliografia Introduction to Automata Theory, Languages and Computation - J.E. Hopcroft e J.D. Ullman. Addison-Wesley. Um clássico na área, razoavelmente completo e didático. Provas sumárias de teoremas. Apresenta soluções comentadas para alguns exercícios. Introdução à Teoria de Autômatos, Linguagens e Computação J.E. Hopcroft, J.D. Ullman e R. Motwami. Campus. Tradução da 2a. edição americana de versão estendida do Hopcroft/Ullman. Vários erros de tradução. Bem completo. Elements of the Theory of Computation - H.R. Lewis e C.H. Papadimitriou. Prentice-Hall. Um pouco mais pesado e menos didático do que o anterior. Conciso e objetivo. Languages and Machines - T. Sudkamp. Addison-Wesley.

2 de 14 14/3/2010 09:28 Mais didático do que os anteriores. Ordenação não muito ortodoxa: primeiro discute linguagens e gramáticas e só então introduz a teoria de autômatos. Introduction to the Theory of Computation M. Sipser. PWS. Conciso e didático. Notas de aula Motivação Objetivo do curso: Apresentar os fundamentos da Teoria da Computação. Como definir o processo computacional de maneira formal? Quais as capacidades / limitações da computação? Como definir uma máquina abstrata que realiza computações? Em suma: quais as capacidades e limitações de um computador? Veremos que existem vários modelos, e que a capacidade computacional de uma máquina é caracterizada pela linguagem formal que ela pode reconhecer. Quanto mais poderosa uma máquina, a linguagem que ela pode reconhecer pode ser mais complexa. Teoria da Computação - visão geral Teoria de Autômatos e Linguagens Formais Teoria da Computabilidade Teoria da Complexidade Teoria de Autômatos e Linguagens Formais

3 de 14 14/3/2010 09:28 O QUE É UM COMPUTADOR? Existem modelos gerais de computadores que não referenciam nenhuma implementação particular? Como verificar o que um computador faz? Exemplos de modelos computacionais: Autômato finito: processamento de texto, compiladores e projeto de hardware. Gramática livre de contexto: linguagens de programação e Inteligência Artificial. Noção de Autômato Autômato: uma fita contendo a informação de entrada. uma cabeça de leitura que se move pela fita. um controle que decide sobre o movimetno da cabeça e produz uma saída. Modos de operação: produzir uma saída de forma autônoma entrada traduzida em saída entrada aceita ou não Teoria da Computabilidade Há problemas que podem ser resolvidos por computadores, e outros que não podem. Exemplo: Teorema de Gödel O QUE TORNA ALGUNS PROBLEMAS COMPUTÁVEIS E OUTROS NÃO COMPUTÁVEIS? QUAIS AS CONSEQUÊNCIAS DISSO PARA O PROJETO DE COMPUTADORES? Definição de problema como linguagens. A solução de problemas é equivalente à interpretação de linguagens por autômatos. Teoria da Complexidade Há problemas simples e problemas difíceis: Ordenamento: simples. Alocação de recursos: complexo. O QUE TORNA ALGUNS PROBLEMAS FÁCEIS E OUTROS DIFÍCEIS? COMO CLASSIFICAR PROBLEMAS? Kurt Gödel

4 de 14 14/3/2010 09:28 Nascido em 1906 (Brno, Rep. Tcheca), faleceu em 1978 (Princeton, EUA). Doutorado em 1929 (Univ. de Viena). Teorema provado em 1931: qualquer sistema matemático baseado em axiomas tem proposições que não podem ser provadas. Teorema de Gödel encerrou uma busca de mais de 100 anos por uma base axiomática completa para a Matemática (Hilbert, Russell e outros). É um dos dez mais importantes teoremas provados, considerando-se qualquer área da Ciência. Mais info Aplicações diretas projeto de hardware (circuitos seqüenciais) e de software (máquinas de estado). processamento de texto (corretor ortográfico, reformatação, colorir sintaxe). compiladores (análise léxica, sintática, geração de código). análise de padrões (combinar modelos matemáticos na forma de linguagens com fenômenos naturais, recursão) Problemas não computáveis Demonstrar que nem todo problema pode ser resolvido computacionalmente. 1 - Assumir que para cada função computável há um programa de computador finito. 2 - Assim, o conjunto de todos os programas de computador (possíveis de se escrever) é infinito, mas contável. 3 - Consideramos os problemas que consistem em responder sim ou não para um determinado número inteiro. (Exemplo: o número é par? o número é primo? o número é perfeito?) 4 - Um problema assim pode ser modelado como uma função f(n) que retorne 0 ou 1. 5 - Suponha que cada problema desse possa ser numerado, assim temos funções f_0, f_1, f_2,..., f_i,... (isto é, um conunto

5 de 14 14/3/2010 09:28 infinito, mas contável de problemas). 6 - A função f(n) definida como 0 se f_n(n)=1 1 caso contrário não pode corresponder a nenhum inteiro. Veja que f_j(j)= 0 se f_j(j)=1 1 caso contrário 7 - Logo, a suposição 5 é falsa e o conjunto de problemas é infinito e incontável (maior portanto que o conjunto dos possíveis programas. Exemplos de problemas não computáveis 1 - O problema da parada: halting : Todos.os.programas halting(p) = 1 se a execução de p vai parar 0 caso contrário 2 - Verificar se um programa é correto (isto é, se faz sempre o que é previsto para fazer). Revisão de Teoria dos Conjuntos Notação de conjunto A={1,3,7,10} A ordem não importa: {2,3}={3,2} B={ x x é par} Notação Zermelo-Fraenkel, onde o membro após a barra vertical (lida como "tal que") é uma expressão lógica. P={x x é o nome de um rio e x está no Brasil} Pertinência x A x A No caso anterior, 1 A 2 A

6 de 14 14/3/2010 09:28 Conjunto infinito: C = {2, 4, 6, 8,...} Conjunto vazio ou nulo = {} B = {x x 2 = 4 e x é impar} = x, x Qualquer que seja x, x não pertence ao conjunto vazio Universo de discurso U é o conjunto de todos os elementos do discurso. x U, x Subconjuntos A={1,3,7} São subconjuntos de A:, {1}, {3}, {7}, {1,3}, {1,7}, {3,7}, {1,3,7} (que é o próprio A) {1, 3} A está contido em A (é subconjunto de A) {1, 7} A é subconjunto próprio de A, isto é, é subconjunto de A, mas é diferente de A A A é falso. Inclusão e Comparabilidade A, conjunto A A B B A A está contido em B, então B contém A Se A B ou B A, então A e B são comparáveis. Se A B e B A, então A e B não são comparáveis. Diagramas de Venn-Euler

7 de 14 14/3/2010 09:28 Operações sobre conjuntos Considerar os conjuntos e elementos abaixo: A={a,b,c,d} B={c,d,e,f} Complemento Complemento de A é A = {x x A}

8 de 14 14/3/2010 09:28 Complemento relativo de A com relação a B A B =B A Álgebra de Boole Valores: verdadeiro e falso Proposição: uma afirmação que pode assumir um desses valores. Conjunção p q é uma conjunção (operação E) Tabela verdade: p q p q V V V F F V F F V F F F Exemplo p =a A falso

9 de 14 14/3/2010 09:28 q =a B falso p q falso Disjunção p q é uma disjunção (operação OU) Tabela verdade: p q p q V V V F F V F F V V V F Negação p é uma negação, uma afirmação de que p é falsa. Tabela Verdade: p p V F F V Implicação ou condicional p q, p implica q, é o mesmo que q p Se p for verdadeira, q necessariamente deve ser verdadeira. Se p for falsa, não importa o valor de q. Exercício: Fazer a tabela verdade da implicação. Fazer o diagrama de Venn para a A a B e explicar a relação entre os conjuntos A e B. Bicondicional p q, indica que a implicação é válida em ambos sentidos. Se p for verdadeira, então q é verdadeira. Se q for verdadeira, então p é verdadeira.

10 de 14 14/3/2010 09:28 Exercício: Fazer a tabela verdade da implicação. Fazer o diagrama de Venn para a A a B e explicar a relação entre os conjuntos A e B. Leis de DeMorgan (p q) = p q (p q) = p q A B =A B A B =A B Exercício: Verificar a validade das leis de De Morgan através de tabela-verdade e de diagrama de Venn Quantificadores p(x) é uma sentença aberta dependente de x. Exemplo: p(x) =x A Se A = {1, 2, 3}, p(1) é verdadeira e p(4) é falsa. Quantificador universal (qualquer) x B, p(x) é verdadeira se B A Quantificar existencial (existe) x B, p(x) é verdadeira se A e B não são disjuntos. Construção de conjuntos com quantificadores Exemplo B = {3, 5, 7}

11 de 14 14/3/2010 09:28 A = {x y B, y <x e x < 10} = {4, 5, 6, 7, 8, 9} C = {x y B, y <x e x < 10} = {8, 9} Cardinalidade de um conjunto finito é o número de elementos de um conjunto A = {2, 3, 7, 8} A = 4 Conjunto das partes 2 A é o conjunto de todos os subconjuntos de A. A = {1, 2} 2 A = {, {1}, {2}, {1, 2}} 2 A = 2 A Demonstração: Associe a cada elemento a i de A uma proposição p i (x): p i (x) =a i x que pode ser verdadeira ou falsa. Para A={1,2,3} 1 X 2 X 3 X conjunto V V V {1,2,3} V V F {1,2} V F V {1,3} V F F {1} F V V {2,3} F V F {2} F F V {3} F F F emptyset Pares ordenados (a,b) = {{a}, {a,b}} A ordem do par importa. (a,b) = (c,d) sse a =c e b =d Produto cartesiano A B = {(a,b) a A b B} Exemplo: A={1,2,3} B={x,y} A B = {(1, x), (1, y), (2, x), (2, y), (3, x), (3, y)}

12 de 14 14/3/2010 09:28 A B =? A B não é necessariamente igual a B A Quando são iguais? Tuplas (a,b,c)=((a,b),c) Assim (a,b,c) = (d,e, f ) a=d,b =e e c = f Produto cartesiano simultâneo de vários conjuntos A B C Uma relação nos conjuntos A 1, A 2,..., A n é um conjunto qualquer de tuplas de elementos de A 1, A 2,..., A n. Assim, n R A 1 A 2... A n = Ai i = 1 Quando n=2, a relação é binária. É comum haver relações binárias sobre o mesmo conjunto A. R A A Exemplo A relação < no conjunto {1,2,3} R 1 = {(1, 2), (1, 3), (2, 3)} Dizemos que 1R 1 2 é verdadeira e 2R 1 1 é falsa. A relação no mesmo conjunto R 2 = {(1, 2), (1, 3), (2, 3), (1, 1), (2, 2), (3, 3)} A relação "é o dobro de" no mesmo conjunto R 3 = {(2, 1)} Relação vazia R 4 = Relação conversa R C é o converso de uma relação R. R C = {(x, y) (y, x) R} Qual o converso de "<"?

13 de 14 14/3/2010 09:28 Funções Uma relação f em A B é uma função com domínio A e codomínio B (ou contra-domínio) se para cada x A existe um único y em B tl que (x, y) f. Em outros termos, (x, y) f e (x, z) f y =z Imagem ou amplitude de f: Imf = {y B x A, f (x) =y} Exemplo: função quadrado f : x x 2 ou f (x) =x 2 qual a cardinalidade de uma função? = a cardinalidade do domínio Composição de relações R 1 X Z, R 2 Z Y x(r 1 R 2 )y z Z, xr 1 z zr 2 y

14 de 14 14/3/2010 09:28 Correspondências Dados dois conjuntos A e B e uma função f :A B f é injetora, biunívoca ou "1 para 1" se nunca mapeia elementos diferentes para o mesmo lugar, ou seja: a qb f (a) qf (b) f é sobrejetora, "sobre" ou "onto" se atinge todos os elementos de B, ou seja: b B, a A f(a) =b em outras palavras, Imf =B f é bijetora ou uma correspondência se for injetora e sobrejetora Uma bijeção num conjunto finito pode ser asociada a uma permutação ou a uma rerrotulação. Exercício: Proponha contra-exemplos de funções injetoras e sobrejetoras. Função Inversa Seja f :a B Se f é injetora, contém uma inversa f 1. Se f for também sobrejetora, o domínio de f 1 é B. Se f C for uma função, existe a inversa f 1 e f 1 = f C