Você está na página 1de 8

Linguagens Formais e Autmatos Prof Andr Mendes Garcia

Pgina.: 1

LINGUAGENS FORMAIS E AUTMATOS


Introduo
A teoria das linguagens formais foi originariamente desenvolvida na dcada de 1950 com o
objetivo de desenvolver teorias relacionadas com as linguagens naturais. Entretanto, logo foi
verificado que esta teoria era importante para o estudo de linguagens artificiais e, em especial,
para as linguagens originrias na Cincia da Computao. Desde ento, o estudo das linguagens
formais

desenvolveu-se

significativamente
1

com

diversos

enfoques,

com

destaque

para

aplicaes em Anlise Lxica e Sinttica de linguagens de programao, modelos de sistemas


biolgicos, desenhos de circuitos e relacionamentos com linguagens naturais.

Conceitos Bsicos de Linguagens Formais


Alfabeto
qualquer conjunto finito, no vazio, de smbolos (ou letras). Um alfabeto geralmente
denotado por

Exemplos:

= {0, 1}, o alfabeto binrio;


= {a, b, c, ......,z}, o conjunto das letras minsculas.
Palavra
Palavra ou cadeia, qualquer seqncia finita de smbolos de um alfabeto
vazia contm zero ocorrncias de smbolos e habitualmente denotada por

. A palavra

Denota-se o comprimento da palavra w por |w| e || = 0.

Anlise Lxica: o estgio na traduo de um programa quando o software de compilao ou traduo


substitui palavras-chave do programa por instrues de cdigo de mquina
2
Anlise Sinttica: Trata da verificao gramatical de programas.

Linguagens Formais e Autmatos Prof Andr Mendes Garcia

Pgina.: 2

Potncias de um Alfabeto
Denotamos

o conjunto de todas as palavras de comprimento K, sobre um alfabeto

.
Exemplos, para o alfabeto

= {0,1}:

0 = { }
1 = {0,1}
2 = {00,01,10,11,}
3 = {000,001,010,011,100,101,110,111}
O conjunto de todas as palavras sobre o alfabeto

denota-se habitualmente por

* ,

* = 0 1 2 .......
ou seja,

* = { , 0, 1, 00, 01, 10, 11, 000, 001,.......}


Excluindo a palavra vazia, obtemos

+ , ou seja,

+ = 1 2 .......
* = + {}
Prefixo, Sufixo, Subpalavra
Um prefixo de uma palavra qualquer seqncia inicial desta palavra. Um sufixo
qualquer seqncia final desta palavra. Uma subpalavra de qualquer seqncia de smbolos
contnua desta palavra.
Exemplo:

Linguagens Formais e Autmatos Prof Andr Mendes Garcia

Pgina.: 3

Sendo w = abcb uma palavra do alfabeto {a, b, c}


Ento

, a, ab, abc, abcb so os prefixo de w ;


, b, cb, bcb, abcb so os sufixos de w ;
Qualquer prefixo ou sufixo de uma palavra uma subpalavra.

Concatenao
Justapondo duas palavras v e w obtemos vw. A palavra vazia o elemento identidade da
operao, isto , w =

w =

A concatenao sucessiva de uma palavra (com ela mesma), representada na forma de


n

um expoente w onde w uma palavra e n indica o nmero de concatenaes sucessivas.


Exemplo:

Sendo a palavra w = ab
1

W = ab, w = abab, w = ababab,

Linguagem Formal
Uma Linguagem Formal um conjunto de palavras sobre um alfabeto.
Exemplo1: Suponha o alfabeto = {a, b}. Ento:
a)

O conjunto vazio e o conjunto formado pela palavra vazia so linguagens sobre .

b)

O conjunto de palndromos (palavras que tm a mesma leitura da esquerda para a direita


e vice-versa) sobre um exemplo de linguagem infinita. Assim,

, a, b, aa, bb, aaa, aba,

bab, bbb, aaaa, ..... so palavras desta linguagem.

Exemplo de Linguagens
-

Portugus

C (o conjunto de todos os programas em C, sintaticamente corretos)

Linguagens Formais e Autmatos Prof Andr Mendes Garcia

Pgina.: 4

Exemplo2:
Para o alfabeto = {0, 1}, define-se as seguintes linguagens:

- L = {w | w contm o mesmo nmero de 0s e 1s}


- L = {w | w representa um nmero primo em binrio}

MQUINAS DE ESTADO-FINITO
As mquinas de estado-finito so mquinas abstratas que capturam as partes essenciais
de algumas mquinas concretas. Estas ltimas vo desde mquinas de vender jornais e de verder
refrigerantes, passando por relgios digitais e elevadores, e at programas de computador, como
alguns procedimentos de editores de textos e compiladores.
Existem, basicamente, dois tipos de mquinas de estado-finito: os tradutores e
reconhecedores (ou aceitadores) de linguagens. Os tradutores so mquians com entrada e
sada, e os reconhecedores so mquinas com apenas duas sadas possveis (Aceitao,
Rejeio).
As mquinas de estado-finito que comearemos a estudar so os reconhecedores
(aceitadores) de linguagens regulares. So mquinas que dada uma linguagem, sobre um
alfabeto, e uma palavra desta linguagem, aceitam ou rejeitam esta palavra para tal linguagem, ou
seja, determinam se esta palavra pertence ou no a linguagem.
Os

tradutores so mais conhecidos por Autmatos Finitos com Sada e os

reconhecedores de linguagens so mais conhecidos por Autmatos Finitos.

Para dar uma idia do que vem a ser autmato finito antes de sua definio formal, e
tambm para introduzir os principais conceitos e a terminologia associada, sero usados alguns
exemplos bem simples.

Um quebra-cabeas: Um homem, um leo, um coelho e um repolho devem atravessar um


rio usando uma canoa, com a restrio de que o homem deve transportar no mximo um dos trs
de cada vez de uma margem outra. Alm disso, o leo no pode ficar na mesma margem que o
coelho sem a presena do homem, e o coelho no pode ficar com o repolho sem a presena do
homem.
Para tanto, algumas notaes devem ser levadas em considerao para a facilitao do
entendimento do autmato. As letras h significa o homem, l leo, c coelho, r repolho. Por
exemplo, {h, c, r} representa a situao em que o homem, o coelho e o repolho esto na margem
esquerda e o leo na margem direita. Uma outra notao que devemos levar em considerao a

Linguagens Formais e Autmatos Prof Andr Mendes Garcia

Pgina.: 5

movimentao de estados, por exemplo, s representa o homem atravessando o rio sozinho, l


levando o leo, c levando o coelho, r levando o repolho.
Para economizar tempo no vamos passar pela construo do autmato e vamos direto
sua representao final.

Estado Inicial

Estado Final

O objetivo do autmato-finito acima reconhecer as palavras do alfabeto {s, l, c, r} que


respeitam as condies bsicas do quebra-cabea, portanto as condies bsicas do quebra
cabea seria a linguagem para a qual este autmato reconheceria palavras.
Qual o procedimento para o reconhecimento da linguagem ?? Partindo-se do estado
inicial, se chagar ao estado final a palavra aceita, portanto a linguagem reconhecida, caso no
rejeitada.
Portanto, o conjunto de todas as solues para o quebra-cabeas o conjunto das
palavras correspondentes aos caminhos do estado inicial ao estado final. Cada palavra formada
concatenando-se os rtulos das arestas percorridas no caminho do estado inicial ao estado final.
Pela figura acima, fica evidente que existe um conjunto infinito de solues, e que existem duas
solues de tamanho mnimo: cslcrsc e csrclsc.
*

Dada uma palavra w de {s, l, c,r} , como saber se w soluo ? Evidentemente, deve-se
verificar se o caminho correspondente a w par partindo do estado inicial chega ao estado final; se
chegar, w soluo, caso contrrio, no .

Linguagens Formais e Autmatos Prof Andr Mendes Garcia

Pgina.: 6

AUTMATOS FINITOS DETERMINSTICOS (AFD)


Um Autmato Finito Determinstico um quntuplo ordenado,

A = (Q, , , q0, F) onde:


-

Q um conjunto finito, no vazio de estados

um conjunto finito (alfabeto) de smbolos de entrada

: Q x Q a funo (parcial) de transio ou de mudana de estado. Fornece para


cada par (estado, smbolo de entrada da palavra) um novo estado para onde o autmato finito
deve-se mover.

q0 Q o estado inicial

F Q o conjunto dos estados finais ou de aceitao


Finito porque o nmero de estados envolvidos no sistema finito, e Determinstico

porque a cada smbolo lido de uma palavra de entrada, apenas um estado novo escolhido.

Exemplo1: Sobre o alfabeto = {0, 1}, consideremos a linguagem,


L = { w * | a seqncia 01 parte de w}
Pretendemos construir um Autmato Reconhecedor das palavras de L. Uma dada
palavra w * pertence a L, se e somente se, partindo do estado inicial o Autmato atinge o
estado final, (de aceitao ou de reconhecimento) de w.
A linguagem de um AFD o conjunto de todas palavras por ele reconhecida.
Representao do AFD: A = ( {q0, q1, q2}, {0, 1}, , q0, {q1} )

O Autmato Finito pode ser representado por um Diagrama de Transies (que um grafo
dirigido) ou pela Tabela de Transies.

Diagrama de Transies:

Tabela de Transies:

Linguagens Formais e Autmatos Prof Andr Mendes Garcia

Pgina.: 7

O processamento de uma dada palavra feito lendo smbolo a smbolo da esquerda para a
direita. A cada smbolo lido a funo de transio fornece um novo estado dependendo do
smbolo lido.
Por exemplo, a palavra w = 1100111 reconhecida pelo autmato acima. Pois chega-se ao estado
final do autmato;

(q0,1) = q0

Note que para cada smbolo lido gerado um novo estado. Quando se l

(q0,1) = q0

o ltimo smbolo da palavra 1, o autmato chega ao seu estado final.

(q0,0) = q2

Portanto o autmato reconhece a palavra e portanto pertence

(q2,0) = q2

linguagem especificada

(q2,1) = q1
(q1,1) = q1
(q1,1) = q1
Exemplo2: Tambm sobre o alfabeto = {0, 1}, consideremos a linguagem,
*

L = { w | a seqncia 001 parte de w}

FUNO DE TRANSIO ESTENDIDA ( * ou ^ ou )


uma forma compacta de descrever um conjunto de transies resultantes de leitura de
uma cadeia (palavra) de entrada.
Em contraposio funo de transio do autmato, ao invs de seu segundo argumento
ser um smbolo da cadeia, uma cadeia (palavra).
O seu valor de sada d o estado do autmato depois de ler a cadeia toda.
Por exemplo: (q0, a) = q1 , (q1, b) = q2 ento *(q0, ab) = q2.

Linguagens Formais e Autmatos Prof Andr Mendes Garcia

Pgina.: 8

Definio
-

*(q, ) = q

*(q, ab) = *( (q, a), b)

De acordo com o nosso primeiro exemplo:


*(q0, )

= q0

*(q0, 1)

( *(q0, ), 1)

(q0, 1)

= q0

*(q0, 11)

( *(q0, 1), 1)

(q0, 1)

= q0

*(q0, 110)

( *(q0, 11), 0)

(q0,0)

= q2

*(q0, 1100)

( *(q0, 110), 0)

(q2, 0)

= q2

*(q0, 11001)

( *(q0, 1100), 1)

(q2, 1)

= q1

*(q0, 110011)

( *(q0, 11001), 1)

(q1, 1)

= q1

*(q0, 1100111)

( *(q0, 110011), 1)

(q1, 1)

= q1

LINGUAGEM ACEITA POR UM ( AFD )


A linguagem aceita por um AFD M=(Q, , , q0, F) o conjunto de todas as cadeias em
aceitas por M.

L(M) = {w * | *(q0, w) F}
LINGUAGUAGENS REGULARES

Uma linguagem diz-se regular se e somente se, existir um AFD M que a aceite.

L = L(M)
A famlia das linguagens regulares composta por todas as linguagens que so aceitas
por um qualquer AFD.
Uma forma de demonstrar que uma linguagem regular encontrar um AFD que a aceite.