A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aspectos Teóricos da Computação

Apresentações semelhantes


Apresentação em tema: "Aspectos Teóricos da Computação"— Transcrição da apresentação:

1 Aspectos Teóricos da Computação
Prof. Luiz Fernando R B Corrêa

2 O Professor Mestre em Engenharia de Software – CESAR.EDU
Especialista em Planejamento e Gestão Organizacional – FCAP/UPE Especialista em TI – CIN/UFPE Graduado em Ciência da Computação - UNICAP

3 Durante as aulas Não conversar Participar das discussões e exercícios
Celulares desligados ou no silencioso (exceções) Pontualidade Assiduidade

4 Faltas Máximo 25% das aulas
Justificativa até a aula seguinte ou 7 dias úteis. O que ocorrer primeiro Depois do prazo de justificativa de faltas, só com a secretaria/coordenação

5 Chamada No fim de cada aula

6 Cargas Horárias Semanal: 3 horas-aula Semestral: 66 horas-aula

7 Horário Terças-feiras Primeira Aula: 19:10h - 20:25h
Intervalo: 20:25h – 20:40h Segunda Aula: 20:40h - 21:55h

8 Ementa Elementos de linguagens formais, cadeias, alfabetos, linguagens, gramáticas e reconhecedores. Hierarquia de Chomsky. Expressões regulares. Autômatos finitos determinísticos e não determinísticos.

9 Objetivos Gerais Ao término desta disciplina o aluno deverá conhecer:
Tipos de linguagens, as gramáticas que as geram e os autômatos que as reconhecem. Visando a especificação / implementação de linguagens de programação.

10 Objetivos Específicos
Fornecer ao aluno subsídios para que o mesmo possa definir linguagens de programação, isto é, sua sintaxe e semântica, através do estudo das gramáticas formais. De tal forma que o mesmo passe a conhecer o processo de especificação e implementação de linguagens de programação, a partir do estudo dos conceitos, modelos, técnicas e ferramentas que compõem a Teoria das Linguagens Formais.

11 Conteúdo Programático
Fundamentos Matemáticos Tipos de relações em conjuntos Fecho de uma relação Grafos bidirecionais. Conceitos Básicos de Linguagens Alfabetos Palavras sobre um alfabeto Linguagens Gramática Irrestrita: definição, regras de produção e derivação.

12 Conteúdo Programático
Gramática Sensível ao Contexto. Gramáticas Livres de Contexto Linguagens Livres de Contexto. Árvores de derivação Ambigüidade.

13 Conteúdo Programático
Linguagens Regulares Autômatos finitos determinísticos e não-determinísticos Expressões regulares Técnicas para identificar e descrever linguagens regulares Técnicas para mostrar que uma linguagem não é regular Propriedades de tais linguagens.

14 Estratégia de Trabalho
Aulas expositivas seguidas de desenvolvimento de exercícios práticos. Lista de exercícios/projetos para serem resolvidas fora da sala de aula para fixação dos assuntos abordados nas aulas expositivas.

15 Avaliação Média das provas bimestrais com a nota das listas de exercício/projetos. O conteúdo das provas será baseado no que foi visto em sala de aula.

16 Bibliografia Básica LEWIS, Harry R. & PAPADIMITRIOU, Christos H. Elementos de Teoria da Computação. 2.ed. Porto Alegre, Bookman, 2000. MENEZES, Paulo Blauth. Linguagens formais e autômatos. 2.ed. Porto Alegre, Sagra Luzzatto, p. HOPCROFT, JOHN E.; ULLMAN, Jeffrei D.; MOTWANI, Rajeev; Introdução À Teoria de Autômatos, Linguagens e Computação; 2002; Ed Campus.

17 Bibliografia Complementar
DIVERIO, T. A. E Menezes, P.B. Teoria da Computação Máquinas Universais e Computabilidade, Série Livros Didáticos Número 5, Instituto de Informática, da UFRGS, Editora Sagra Luzzatto, 1a edição, 1999. BRAINERD, W. S.; Landweber, L. H. Theory of computation. New York: John Wiley & Sons, 1974. SIPSER, Michael; Introdução à Teoria da Computação; 2007; Ed. Thomson Pioneira. LEWIS, HARRY ; PAPADIMITRIOU, Christos H.; Elementos de Teoria da Computação; 2a Ed 2004; Ed BOOKMAN COMPANHIA. BLAUTH, Paulo; HAPULER, Edward Hermann; Teoria das Categorias para Ciência da Computação.

18 Bibliografia Suporte Wikipedia: http://www.wikipedia.org
Scribd:

19 Aluno Nome Expectativa Trabalha? Com que? Programa? Inglês? Período
Já pagou a disciplina de Grafos? Já pagou a disciplina de Lógica?

20 O que é? Computação WordNet Houaiss
the procedure of calculating; determining something by mathematical or logical methods problem solving that involves numbers or quantities Houaiss cômputo, cálculo, contagem; operação matemática ou lógica realizada por regras práticas preestabelecidas

21 O que é? Computação Wikipedia
Solução de um problema ou, formalmente, o cálculo de uma função, através de um algoritmo

22 O que é? Ciência da Computação
Sabha conhecimento sistematizado relativo à computação O estudo das bases e modelos que fundamentam o funcionamento de processamentos computacionais.

23 O que é? Teoria da Computação
Sub-campo da ciência da computação (CC) e matemática, que busca determinar quais problemas podem ser computados em um dado modelo de computação. Fundamentação teórica para a CC Tratamento matemático da CC

24 O que é? Teoria da Computação: Contextualização
Questões Centrais Quais as capacidades e limitações fundamentais dos computadores? O que pode e o que não pode (problema) ser resolvido por computadores? O que faz alguns problemas serem computacionalmente mais difíceis que outros?

25 O que é? Teoria da Computação: Contextualização
Áreas Centrais Teoria dos Autômatos definição e propriedades de modelos matemáticos de computação Teoria da Computabilidade tese de Church-Turing (algoritmos), decidibilidade e indecidibilidade Teoria da Complexidade Computacional classificação de problemas como fáceis ou difíceis (polinomiais x exponenciais).

26 Tipos de Problemas Não-Tratáveis: Não existe algoritmo que resolva o problema. Tratáveis: Existe um algoritmo que resolve o problema.

27 Como começou ? Com as perguntas: COMO ? (as linguagens são definidas)
Estudo de gramáticas de Noam Chomsky Fonte: HARA, 2009

28 Como começou ? Continuação
O QUE ? (o que conseguimos computar? o que é um algoritmo?) O algoritmo deve ser completo, finito e determinístico. completo: sempre produz um resultado finito: tem uma seqüência finita de instruções determinístico: sempre produz o mesmo resultado para a mesma entrada

29 Como começou ? Continuação
O QUE ? (o que conseguimos computar? o que é um algoritmo?) necessidade de um modelo formal e abstrato de computação Exemplo: funções recursivas, cálculo lambda, máquinas RAM, máquinas de Turing (provado que são todos equivalentes)

30 Como começou ? Continuação
O QUE ? (o que conseguimos computar? o que é um algoritmo?) Hipótese de Church-Turing: um problema tem uma solução algorítmica se, e somente se, pode ser resolvido por um dos sistemas computacionais mencionados na transparência anterior

31 Como começou ? Continuação
O QUE ? (o que conseguimos computar? o que é um algoritmo?) Problemas com solução computacional ou sem solução computacional Exemplo de problemas sem solução: Determinar se um programa termina para todas as entradas possíveis Determinar se dois programas computam a mesma função

32 Como começou ? Continuação
O QUE ? (o que conseguimos computar? o que é um algoritmo?) Um Modelo de Computação: Máquina Abstrata. Deve capturar aspectos relevantes O conj. de símb. para representar dados é finito (fin). Cada dado é representado de forma fin. A ação a ser executada em cada momento é determinada com base no dado que está sendo observado e no estado interno. Cada ação é executada mecanicamente, em tempo fin. O núm de possíveis estados internos distintos é fin.

33 Como começou ? Continuação
O QUE ? (o que conseguimos computar? o que é um algoritmo?) Um Modelo de Computação: Máquina Abstrata. E abstrair aspectos irrelevantes A velocidade de execução. A capacidade da memória.

34 Como começou ? Continuação
O QUE ? (o que conseguimos computar? o que é um algoritmo?) Um Modelo de Computação Deve ser tão simples quanto possível Conj. de símbolos para representar dados: {0; 1}. Apenas 1 símbolo é observado de cada vez. Uma ação consiste simplesmente em: ler um símbolo Verificar o estado atual mudar o estado interno mudar a posição de leitura do próximo símbolo Um estado interno pode ser um estado de parada.

35 Como começou ? QUANTO CUSTA? (computar)
problemas tratáveis ou intratáveis Ex: intratáveis (tem solução com recursos ilimitados): computar todas as possíveis jogadas de xadrez com 1000 movimentos

36 Histórico/Evolução O que os computadores podem calcular? (~1930) ~1935
Resposta necessitava de um modelo formal de computabilidade ~1935 Kurt Göedel : funções μ-recursivas Alonso Church: λ-Calculus Alan Turing: Máquina de Turing ~ Baseado nessas e em outras idéias foram construídos os primeiros computadores Esta questão tem suas origens na década de 1930. A resposta requer um modelo formal de computabilidade. Primeiros modelos de computabilidade (~1935): Kurt Göedel – funções -recursivas Alonso Church – -Calculus Alan Turing – Máquina de Turing Essas idéias levaram à construção dos primeiros computadores (~1940). 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. Diversos modelos diferentes da computação foram propostos pelos primeiros pesquisadores. Um modelo, conhecido como Máquina de Turing, propunha a construção de uma máquina universal, capaz de operar com uma sequência de instruções e dados entremeados em uma fita de comprimento infinito; a máquina poderia operar em um ponto da fita de cada vez utilizando um cabeçote de leitura e escrita, executando assim a programação que lhe for passada. Outro modelo, se baseia em funções recursivas compostas para operar diretamente sobre os números. Uma abordagem similar é o cálculo lambda. Outra classe de abordagens trabalha com regras gramaticais operando sobre cadeias de caracteres, como é o caso dos cadeias de Markov e dos sistemas de Post. Todos os formalismos propostos acima 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. Ainda em termos teóricos, os modelos propostos são equivalentes aos computadores eletrônicos, desde que não hajam restrições de memória envolvidas. Na verdade, acredita-se que todas as formalizações teoricamente possíveis para o conceito de algoritmo são equivalentes em poder a uma máquina de Turing; esta é a tese de Church-Turing. As questões relativas à possibilidade de realizar certos tipos de computação em determinados tipos de máquina (ou formalismo teórico) são investigadas pela teoria da computabilidade. A teoria da computação estuda os modelos de computação genéricos, assim como os limites da computação: Quais problemas jamais poderão ser resolvidos por um computador, independente da sua velocidade ou memória? (Ver: Problema da parada, Problema da Correspondência de Post.) Quais problemas podem ser resolvidos por um computador, mas requerem um período tão extenso de tempo para completar a ponto de tornar a solucão impraticável? (Ver: Aritmética de Presburger.) Em que situações pode ser mais difícil resolver um problema do que verificar cada uma das soluções manualmente? (Ver Classes P e NP). Em geral, as questões relativas aos requerimentos de tempo ou espaço (memória, em particular) de problemas específicos são investigadas pela teoria da complexidade computacional. Além dos modelos genéricos de computação, alguns modelos computacionais mais simples são úteis para aplicações mais restritas. Expressões regulares, são por exemplo utilizadas para especificar padrões de cadeias de caracteres, sendo populares em aplicações UNIX e em algumas linguages de programação, como Perl e Python. Outro formalismo matematicamente equivalente às expressões regulares são os autômatos finitos, que são utilizados em desenho de circuitos e em alguns sistemas de resolução de problemas. As gramáticas livres de contexto são utilizadas para especificar a sintaxe das linguagens de programação; um formalismo equivalente, são os autômatos com pilha, ou pushdown automata. As funções recursivas primitivas formam uma subclasse das funções recursivas. Modelos de computação diferentes podem realizar tarefas distintas. Uma forma de estudar o poder de um modelo computacional é estudar a classe das linguagens formais que o modelo pode gerar; o resultado é a hierarquia de Chomsky das linguagens. As tabelas abaixo mostram algumas das classes de problemas (ou linguagens, ou gramáticas) que são consideradas em teoria da computabilidade (azul) e em teoria da complexidade (vermelho). Se a classe X é um subconjunto propriamente contido em Y, então X é mostrado abaixo de Y, conectados por um linha escura. Se X é um subconjunto, mas não é sabido se os conjuntos são iguais ou não, então a linha que os conecta será mais clara e pontilhada.

37 Exemplos de Aplicação Análise léxica e análise sintática de linguagens de programação Modelagem de circuitos lógicos ou redes lógicas Modelagem de sistemas biológicos

38 Sintaxe e Semântica Linguagens Formais Sintaxe e Semântica
problemas sintáticos das linguagens Sintaxe e Semântica

39 Sintaxe e Semântica Historicamente, o problema sintático
Mais simples que o semântico Reconhecido/tratado antes do problema semântico

40 Sintaxe e Semântica Conseqüência
Maior ênfase à sintaxe Criando a impressão que as questões relativas às resumiam-se às questões da sintaxe Teoria da sintaxe possui construções matemáticas Bem definidas e universalmente reconhecidas Exemplo: Gramáticas de Chomsky

41 Sintaxe e Semântica Linguagem de programação (ou qualquer modelo matemático) pode ser vista como uma entidade livre, sem qualquer significado associado juntamente com uma interpretação do seu significado

42 Sintaxe e Semântica Sintaxe Semântica
Trata das propriedades livres da linguagem Ex: verificação gramatical de programas Semântica objetiva dar uma interpretação para a linguagem Ex: significado ou valor para um determinado programa

43 Sintaxe e Semântica Ou seja, a sintaxe: Para problemas reais
manipula símbolos Não considera os seus significados Para problemas reais Necessário interpretar semanticamente os símbolos exemplo: estes símbolos representam os inteiros

44 Sintaxe e Semântica Sintaticamente "errado“
não existe tal noção de programa simplesmente não é um programa da linguagem Sintaticamente válido ("correto") pode não ser o programa que o programador esperava escrever

45 Sintaxe e Semântica Programa "correto" ou "errado“
se o mesmo modela adequadamente o comportamento desejado Limites entre a sintaxe e a semântica nem sempre são claros exemplo: ocorrência de um nome em um programa pode ser tratado facilmente com um problema sintático ou semântico entretanto, em linguagens artificiais distinção entre sintaxe e semântica é (em geral) óbvia para a maioria dos problemas relevantes

46 Sintaxe e Semântica Análise Léxica tipo especial de análise sintática
centrada nas componentes básicas da linguagem portanto, também é ênfase das Linguagens Formais Processo de converter uma sequência de caracteres em uma sequência de tokens (símbolos léxicos) Verifica determinado alfabeto Vem antes da análise sintática propriamente dita

47 Ferramentas JFLAP SCTMF Visual Automata Simulator
SCTMF Visual Automata Simulator

48 Instalação do JFlap Ferramenta visual usada para criar e simular diversos tipos de autômatos, e converter diferentes representações de linguagens. JFLAP JAVA Formal Language and Automata Package -

49 Instalação do JFlap JFLAP 7.0 Tutorial:

50 Referências Aula WordNet - http://wordnet.princeton.edu/
Dicionário Houaiss da Lingua Portuguesa - Wikipedia – CI059 - Introdução a Teoria da Computação - Segundo Semestre de Profa. Carmem Hara . Teoria da Computação. Prof. Fabiano Sabha. Linguagens Formais e Automatos. Prof. Eduardo Araujo Oliveira.


Carregar ppt "Aspectos Teóricos da Computação"

Apresentações semelhantes


Anúncios Google