scc-0505 introdução à teoria da computaçãowiki.icmc.usp.br/images/1/1a/scc0505cap0.pdf ·...

21
Introdução à Teoria da Computação SCC-0505 Introdução à Teoria da Computação João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis/ [email protected] 2010 João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Upload: nguyenphuc

Post on 04-Feb-2018

222 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da Computação

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

João Luís Garcia Rosa1

1Departamento de Ciências de ComputaçãoInstituto de Ciências Matemáticas e de Computação

Universidade de São Paulo - São Carloshttp://www.icmc.usp.br/~joaoluis/

[email protected]

2010João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 2: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da Computação

Sumário

1 Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 3: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

Sumário

1 Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 4: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

A disciplina: Teoria da Computação

A disciplina é composta de duas partes centrais da Teoriada Computação que têm o objetivo de tentar responderquais são as capacidades e as limitações doscomputadores:

1 Teoria das Linguagens Formais e dos Autômatos2 Teoria da Computabilidade

A primeira parte trata das definições e propriedades demodelos matemáticos de computação que têm um papelfundamental em várias áreas da Computação como oprocessamento de textos, compiladores, definição delinguagens de programação, dentre outras.Além desse lado prático, do ponto de vista teórico, para sedefinir o que é ou não computável é necessário utilizar ummodelo matemático que represente o que se entende porcomputação.

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 5: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

A disciplina: Teoria da Computação

A segunda parte do curso é centralizada na Tese deChurch-Turing e nas evidências dela.Church usou um sistema chamado cálculo-λ para definiralgoritmo e Turing fez o mesmo com o uso da Máquina deTuring (MT).As duas definições foram mostradas serem equivalentes ea conexão entre a noção informal de algoritmo (solúvelefetivamente) e a definição precisa por uma MT foichamada Tese de Church-Turing: se um problemaalgorítmico não pode ser resolvido por uma máquina deTuring, então não existe nenhuma solução computávelpara ele.

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 6: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

A disciplina: Teoria da Computação

Vários outros modelos de computação (por exemplo, asfunções recursivas de Kleene, linguagens formais, RAMs,algoritmos de Markov, linguagens de programação, amáquina de Post) foram propostos e provados terem poderequivalente à máquina de Turing.Assim, estudando qualquer um destes modelos, porexemplo um modelo simples como a máquina de Turing, épossível aprender sobre as limitações teóricas de todos oscomputadores.

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 7: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

A disciplina: Teoria da Computação

Nem todos os problemas algorítmicos, que podem serresolvidos em princípio, podem ser resolvidos na prática:os recursos computacionais requeridos (tempo ou espaço)podem ser proibitivos.Esta observação motiva o estudo da complexidadecomputacional que não será tratada nesta disciplina.A meta principal da teoria da complexidade é aclassificação de problemas de acordo com a dificuldadecomputacional.A meta da teoria da computabilidade é a classificação deproblemas em solúveis, parcialmente solúveis e insolúveise se forem problemas de decisão, em problemasdecidíveis, parcialmente decidíveis e indecidíveis.

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 8: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

Sumário

1 Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 9: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

Objetivos

Dar ao aluno noção formal de algoritmo, computabilidadee do problema de decisão, de modo a deixá-lo conscientedas limitações da ciência da computação: Ineficiência eIntratabilidade; e Problemas Não Computáveis eIndecidíveis.Aparelhá-lo com as ferramentas de modo a habilitá-lo amelhor enfrentar a solução de problemas com o auxílio docomputador via Teoria das Linguagens Formais e dosAutômatos.

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 10: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

Programa

1 Linguagens Regulares e Autômatos Finitos1 A Primeira Linguagem2 Gramáticas e Linguagens3 Gramática Linear à Direita4 Hierarquia de Chomsky5 Expressão Regular6 Autômatos Finitos Determinísticos e Não-Determinísticos

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 11: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

Programa

2 Linguagens Livres de Contexto e Autômatos de Pilha1 Linguagens Livres de Contexto2 Árvores de derivação3 Ambiguidade nas Gramáticas Livres de Contexto4 Forma normal de Greibach5 Autômatos de Pilha

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 12: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

Programa

3 Linguagens Sensíveis ao Contexto e Autômatos LimitadosLinearmente

1 Gramáticas e Linguagens Sensíveis ao Contexto2 O Lema da Cadeia Vazia3 Máquinas de Turing4 Autômatos Limitados Linearmente5 O Lema do Alfabeto

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 13: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

Programa

4 Máquinas de Turing e a Teoria da Computabilidade1 Algoritmo2 Funções numéricas3 Funções Turing-computáveis4 A Tese de Church-Turing5 A Máquina de Turing Universal6 Máquinas de Turing Não-determinísticas7 A Linguagem de diagonalização8 O Problema da Parada e a Indecidibilidade9 Problemas indecidíveis

10 Linguagens recursivas

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 14: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

Aulas

AulasQuintas: 21h00-22h40 - Sala 5-004

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 15: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

Sumário

1 Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 16: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

Avaliação: Provas

2 provas:P1 = 22/4P2 = 24/6

Não haverá prova substitutiva.

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 17: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

Avaliação: Trabalhos

2 Trabalhos Práticos em grupo T1 e T2:Entrega do Trabalho T1: 23/4Entrega do Trabalho T2: 25/6

Os Trabalhos Práticos estão relacionados com aimplementação de um autômato.Os trabalhos serão desenvolvidos por uma equipe de 3alunos (no máximo).

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 18: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

Avaliação: Média Final

MP = Média Aritmética das ProvasMT = Média Aritmética dos TrabalhosMF = Média Final:

Se MP ≥ 5,0 e MT ≥ 5,0então MF = (7*MP + 3*MT)/10senão MF = (9*MP + 1*MT)/10

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 19: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Introdução à Teoria da ComputaçãoA disciplina SCC-0505Objetivos e ProgramaAvaliação

Avaliação: Recuperação

Norma de Recuperação1 prova de recuperação PRSó terão direito à recuperação os alunos com3,0 ≤ MF < 5,0 e frequência ≥ 70%Realização: Até a primeira semana de aulas do semestreposterior.Critério de Aprovação:

Média = MF + (PR/2, 5), se PR ≥ 7, 5; ouMédia = Max{MF , PR}, se PR < 5, 0; ouMédia = 5, 0, se 5, 0 ≤ PR < 7, 5.

30/4: Data máxima para trancamento de matrícula emdisciplinas.

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 20: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Apêndice Bibliografia

Bibliografia I

[1] Hopcroft, J. E., Motwani, R., Ullman, J. D.Introduction to Automata Theory, Languages, andComputation. 3rd . edition.Addison-Wesley Publishing Company, 2007.

[2] Hopcroft, J. E., Ullman, J. D. e Motwani, R.Introdução à Teoria de Autômatos, Linguagens eComputação.Tradução da segunda edição americana. Editora Campus,2003.

[3] Horowitz, E., Sahni, S., Rajasekaran, S.Computer Algorithms.Computer Science Press, 1998.

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação

Page 21: SCC-0505 Introdução à Teoria da Computaçãowiki.icmc.usp.br/images/1/1a/SCC0505Cap0.pdf · Introdução à Teoria da Computação A disciplina SCC-0505 Objetivos e Programa Avaliação

Apêndice Bibliografia

Bibliografia II

[4] JFLAP Version 6.0.Ferramenta para Diagrama de Estados.www.jflap.org.

[5] Moll, R. N., Arbib, M. A., and Kfoury, A. J.An Introduction to Formal Language Theory.Springer-Verlag, 1988.

[6] Rosa, J. L. G.Linguagens Formais e Autômatos.Editora LTC, Rio de Janeiro, 2010.

[7] Sipser, M.Introduction to the Theory of Computation.Second Edition, Thomson, 2006.

João Luís Garcia Rosa, 2010 SCC-0505 - Introdução à Teoria da Computação