MATC94
Introdução as Linguagens Formais e Teoria da Computação
MATC94 faz parte da lista de disciplinas da área de Fundamentos e Teoria da Computação que aborda os aspectos teóricos fundamentais para a Ciência da Computação. Nesta disciplina, abordamos alguns dos resultados fundamentais sobre representabilidade de objetos matematicos através de procedimentos finitários. São tópicos concernentes a essa disciplina: linguagens formais, máquinas de estados finitas, modelos de computação, complexidade computacional, classes de problemas resolvíveis por meios computacionais. Deseja-se com essa disciplina desenvolver as seguintes habilidades:
- Manipular as linguagens e ferramentas da Matemática Discreta
- Manipular representações formais de objetos através de procedimentos computacionais
- Representar procedimentos computacionais através de manipulação formal de símbolos
- Representar problemas computacionais como problemas sobre linguagens
- Compreender o conceito de procedimento computacional as noções de complexidade associadas
- Estabelecer conexões entre sistemas de representação, computabilidade e complexidade computacuional
Programa
Ementa
Conceito de linguagem formal. Hierarquia de Chomsky. Linguagens regulares e Livres de Contexto. Expressões regulares. Autômatos finitos, autômatos de pilha. Gramáticas livres de contexto. Noções de análise léxica e sintática de linguagens de programação. Máquinas de Turing. Linguagens recursivamente enumeráveis e recursivas. Noções de decidibilidade. Exemplos de problemas decidíveis e indecidíveis relativos às linguagens da hierarquia de Chomsky. Máquina de Turing como conceito formal de algoritmo. O problema da Parada. A tese de Church. Noções de Teoria de complexidade.
Objetivos
Introduzir o conceito de linguagem formal e estudar as linguagens especificadas na hierarquia de Chomsky. Mostrar a importância teórica do estudo destas linguagens. Mostrar a utilização das mesmas e dos modelos relacionados em aplicações computacionais como, por exemplo, na modelagem de problemas e construção de compiladores. Fornecer uma noção de teoria de computabilidade e complexidade. Mostrar o limite da computação na solução de problemas.
Conteúdo Programático
- Motivação do estudo das linguagens formais
- Linguagens formais e informais
- A hierarquia de Chomsky
- Uma visão geral do uso e importância das linguagens e modelos estudados na hierarquia de Chomsky
- Especificação de linguagens de programação e compiladores
- Conceito de linguagem formal
- Alfabeto, palavra, fecho de Kleene, linguagem
- Linguagens regulares
- Expressões regulares
- Autômato finito determinista
- Minimização de autômatos finitos
- Autômato finito não determinista
- Autômato finito não determinista com λ-transições
- Equivalência entre autômatos finitos e expressões regulares
- Gramáticas regulares
- Linguagens livres de contexto
- Autômato de pilha
- Gramáticas livres de contexto (GLC)
- Derivações mais à direita e mais à esquerda
- Árvores de análise sintática
- Ambigüidade de GLC
- Simplificação de GLC
- Equivalência entre autômatos de pilha e GLC
- Análises léxica e sintática de linguagens de programação
- Linguagens recursivas e recursivamente enumeráveis
- Exemplo de problemas decidíveis relativos às linguagens estudadas
- Exemplos de problemas indecidíveis relativos às linguagens estudadas
- Problemas tratáveis e intratáveis
- Classes de problemas P, NP e NP-completo
Bibliografia
- INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. MICHAEL SIPSER. 2a EDIÇÃO NORTE AMERICANA. THOMSON
- Linguagens Formais: Teoria, Modelagem e Implementação. Marcus Vinícius Midena Ramos, João José Neto, Ítalo Santiago Vega. Editora Bookman. 2009
- Compiladores : princípios e práticas. LOUDEN, Kenneth C. São Paulo: Thomson Pioneira, 2004.
- Introdução à Teoria de Autômatos, Linguagens e Computação. John E. Hopcroft, Jeffery D. Ullman; Rajeev Motwani. Tradução da segunda edição americana. Editora Campus. 2003.
- Linguagens Formais e Autômatos. Paulo Blauth Menezes. Editora Sagra Luzzatto. Série Livros Didáticos – Instituto de Informática da UFRGS.
- ELEMENTOS DE TEORIA DA COMPUTAÇÃO (ORIGINAL: ELEMENTS OF THE THEORY OF COMPUTATION. PRENTICE-HALL, INC., 1998). HARRY R. LEWIS, CHRISTOS H. PAPADIMITRIOU. EDITORA BOOKMAN.
- Machines, Languages and Computation. Peter J. Denning; Jack B. Dennis; Joseph E. Qualitz. Prentice-Hall. 1978.
- Compilers: Principles, Techniques, and Tools. Alfred V., Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman. Addison Wesley; 2nd edition, 2008.