Buscar

Linguagens Formais e Autômatos - Introdução

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

LINGUAGENS FORMAIS E
AUTÔMATOS
Marcelo Guerra
PROFESSOR
 Marcelo Roberto Bastos Guerra Vale
 marceloguerra@ufersa.edu.br
 DCEN sala 31.
 Horário de atendimento: a combinar
 Mestre em Engenharia Elétrica na UFRN
 Doutorando no PPGEEc – UFRN
 Todo o material do curso foi cedido pela professora 
Mara Bonates.
 Adaptações feitas pelo professor Marcelo Guerra
ESTRUTURA DO CURSO
Aulas teóricas
 Aulas expositivas.
 Resolução de exercícios.
Avaliações
 Provas escritas.
 Trabalhos de implementação.
Nota dos trabalhos não ultrapassam 30% da nota
da unidade.
 Resolução de exercícios em aula.
Créditos extras.
OBJETIVOS
Estudar classes de linguagens e seus
respectivos formalismos reconhecedores, os
autômatos.
Estudar linguagens em ordem crescente de
complexidade e suas aplicações.
 Entender os modelos fundamentais de
computação e suas propriedades.
 Provocar curiosidade e interesse em
aspectos mais abstratos (e gerais) da Ciência
da Computação
EMENTA
 Linguagens Regulares
 Autômatos Finitos
 Linguagens Livres de Contexto
 Autômatos com Pilha
 Máquinas de Turing 
 O Problema da Parada da Máquina de Turing
 Hierarquia das Classes de Linguagem
BIBLIOGRAFIA
 Hopcroft, J.E.; Ullman, J.D,
Introdução à Teoria de
Autômatos, Linguagens e
Computação. Segunda Edição,
Ed. Campus/Elsevier. 2003.
BIBLIOGRAFIA
 Blauth, P. M. Linguagens Formais e
Autômatos. Série Livros Didáticos 3, Edição 2,
UFRGS, 1998.
BIBLIOGRAFIA
 Harry Lewys & Christos Papadimitriou,
Elementos de Teoria da Computação, Editora
Bookman, Porto Alegre, 2a. ed., 2000.
BIBLIOGRAFIA
Michael Sipser, Introdução à Teoria da
Computação, Editora Thompson, Tradução 2a.
ed., 2007.
 Rosa, J. L. G. Linguagens Formais e
Autômatos. Editora LTC, 2010.
 Acióly B. M.; Bedregal B. R., Introdução à Teoria
das linguagens formais, dos autômatos e da
computabilidade, Editora UnP, 1a. ed., 2002.
MOTIVAÇÃO
O que podemos fazer com os computadores?
O que jamais poderemos fazer com eles?
Como encontrar respostas a essas
perguntas?
INTRODUÇÃO
 Alan Turing foi um grande
matemático, lógico e criptoanalista.
 pioneiro na inteligência artificial e na
ciência da computação.
 A homossexualidade de Turing
resultou em um processo criminal em
1952
 Morreu em 1954, algumas semanas
antes de seu aniversário de 42 anos
 Em 10 de setembro de 2009, após uma campanha de
internet, o primeiro-ministro britânico Gordon
Brown fez um pedido oficial de desculpas público, em
nome do governo britânico
INTRODUÇÃO
 Alan Turing estudou uma máquina
abstrata que tinha todas as
características dos computadores
atuais.
 O objetivo era descrever o limite entre
o que uma máquina de computação
podia fazer e aquilo que ela não podia
fazer.
 As conclusões de Turing se aplicam não apenas às
suas máquinas de Turing abstratas, mas também
às máquinas reais de hoje.
INTRODUÇÃO
A Teoria dos Autômatos é o estudo dos
dispositivos de computação abstratos, ou
“máquinas”.
INTRODUÇÃO
 Teoria da computação
 A importância da teoria para a prática, em qualquer
ciência é imensa.
 Se entendermos por computação tudo o que um
computador pode realizar, devemos primeiro
entender o que um computador é.
 A resposta poderia ser dada em termos de hardware e
tecnologia, mas não podemos nos limitar à tecnologia
do momento.
 Isto nos levará, irremediavelmente, a definir uma noção
abstrata de computador.
 A construção de modelos é essencial em qualquer
disciplina científica.
INTRODUÇÃO
 Teoria da Computação:
 Fundamenta diversas aplicações computacionais, tais como:
 Software de verificação de circuitos digitais
 Analisadores léxicos
 Motores de busca na Web
 Software para verificar sistemas com número de estados finito,
como protocolos para comunicações
 Sub-áreas:
 Teoria das linguagens formais
 Teoria da computabilidade e os limites da computação
INTRODUÇÃO
 Teoria da Computação e os limites da computação:
 A Teoria da Computação nos permite deduzir se temos a
chance de, ao nos depararmos com um problema, sermos
capazes de resolve-lo, ou se teremos de descobrir algum
modo de contornar o problema intratável.
 Encontrar uma aproximação, uma heurística ou limitar o período
de tempo de execução do programa.
LINGUAGENS FORMAIS
TEORIA DAS LINGUAGENS FORMAIS
 Linguagens formais são mecanismos formais para
representação e especificação de linguagens, baseados na
chamada Teoria da Computação.
 As representações podem ser feitas por:
 Reconhecedores: dispositivos formais que servem para
verificar se uma sentença pertence ou não à determinada
linguagem.
 Autômatos.
 Geradores: dispositivos formais que permitem a geração
sistemática de todas as sentenças de uma linguagem.
 Gramáticas.
LINGUAGENS FORMAIS
 Em nossa linguagem natural usamos letras, palavras e
sentenças.
 Grupos de letras constituem uma palavra e grupos de
palavras constituem uma sentença.
 Mas, nem toda concatenação de letras forma uma palavra,
nem toda sequência de palavras uma sentença.
 A situação também se verifica para as linguagens de
programação, na qual certos agrupamentos de palavras
chave são um comando e algumas sequências de comandos
são programas.
LINGUAGENS FORMAIS
 É necessária uma teoria geral que unifique todos
esses casos.
 Definição de uma estrutura onde a decisão de quando
uma cadeia de unidades constitui uma unidade maior
válida seja baseada na aplicação de regras
explicitamente definidas.
LINGUAGENS FORMAIS
 Em linguagens naturais não podemos dar regras
para descrever todas as frases, pois nos permite
construir frases sem sentido.
 Ex: <artigo><substantivo><verbo> => “o gato late”
 É difícil estabelecer quais frases fazem sentido,
porque dependem de nossa habilidade para
interpretar metáforas poéticas.
LINGUAGENS FORMAIS
 Isto não acontece com as linguagens de
programação, pois elas são formais.
 O compilador de uma linguagem de programação
é um procedimento que analisa a corretude de
uma seqüência de símbolos e determina se ela
constitui um programa válido ou não.
 Assim, o compilador não procura saber o que o
programa faz, mas se ele está corretamente
escrito.
LINGUAGENS FORMAIS
 A palavra “formal” nos diz que todas as regras
para a linguagem são explicitamente declaradas
em termos das cadeias de símbolos que podem
ocorrer nela.
 Sentenças são consideradas como meros
símbolos e não como expressões de idéias na
mente humana.
CONCEITOS ELEMENTARES
DA TEORIA DOS AUTÔMATOS
CONCEITOS ELEMENTARES DA TEORIA DOS
AUTÔMATOS
 Alfabeto
 É um conjunto não-vazio e finito de símbolos. 
 Representação: Σ (sigma)
 Exemplos:
 Σ = {0,1}, o alfabeto binário.
 Σ = {a,b,...,z}, o alfabeto de todas as letras minúsculas.
CONCEITOS ELEMENTARES DA TEORIA DOS
AUTÔMATOS
 String, cadeia ou palavra
 É uma seqüência finita de símbolos escolhidos de algum
alfabeto.
 Representação:
 letras minúsculas do inicio do alfabeto para representar elementos
do alfabeto (a,b,c...).
 letras minúsculas do final do alfabeto para indicar nomes de cadeias
(...w,x,y,z).
 Exemplos:
 Se o alfabeto for Σ = {a,b} então w = abab e z = aaabba são cadeias
sobre Σ.
CONCEITOS ELEMENTARES DA TEORIA DOS
AUTÔMATOS
 A cadeia vazia é a cadeia com zero ocorrências de
símbolos.
 Representação: ε (Épsilon) ou λ (Lambda).
 A concatenação de duas cadeias w e v, é denotado por
wv.
 Se w=a1...an e v=b1...bm então wv=a1...anb1...bm. O comprimento de uma cadeia w, denotado por |w|, é
o número de símbolos que figuram na cadeia.
 Exemplos:
 |abba|= 4
 | ε |=0.
CONCEITOS ELEMENTARES DA TEORIA DOS
AUTÔMATOS
 Potências de um alfabeto
 Se Σ é um alfabeto, podemos expressar o conjunto de todas
as cadeias de um certo comprimento desse alfabeto, usando
uma notação exponencial Σk.
 Σ0 = { ε }, independente de qual alfabeto seja Σ.
 Seja Σ= {0,1},
 Σ1 = {0,1}, 
 Σ2={00,01,10,11}, 
 Σ3= {000,001,010,011,...,111}.
CONCEITOS ELEMENTARES DA TEORIA DOS
AUTÔMATOS
 Fecho Estrela
 O fecho estrela de um alfabeto Σ, denotado por Σ*, é o
conjunto de todas as cadeias (finitas) sobre Σ.
 Σ* = Σ0 Σ1 Σ2 Σ3 ...
 Exemplo: {0,1}* = { ε, 0, 1, 00, 01, 10, 11, 000,... }
CONCEITOS ELEMENTARES DA TEORIA DOS
AUTÔMATOS
 Fecho positivo
 O conjunto Σ* sempre contém ε. O fecho estrela de Σ
sem a cadeia vazia é denominado fecho positivo do
alfabeto Σ, e é denotado por Σ+.
 Desse modo, duas equivalências são apropriadas:
 Σ+ = Σ1 Σ2 Σ3 ...
 Σ* = Σ+ {ε}
LINGUAGENS
 Um subconjunto qualquer de Σ* pode ser visto
como uma linguagem sobre o alfabeto Σ.
 Uma cadeia w numa linguagem L, isto é, w L,
será chamada sentença de L.
 Exemplo: seja Σ = {a,b}.
 Então Σ* = {ε, a, b, aa, ab, ba, bb, ...}.
 O conjunto {a, aa, aab} é uma linguagem sobre Σ.
LINGUAGENS
 Linguagem Finita
 Quantidade finita de palavras.
 Linguagem Infinita
 Exemplo: dado o alfabeto = {a, b}, o conjunto
L = {anbn | n ≥ 0} é uma linguagem L sobre o alfabeto
Σ.
 OBS: As cadeias aabb e aaaabbbb são palavras de L, mas
a cadeia abb não está em L.
LINGUAGENS
 Exemplos de linguagens:
 Português: coleção de palavras válidas na língua.
 C: programas válidos são um subconjunto dos strings possíveis
que podem ser formados a partir do alfabeto da linguagem.
 Linguagem de todos os strings que consistem em n 0’s seguidos
por n valores 1, para algum n ≥ 0: {ε, 01, 0011, 000111, ...}.
 O conjunto de strings de 0’s e 1’s com um número igual de cada
um deles: {ε, 01, 10, 0011, 0101, 1001,...}.
 A única restrição importante sobre o que pode ser uma
linguagem é que todos os alfabetos são finitos.
GRAMÁTICAS
GRAMÁTICAS
 Para estudar linguagens matematicamente, precisamos de um
mecanismo para descrevê-las.
 As gramáticas são uma poderosa ferramenta para definir
linguagens.
 Uma gramática para a língua portuguesa nos diz se uma
sentença, em particular, é bem formada ou não.
 <oração> : <sujeito> <predicado>
 <sujeito> : <artigo><substantivo>
 <predicado> : <verbo><complemento>
 Sentenças como: “um cão corre na praia” e “uma menina
caminha lentamente” são bem formadas.
GRAMÁTICA
 Definição: Uma gramática G é definida como uma
quádrupla G = < V, T, S, P >, onde:
 V é um conjunto finito de objetos, chamados
variáveis.
 T é um conjunto finito de objetos, disjunto de V,
chamados símbolos terminais.
 S V é um símbolo especial, chamado variável de
início.
 P é um conjunto finito de produções.
GRAMÁTICA
 Considere a gramática G = < {S}, {a,b}, S, P >
onde P é dado por:
 S aSb
 S ε
 O principal na gramática são as regras de
produção.
 Elas especificam como a gramática transforma uma
cadeia em outra, e através disso elas definem
uma linguagem associada à gramática.
GRAMÁTICA
 Assumiremos que todas as produções são da forma:
x y
onde x é um elemento de (V T)+ e y está em (V T)*.
GRAMÁTICA
 As produções são aplicadas como segue:
 dada uma cadeia da forma:
w uxv
dizemos que a produção x y é aplicável a esta
cadeia, e podemos usá-la para trocar x por y,
obtendo assim, a nova cadeia
z uyv
Neste caso, dizemos que w deriva z,
denotado por w z.
GRAMÁTICA
 G = <{S}, {a,b}, S, P>, onde P é dado por:
 S aSb
 S ε
 Então S aSb aaSbb aabb.
 Logo, podemos escrever: S aabb.
 A cadeia aabb é uma sentença na linguagem
gerada por G, enquanto aaSbb é uma forma
sentencial.

Outros materiais