Você está na página 1de 29

Aquecendo

os motores
1

E D U A R D O F R E I R E N A K A M U R A
I n s / t u t o d e C o m p u t a o
U n i v e r s i d a d e F e d e r a l d o A m a z o n a s
n a k a m u r a @ i c o m p . u f a m . e d u . b r

1Este

material utiliza contedo das aulas fornecidas pelo Prof. Vilar da Cmara Neto (disponvel em http://http://prof.vilarneto.com).
material utiliza contedo das aulas fornecidas pelo Prof. Marco Cristo (marco.cristo@gmail.com).
3Permisso de uso fornecida pelos autores.
4As figuras utilizadas neste material so de domnio pblico, disponveis na Internet sem informaes de direitos autorais.
2Este

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Plano de Ensino
2


O Q U E O C U R S O ?
C O M O S E R O C U R S O ?

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Iden6cao
3

Curso
u

Cincia da Computao

Disciplina
u

Linguagens Formais e Autmatos

Cdigo
u

ICC 040

Semestre
u

2015 / 02

Linguagens Formais e Autmatos

Carga Horria
u

60h

Crditos
u

4/4/0 (total / terico / pr6co)

Pr-requisito
u

IEC 010 - Matem6ca Discreta

Turma
u

CB01

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Horrio
4

Seg

Ter

Qua

Qui

Aulas

8-10

8-10

Atendimento

10-12

10-12

Linguagens Formais e Autmatos

Sex

Sb

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Ementa
5



Linguagens, Gram/cas, Autmatos, Mquinas de Turing,
Hierarquia de Chomski, Semn/ca de Linguagens de Programao.

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Obje6vo Geral
6



Fornecer conhecimentos para compreender e aplicar tpicos de
teoria da computao. Fornecer uma contextualizao matem/ca
da rea da computao, fornecendo uma perspec/va histrica dos
fundamentos matem/cos da rea.

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Obje6vos Especcos
7


Desenvolver e avaliar Autmatos Finitos Determins6cos e no

Determins6cos como ferramenta computacional

Desenvolver e avaliar Autmatos de Pilha como ferramenta

computacional

Desenvolver e avaliar Mquinas de Turing como ferramenta

computacional

Reconhecer e especicar Linguagens & Gram6cas formais e

compreender a Hierarquia de Chomski

Entender e aplicar a teoria de Computabilidade


Ser capaz de calcular a complexidade de algoritmos simples
Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Metodologia
8

Aulas Exposi6vas
Resoluo de Exerccios
Listas de Exerccios
Provas

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Avaliao
9

Quatro Provas Parciais Escritas (P1, P2, P3, P4)


Prova Final (PF)

Mdia parcial (MP)

P1+ P2 + P3+ P4
MP =
4

Mdia nal (MF)

2 MP + PF
MF =
3

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Trocando em midos
10


E N T E N D A O Q U E O C U R S O

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Fundamentos de teoria da computao


11

A disciplina est dividida em 3 grandes partes


u

Linguagens formais e autmatos

Tratada descrio de linguagens formais e da construo de mquinas para


process-las

Exemplos: Compiladores, processadores de texto, protocolos de comunicao, jogos

Mquinas universais e computabilidade

Estuda problemas que podem ser resolvidos por um computador, mesmo que este
tenha memria e velocidade innitas

Complexidade de algoritmos

Estuda a ecincia dos algoritmos

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Linguagens formais
12

*hjp://vidadeprogramador.com.br/wp-content/uploads/2011/03/6rinha25.png

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Linguagens formais
13

Ns usamos linguagem

natural

Computadores esperam que

os comandos sejam dados


de maneira simples e direta

leia um valor
imprima um valor
se uma condio ento execute um comando
enquanto uma condio for verdadeira faa tal coisa

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Linguagens formais
14

Denidas por meio de regras

sem ambiguidade

programa Lista de comandos


"leia
$
$imprima
comando #
$ faa
$%
leia "leia" varivel
imprima "imprima" expresso
faa "faa" varivel " " expresso
varivel
expresso

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Linguagens formais
15

Com o conjunto de regras, possvel analisar um programa e

quebr-lo em seus blocos

leia!x
leia!y

comando!leia,"varivel"x
comando!leia,"varivel"y

faa!z x + y comando!faa,"varivel"z, "expresso"x + y, "atribuio"


imprima!z

Linguagens Formais e Autmatos

comando!imprima,"expresso"z

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Linguagens formais
16

... ou detectar erros


leia x
leia y
faa z imprima

O comando faa requer uma expresso, mas foi encontrado o comando imprima

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Outro exemplo
17

#
%
%
%
%%
expresso $
%
%
%
%
%&

literal
expresso "+" expresso
expresso "-" expresso

literal uma sequncia de 0 a 9,


possivelmente com um ponto decimal no
meio

expresso "" expresso


expresso "/" expresso
"-" expresso
"(" expresso ")"

Linguagens Formais e Autmatos

Como formalizar esta denio?

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Questes comuns em linguagens formais


18

Como formalizar uma linguagem?


u

Como denir formalmente um


conjunto de regras?
Como denir sequncias de dgitos,
letras, repe6es, etc.?

possvel descobrir se as regras

possuem ambiguidade?

Existe uma classicao para as

linguagens? H linguagens mais


simples ou mais complexas?

Como construir reconhecedores

para as linguagens? Existem


reconhecedores ecientes para as
linguagens mais complexas?

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Mquinas universais e computabilidade


19

Modelos matem6cos que

representam computadores

No se preocupam com a

ecincia dos programas,


apenas com o que podem ou
no fazer

Qual o melhor computador

concebvel?
u
u

Velocidade innita
Memria innita

O que ele pode fazer? H

problemas que ele no pode


resolver?

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Computabilidade
20

Computabilidade no se

preocupa com a ecincia!


Se alguma coisa pode ser feita
por um computador, ento
depois descobrimos como fazer
melhor!
u Se alguma coisa no pode ser
feita, ento no adianta gastar
tempo...
u

Pode ser feita ou no?


computvel?
Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Ilustrando trs problemas


21

Busca

Caixeiro Viajante

Correspondncia de Post

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Problema de busca
22

Encontre um nmero em uma lista de nmeros


u

Entradas: 45

12

35

44

02

17

45

66

Sada: posio 5

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Problema do caixeiro viajante


23

Dados
Uma lista de cidades
u As distncias entre elas
u

Problema
u

Menor caminho visitando cada


cidade exatamente uma vez?

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Problema do caixeiro viajante


24

Quatro cidades

n! = 4! = 4 x 3 x 2 x 1 = 24 rotas possveis

B
A

B

C

D

C
D
B
D
B
C

D
C
D
B
C
B

B

A

D

A
D
B
D
B
A

D
A
D
B
A
B

D
C

Linguagens Formais e Autmatos

A

C

D

C
D
A
D
A
C

D
C
D
A
C
A

B

C

A

C
A
B
A
B
C

A
C
A
B
C
B

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Problema do caixeiro viajante


25

Trinta cidades
30 cidades = 30! = 2,65 x 1032
u Mquina capaz de 1 trilho de adies / segundo:
u

252.333.390.232.297 anos

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Problema da correspondncia de Post


26

Imagine um domin com

duas metades m1 e m2

m1 e m2 so as palavras

extradas de dois alfabetos


A1 e A2

Arranjos usando m1 e m2
A string formada pelas peas de
m1 idn6ca formada pelas
peas de m2
u Repe6es so permi6das
u

Linguagens Formais e Autmatos

Entrada:
u

m1 = {a, ab, bba}

m2 = {baa, aa, bb}

Domins:

ab

bba

bba

aa

bb

bba

ab

bba

bb

aa

bb

bba

Sada:
bbaabbbaa

bbaabbbaa

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Teoria da computao e os trs problemas


27

Teoria da Computao
u

computvel? (tem soluo?)

Teoria da Complexidade
u

Quantos recursos (tempo e espao) so necessrios?

Exemplos
Busca Computvel com Custo Polinomial
u Caixeiro viajante Computvel com Custo Fatorial
u Correspondncia de Post No Computvel
u

Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Bibliograa
28

Roteiro
Teoria da Computao
u Mquinas de Estado Finito
u Autmatos com Pilha
u Mquinas de Turing
u Decidibilidade
u

Linguagens Formais e Autmatos

VIEIRA, Newton J. Introduo aos


Fundamentos da Computao:
Linguagens e Mquinas. Pioneira
Thomson Learning, 2006.

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)

Material e forma de comunicao


29


Avisos sobre aulas, avaliaes, datas, etc.

hjp://sites.google.com/site/zcufam/
Linguagens Formais e Autmatos

Eduardo Freire Nakamura (nakamura@icomp.ufam.edu.br)