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

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

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

1 INTRODUÇÃO E CONCEITOS BÁSICOS

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

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

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?

Linguagens Formais e Autômatos P. Blauth Menezes

Teoria da Computação. Unidade 1 Conceitos Básicos. Referência Teoria da Computação (Divério, 2000)

IBM1088 Linguagens Formais e Teoria da

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

Linguagens Formais e Autômatos. Conceitos Básicos Prof. Anderson Belgamo

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

Alfabeto, Cadeias, Operações e Linguagens

LINGUAGENS FORMAIS E AUTÔMATOS

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

Linguagens Formais e Problemas de Decisão

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

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

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

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

Teoria da Computação

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

IBM1088 Linguagens Formais e Teoria da Computação

Modelos de Computação

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

Teoria da Computação. Computabilidade e complexidade computacional

Teoria da Computação

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

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

Problema A Codificação Símbolos Dado um inteiro n, n é N representação de inteiros 0,1,...,b - 1 numa base b Dado um grafo G, G é conexo?

SCC-5832 Teoria da Computação

Resolução Exe 2.12 Monolítico Recursivo

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

Linguagens Formais e Autômatos. Alfabetos, Palavras, Linguagens e Gramáticas

Lista de exercícios 1

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

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

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

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

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

SCC Teoria da Computação e Linguagens Formais

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

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

Linguagens Formais e Autômatos P. Blauth Menezes

Expressões e Gramáticas Regulares e Autómatos Finitos

Introdução Maquinas de Turing universais O problema da parada. Indecidibilidade. Rodrigo Gabriel Ferreira Soares DEINFO - UFRPE.

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

Histórico e motivação

Teoria da Computação (BBC244)

Linguagens Formais e Autômatos. Tiago Alves de Oliveira

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

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

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

Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

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

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

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

Linguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior.

Linguagens Formais - Preliminares

Linguagens Formais e Autômatos P. Blauth Menezes

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

LINGUAGENS FORMAIS E AUTÔMATOS

Conceitos básicos de Teoria da Computação

Linguagens Formais e Autômatos P. Blauth Menezes

Teoria da Computação. Computabilidade

Turing to Norma, uma ferramenta para auxiliar o estudo da equivalência entre Máquina de Turing e Máquina Norma

Linguagens Regulares. Prof. Daniel Oliveira

Teoria da Computação. Aula 01

Variedades Adicionais das Máquinas de Turing

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

INE5317 Linguagens Formais e Compiladores. AULA 4: Gramáticas

Prof. Adriano Maranhão COMPILADORES

Teoria da Computação

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

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

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

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

Linguagens Formais e Autômatos (LFA)

O que é a Teoria em Ciência da Computação. Introdução à Ciência da Computação Mário S. Alvim

Linguagens Formais e Autômatos

COMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang

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

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

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

Computabilidade e Complexidade (ENG10014)

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

MAC5722 Complexidade Computacional

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 1

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

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

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

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

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

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

Lista de Exercícios CT-200 Primeiro Bimestre Carlos Henrique Quartucci Forster Estagiário: Wesley Telles. Revisão de Teoria de Conjuntos

Linguagens Formais e Autômatos P. Blauth Menezes

Transcrição:

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

Nome: Teoria da Computação Créditos: 4 60 horas Período: 2010.2 Horário: segundas e quintas das 20:40 às 22:20 Professora: Danielle Simone S. Casillo Página: www.ufersa.edu.br Sigaa: www.sig.ufersa.edu.br Contato: danielle@ufersa.edu.br Teoria da Computação - Aula 01 2

Os alunos serão preparados para o estudo e aprofundamento da semântica e lógica da computação do ponto de vista de computabilidade; observando as linguagens como modelos computacionais e examinando a sua expressividade. Teoria da Computação - Aula 01 3

Serão fornecidos os fundamentos matemáticos de dois importantes paradigmas de programação: lógica e funcional. No aspecto prático, orientar-se-á ao estudante no tratamento de problemas simples e na implementação das soluções com técnicas lógicas e funcionais. Teoria da Computação - Aula 01 4

Ensino: Aulas teóricas, estudos individuais e em grupo, resolução de exercícios. Avaliação: Provas escritas; Trabalhos realizados individualmente e/ou em grupo; Seminários. Data das avaliações: 16/09/2010-1ª avaliação 25/10/2010-2ª avaliação 18 a 25/11/2010 - Seminários 02/12/2010 Reposição 09/12/2010-4ª avaliação Teoria da Computação - Aula 01 5

Primeira Unidade: Introdução e Conceitos Básicos Programas Máquinas Computações e Funções Computadas Equivalência de Programas e Máquinas Verificação da Equivalência Forte de Programas Teoria da Computação - Aula 01 6

Segunda Unidade: Máquinas Universais Codificação de Conjuntos Estruturados Máquina de Registradores NORMA Máquina de Turing Máquina de Post Máquina com Pilhas Autômatos com Duas Pilhas Funções Recursivas Linguagem Lambda Teoria da Computação - Aula 01 7

Terceira Unidade: Seminários Teoria da Computação - Aula 01 8

BÁSICA: Notas de Aula Profª Danielle. Teoria da Computação Máquinas Universais e Computabilidade. Tiarajú Asmuz Diverio e Paulo Blauth Menezes. 2ª Edição. Ed. Bookman. 2008. COMPLEMENTAR: Introdução à Teoria da Computação. Michael Sipser. 2ª Edição. Ed. Thompson. 2007. Teoria da Computação - Aula 01 9

A importância da Teoria para a Prática é imensa! A teoria para esta ciência se faz necessário para iluminar o caminho dos cientistas da computação (práticos), dos engenheiros em computação, dos analistas de sistemas, em fim de todos os profissionais que usem a computação como objeto de estudo ou de trabalho. Mas antes de entender o que seria uma teoria para a ciência da computação vamos entender o que seria Ciência da Computação. Teoria da Computação - Aula 01 10

Computação: tudo o que um computador pode realizar. Mas o que é um computador? Hardware e tecnologia. Ex: calculadora, elevador, máquina de vender refrigerante, CD player, impressora,... A teoria nos fornece conceitos e princípios para nos ajudar entender a natureza geral da Ciência do Computador. Teoria da Computação - Aula 01 11

Definição: é o estudo dos algoritmos, suas aplicações e de sua implementação, na forma de software, bem como das estruturas matemáticas indispensáveis à formulação precisa dos conceitos fundamentais da teoria da computabilidade e da computação aplicada. Teoria da Computação - Aula 01 12

Antes de 1920: computador era um termo associado a pessoas que realizavam cálculos. Após 1920: a expressão máquina computacional começou a ser usada para referir-se a qualquer máquina que realize o trabalho de um profissional computador. O termo máquina computacional acabou perdendo espaço para o termo reduzido computador em 1940. Alan Turing, conhecido como pai da Ciência da Computação, inventou a Máquina de Turing, que posteriormente evoluiu para o computador moderno. Teoria da Computação - Aula 01 13

Ciência da computação tem tanto a ver com o computador como a Astronomia com o telescópio, a Biologia com o microscópio, ou a Química com os tubos de ensaio. A Ciência não estuda ferramentas, mas o que fazemos e o que descobrimos com elas. Edsger Dijkstra Teoria da Computação - Aula 01 14

O campo dessa disciplina inclui um vasto leque de tópicos especiais, desde projetos de máquinas até programação. Para estudar os princípios básicos da computação, construiremos modelos abstratos de computadores e computação, estes modelos contém as características importantes que são comuns tanto ao hardware quanto aosoftware. Teoria da Computação - Aula 01 15

Computação pode ser definida como a solução de um problema ou, formalmente, o cálculo de uma função, através de um algoritmo. Teoria da Computação - Aula 01 16

A área de TC (Teoria da Computação) procura fornecer fundamentos matemáticos rigorosos para as diversas áreas da computação. A TC introduz conceitos fundamentais que são desenvolvidos em outras áreas. A abordagem de reconhecimento de linguagens é a base de todo o estudo das Linguagens Formais, Semântica Formal, Compiladores, e todo o conjunto de disciplinas que tratam de Linguagens de programação. Teoria da Computação - Aula 01 17

A teoria da computação, um subcampo da ciência da computação e matemática, busca determinar quais problemas podem ser computados em um dado modelo de computação. Existem 3 áreas centrais da Teoria da Computação: Autômatos Computabilidade Complexidade Teoria da Computação - Aula 01 18

Estas áreas são interligadas pela seguinte questão: Quais são as capacidades e limitações fundamentais dos computadores? Para cada uma das três áreas autômatos, computabilidade e complexidade essa questão é interpretada diferentemente. Iremos definir estas três áreas em ordem reversa porque começando do final você pode entender melhor a razão para o início. Teoria da Computação - Aula 01 19

Teoria da Complexidade: Os problemas computacionais vem em diferentes variedades: alguns são fáceis e outros difíceis. Ex: Problema da ordenação Fácil Criptografia Difícil O que faz alguns problemas computacionalmente difíceis ou fáceis? Entender qual o aspecto do problema é a raiz da dificuldade; Encontrar soluções que se aproximam da solução perfeita; Alguns problemas são difíceis somente na situação do pior caso. Teoria da Computação - Aula 01 20

Teoria da Computabilidade: Classifica os problemas por meio da separação entre os que são solúveis e os que não o são. Ex: determinar se um enunciado matemático é verdadeiro ou falso. As teorias da computabilidade e complexidade estão intimamente relacionadas. Na teoria da complexidade, o objetivo é classificar os problemas como fáceis ou difíceis; Na teoria da computabilidade a classificação é feita por meio da classificação dos que são solúveis ou não. Teoria da Computação - Aula 01 21

Teoria dos Autômatos: Lida com as definições e propriedades de modelos matemáticos de computação. Autômatos finitos: usados em processamento de textos, compiladores e projeto dehardware. Gramática livre-do-contexto: usado em linguagem de programação, inteligência artificial. Teoria da Computação - Aula 01 22

A Teoria da Computação teve início nos primeiros anos do século XX, antes da invenção dos modernos computadores eletrônicos. Naquela época, os matemáticos estavam tentando descobrir quais problemas matemáticos poderiam ser resolvidos por um método simples, e quais não poderiam. O primeiro passo estava em definir o significado de um "método simples" para resolver o problema. Em outras palavras, eles precisavam de um modelo formal da computação. Teoria da Computação - Aula 01 23

Na década de 1920, computador era associado a pessoas que realizavam cálculos; O termo máquina computacional referia-se a qualquer máquina que realize cálculos; Os fundamentos matemáticos da ciência da computação moderna começaram a ser definidos por Gödel com seu Teorema da Incompletude, que mostra que existem limites no que pode ser provado ou desaprovado em um sistema formal. Teoria da Computação - Aula 01 24

Diversos modelos diferentes da computação foram propostos pelos primeiros pesquisadores. Máquina de Turing: propunha a construção de uma máquina universal, executando a programação que lhe for passada; Funções Recursivas: compostas para operar diretamente sobre os números; Cálculo-Lambda: similar às Funções Recursivas. Teoria da Computação - Aula 01 25

Todos estes formalismos são equivalentes em termos de poder computacional, ou seja, qualquer computação que possa ser realizada com um modelo pode ser realizada com qualquer um dos outros modelos. As questões relativas à possibilidade de realizar certos tipos de computação em determinados tipos de máquinas são estudadas pela Teoria da Computabilidade. Teoria da Computação - Aula 01 26

Alan Turing propôs, em 1936 um formalismo para representação de procedimentos efetivos. A intenção do modelo de Turing, denominado Máquina de Turing, foi simular, tanto quanto possível, as atitudes humanas relacionadas à computação. Foi o primeiro trabalho a identificar programas escritos para uma máquina computável. Teoria da Computação - Aula 01 27

Assim, define-se programa como sendo um procedimento efetivo, que permite descrever todos os procedimentos possíveis que podem ser executados em um computador. Teoria da Computação - Aula 01 28

Linguagem: é uma forma precisa de expressar problemas, permitindo um desenvolvimento formal adequado ao estudo da computabilidade. As definições que seguem são construídas usando como base a noção de símbolo ou caractere, que é uma entidade abstrata básica, não sendo definida formalmente. Letras e dígitos são exemplos de símbolos frequentemente usados. Teoria da Computação - Aula 01 29

Definição: Alfabeto É um conjunto finito de símbolos ou caracteres. Um conjunto infinito não é um alfabeto. O conjunto vazio é um alfabeto. Exemplo de alfabetos: {a, b, c}; conjunto vazio. Exemplo de conjuntos que não são alfabetos: Conjunto dos números naturais; {a, b, aa, ab, ba, bb, aaa,...}. Teoria da Computação - Aula 01 30

Cadeia de Símbolos, Palavra. É uma sequência de zero ou mais símbolos (do conjunto) justapostos. Uma Palavra é uma Cadeia de Símbolos Finita. Exemplo: abcb é uma palavra sobre o alfabeto {a, b, c}; Teoria da Computação - Aula 01 31

Uma cadeia sem símbolos é uma palavra válida. ε denota a cadeia vazia ou palavra vazia. O símbolo representa um alfabeto, então: * denota o conjunto de todas as palavras possíveis sobre ; + denota * - {ε} Exemplo: Se = {a, b}, então: + = {a, b, aa, ab, ba, bb, aaa,...} * = {ε, a, b, aa, ab, ba, bb, aaa,...} Teoria da Computação - Aula 01 32

Comprimento ou tamanho de uma palavra w, representado por w, é o número de símbolos que compõem a palavra. Exemplo: abcb = 4 ε = 0; Teoria da Computação - Aula 01 33

Prefixo e Sufixo Um Prefixo (respectivamente, Sufixo) de uma palavra é qualquer sequência inicial (respectivamente, final) de símbolos da palavra. Uma Subpalavra de uma palavra é qualquer sequência de símbolos contígua da palavra. Exemplo: Relativamente à palavra abcb, tem-se que: ε, a, ab, abc, abcb são os prefixos; ε, b, cb, bcb, abcb são os respectivos sufixos. Qualquer prefixo ou sufixo de uma palavra é uma subpalavra. Teoria da Computação - Aula 01 34

Linguagem formal é um conjunto de palavras sobre um alfabeto. Exemplo: Suponha o alfabeto ={a, b}. Então: O conjunto vazio e o conjunto formado pela palavra vazia são linguagens sobre. Obviamente, Ø { ε }. O conjunto de palíndromos (palavras que tem a mesma leitura da esquerda para a direita e viceversa) sobre é um exemplo de linguagem infinita. ε, a, b, aa, bb, aaa, aba, bab, bbb, aaaa,... Teoria da Computação - Aula 01 35

Concatenação de palavras associa a cada par de palavras uma palavra formada pela justaposição da primeira com a segunda. A operação de concatenação satisfaz às seguintes propriedades (suponha v, w, t palavras): Associatividade: v(wt) = (vw)t Elemento neutro à esquerda e à direita:εw = w = wε Teoria da Computação - Aula 01 36

Exemplo de concatenação de palavras: Suponha o alfabeto ={a, b}. Então, para as palavras v = baaaa e w = bb, tem-se que: vw = baaaabb vε = v = baaaa Teoria da Computação - Aula 01 37

A concatenação sucessiva de uma palavra é representada na forma de um expoente. w n em que n é o número de concatenações sucessivas Exemplo: Sejam w uma palavra e a um símbolo, então: w 3 = www w 1 = w a 5 = aaaaa a n = aaa...a (o símbolo a repetido n vezes) Teoria da Computação - Aula 01 38

Sequências e uplas Uma sequência de objetos é uma lista desses objetos na mesma ordem. Ex: (7, 21, 57) Em um conjunto a ordem não importa, mas em uma sequência sim. Portanto, (7, 21, 57) não é o mesmo que (57, 7, 21). Como os conjuntos, sequências podem ser finitas ou infinitas. As sequências finitas são chamadas de uplas. Ex: (7, 21, 57) é uma 3-upla (tripla). Uma 2-upla (dupla) é também chamada de par. Teoria da Computação - Aula 01 39

Conjuntos: Se A e B são dois conjuntos, o produto cartesiano ou produto cruzado de A e B, descrito como A x B, é o conjunto de todos os pares nos quais o primeiro elemento é um membro de A e o segundo é um membro de B. Ex: Se A = {1, 2} e B = {x, y, z} A x B = {(1, x), (1, y), (1, z), (2, x), (2, y), (2, z)} Se temos o produto cartesiano de um conjunto com si próprio, usamos a abreviação. Ex: Teoria da Computação - Aula 01 40

Funções e Relações Função: é um objeto que estabelece um relacionamento de entrada-saída. Ex: f ( a ) = b f é uma função cujo valor de saída é b quando o valor de entrada é a. O conjunto de entradas possíveis para uma função é chamado seu domínio e as saídas contradomínio. Ex: f : D C Teoria da Computação - Aula 01 41

1. Marque os conjuntos que são alfabetos: a) Conjunto dos números naturais [ ] b) Conjuntos dos números primos [ ] c) Conjunto das letras do alfabeto brasileiro [ ] d) Conjunto dos algarismos romanos [ ] e) Conjunto {a, b, c, d} [ ] f) Conjunto das partes de {a, b, c} [ ] g) Conjunto das vogais [ ] h) Conjunto das letras gregas [ ] Teoria da Computação - Aula 01 42

2. Dê os possíveis prefixos e sufixos de cada uma das seguintes palavras: a) teoria b) aaa c) AbccBa d) UFERSA e) abcabc Teoria da Computação - Aula 01 43