Você está na página 1de 13

Teoria da Computação

Aula 7: Linguagens Regulares e Livres de Contexto II

Apresentação
Nesta aula entenderemos a igualdade das linguagens regulares e a minimização de Autômato Finito Determinístico e
Autômato Finito com saída e relacionar com as linguagens Livre de Contexto e os Autômatos com Pilha.

Por m, iremos detalhar os procedimentos envolvidos na análise léxica das linguagens.

Objetivos
Aprender a aplicar o algoritmo de minimização de Autômatos Finitos;

Conhecer o conceito de Autômatos Finitos com saída;

Saber construir árvores de derivação a partir de gramáticas livres de contexto.

Linguagens Regulares e Livres de Contexto II

Minimização de Autômatos Finitos

Dado um Autômato Finito M representado por uma quíntupla.

Ʃ
M   =  (Q,   ,  δ,  q 0 ,  F ) , onde:

Q é o conjunto nito de estados que o autômato pode assumir.

Ʃ é o conjunto nito de símbolos de entrada lidos pelo autômato.

δ é a função de transição, Q  ×   Ʃ  →  Q , em outras palavras, qualquer estado p ∈ Q ao ser uma entrada a ∈ Ʃ leva a um
outro estado q ou até o mesmo estado também pertencente ao conjunto de estadosQ.  i. e  δ (p,  a)  →  q

q0 é o estado inicial (q0   ∈  Q



- o estado inicial é apontado por uma seta).

F o conjunto de estados nais ou de aceitação.


ESTADOS EQUIVALENTES:
De nição

“Seja um autômato determinístico determinado por M acima, os estados p e q ∈ Q são equivalentes se, e somente se, para
qualquer palavra w  Ʃ
∈   * :

δ(p, w) ∈ ACEITA(M) e δ(q, w) ∈ ACEITA(M)

OU

δ(p, w) ∈ REJEITA(M) e δ(q, w) ∈ REJEITA(M)"

Em outras palavras, dois estados de um autômato são equivalentes se ambos aceitam ou rejeitam uma palavra da linguagem
que o autômato aceita.

AUTÔMATO FINITO MÍNIMO:


De nição

“Para uma linguagem regular L, o correspondente autômato determinístico mínimo Mm   Ʃ


=  ( ,  Qm  ,  δ m  ,  q 0m  ,  Fm ),

é tal que ACEITA(Mm ) = L, ou seja, um autômato aceita a linguagem e além disso, qualquer outro autômato M que ACEITA(M)
= L tem #Q  ≥  #Qm

Em outras palavras, o Autômato Finito Determinístico mínimo que aceita uma linguagem L tem menos estados ou é, no
máximo, igual a qualquer outro Autômato Finito Determinístico que aceite a mesma linguagem L.

 Por archy13 (Fonte: Shutterstock).


Algoritmo de Minimização de Autômatos

Pré-requisitos do autômato a ser minimizado:

a. Deve ser determinístico.

b. Todos os estados devem poder ser alcançados a partir do estado inicial (sem estados inalcançáveis).

c. A função “programa” deve ser total, ou seja, a partir de qualquer estado deve haver transições para todos os símbolos
do alfabeto.

Achar autômato equivalente:


No caso de não satisfação de algum dos pré-requisitos é necessário achar um autômato equivalente que o atenda,
seguindo o processo:

a. Gerar Autômato Finito Determinístico equivalente usando teoremas apresentados previamente.

b. Eliminar estados inacessíveis e suas correspondentes transições.

c. Transformar a função “programa” em total, introduzindo um novo estado (d) destino não nal com as transições não
previstas. Além disso, incluir um ciclo no novo estado (d) para todos os símbolos do alfabeto.
ALGORITMO DE MINIMIZAÇÃO
1. Construir uma tabela relacionando os pares de estados que só ocorrem uma vez.

2. Marcar os pares não equivalentes do tipo {Estado Final / Estado Não Final}.

3. Marcação dos estados não equivalentes — Para cada par {qu, qv} não já marcado e para cada símbolo a ∈ Ʃ suponha que:

δ(q u ,  a)  =   pu       e     δ(q v ,  a)  =   pv

a. Se pu    =   pv , então qu é equivalente a qv para o símbolo a e não deve ser marcado.

b. Se pu    ≠   pv , e o par {Pu   ,   Pv   } não está marcado, então o par {qu   ,   qv  } é colocado para posterior análise.

c. Se pu    ≠   pv , e o par {pu   ,   pv } está marcado, então:

I. {qu   ,   qv  } não é equivalente e deve ser marcado.

II. Se {qu   ,   qv  } encabeça uma lista de pares; então, marcar todos os pares da lista (e recursivamente se algum par da
lista encabeça outra).

4. Uni cação dos Estados Equivalentes – Os estados dos pares não marcados são equivalentes e podem ser uni cados:

a. A equivalência é transitiva.

b. Pares de estados não nais equivalentes podem ser uni cados como um único não nal.

c. Pares de estados nais equivalentes podem ser uni cados em um único estado nal.

d. Se algum dos estados equivalentes é inicial, então o correspondente estado uni cado é inicial.

e. Todas as transições com origem e respectivamente destino ou um estado equivalente são preservadas, mas
passam a ter origem e destino no correspondente estado uni cado.

5. Exclusão dos estados inúteis – Um estado q é dito “estado inútil” se não é nal e a partir dele não se chega a um.
 Photo by Procreator UX Design Studio (Fonte: Unsplash).
Autômato Finito com Saída
Um dos problemas dos Autômatos Finitos é que eles aceitam ou rejeitam uma linguagem quando param, mas não temos uma
informação especí ca do algoritmo além dessa. Existem duas extensões de Autômatos Finitos Determinísticos em que um
valor de saída pode ser associado:

1. Às transições, ou Máquina de Mealy .

2. Aos estados, ou Máquina de Moore .

Em ambas as máquinas a saída não tem cabeça de leitura, apenas de escrita e movimento, sempre para a direita a cada
símbolo gravado.

Os símbolos pertencem a um conjunto separado de saída.

O resultado do processamento é o estado nal e a informação na ta de saída.

Máquina de Mealy
De nição:

Dado um Autômato Finito Determinístico, uma máquina de Mealy M é representada por:

Ʃ
M   =  (Q,   ,  δ,  q 0 ,  F ,  Δ),  onde :

Q é o conjunto nito de estados que o autômato pode assumir.

Ʃ é o conjunto nito de símbolos de entrada lidos pelo autômato.

δ é a função de transição, δ Ʃ
:  Q  ×     →  Q  →  Δ* , a qual é uma função parcial.

q0 é o estado inicial (q0   ∈  Q - o estado inicial é apontado por uma seta).

F é o conjunto de estados nais ou de aceitação.

Δ é o alfabeto de símbolos de saída.

A diferença no diagrama de estados é que cada transição tem um rótulo indicando qual símbolo de saída é escrito a cada
transição.

Máquina de Moore
Uma Máquina de Moore é um Autômato Finito Determinístico com
saídas associadas aos estados. Só que, nesse caso, as saídas são
produzidas por uma função que determina essa saída (podendo
também ser vazia), determinando o estado da máquina.

Ela é mais usada em análises léxicas ou traduções de linguagens de modo geral, em que na transição nal a função de saída
gera a informação sobre o conjunto de caracteres, de nindo identi cadores, números etc. Nos outros estados resulta em
palavra vazia ou gera uma saída que seja necessária no processo intermediário de identi cação do Lexema.

De nição:

Dado um Autômato Finito Determinístico, uma máquina de Moore MO representado por:

Ʃ
M O  =  (Q,   ,  δ,  q 0 ,  F ,  Δ,  δ s ),  onde :

Q é o conjunto nito de estados que o autômato pode assumir. 

Ʃ é o conjunto nito de símbolos de entrada lidos pelo autômato.

δ é a função de transição, δ Ʃ
:  Q  ×     →  Q , o qual é uma função parcial.

q0 é o estado inicial distinguido de Q.

F o conjunto subconjunto de Q de estados nais ou de aceitação.

Δ é o alfabeto de símbolos de saída. 

δs é a função de saída. 

é
 δs :  Q  →  Δ*,   o qual   uma fun çã o total.

Linguagens e Gramáticas Livres de Contexto


Gramáticas:

Antes de falar sobre as Linguagens ou Gramáticas livres de contexto vamos fazer uma revisão rápida da de nição
básica de uma Gramática “G”:

G = {V, T, P, S}
V – Conjunto nito de símbolos ou variáveis não terminais, ou seja, são variáveis a serem substituídas por outras variáveis
ou símbolos terminais nos passos de produção das palavras da gramática e nenhum deles deverá aparecer nas palavras
nais da linguagem gerada por ela.

T – Conjunto nito de símbolos terminais DISJUNTOS, ou seja, que não façam parte de V. Eles são ditos “terminais”, pois
são os que farão parte das palavras geradas por essa gramática.

P – Regras ou relações de produção da forma: < L.Esquerdo > à < L.Direito > O “L.Esquerdo” é composto de símbolos de V
e de T; devem ser substituídos por símbolos de V e T do lado direito.

< L.Esquerdo > ou < L.Direito > podem representar símbolos individuais ou palavras formadas por eles, portanto usa-
se uma notação: <>* para indicar “Palavras formadas pelos símbolos”. É claro que um símbolo também pode ser
considerado uma palavra, então <>* já inclui os dois casos. É muito comum usar o símbolo Σ para signi car a união
(V U T) e Σ* para todas as palavras.

+
∑ - Apenas para garantir um formalismo das coisas óbvias que os matemáticos gostam, temos que especi car
que o lado esquerdo da regra de produção não pode ser o elemento “Vazio” (normalmente representado pelo símbolo
“ԑ”. Ora, vamos raciocinar um pouquinho: uma regra que diga ԑ → < Alguma coisa > não faz sentido, faz? Como
podemos substituir algo que não existe (vazio) por alguma coisa? O contrário, obviamente sim, podemos eliminar um
símbolo substituindo por vazio. Por exemplo: A → ԑ. Portanto, de um modo mais formal:

P: (V U T)+ à (V U T)* - Que podemos resumir como: palavras compostas de símbolos do alfabeto com um símbolo
especial de terminação, excluindo-se o símbolo vazio, são substituídos por qualquer palavra composta por símbolos
deste mesmo alfabeto com o símbolo especial de terminação, incluindo o símbolo vazio.

S – Um símbolo especial escolhido à parte de V denominado inicial. Este é o símbolo pelo qual começamos a substituição
das regras de produção.

Relações de Derivação:
A ==>* B – O “*” indica que A pode substituído por B zero ou mais vezes.

A ==>+ B – O “+” indica que A pode ser substituído por B uma ou mais vezes.

A ==>i B – O “i” indica que A pode ser substituído por B i vezes.


 Por archy13 (Fonte: Shutterstock).

Linguagem gerada
Uma gramática tem por nalidade gerar uma linguagem. Normalmente, para as diversas nalidades da computação, como
uma linguagem para a criação de programas ou aplicativos para dispositivos computacionais. A linguagem gerada L por uma
gramática é formalmente de nida como:

Para uma gramática G = {V, T, P, S}, uma linguagem L,

L(G) ou GERA(G) = w ϵ T * |S ==>


+
w

w – Representam as palavras pertencentes a linguagem.

T* – Todo o conjunto de palavras constituídas de símbolos terminais; nesse caso o “*” indica que inclui também a palavra vazia.

S ==>
+
w – Indica a geração de cada palavra a partir de um símbolo especial a partir de um ou mais passos.

Gramática livre de contexto


De nição:

Uma gramática livre de contexto G = {V, T, P, S}, é tal que sua regra de produção P é da forma:

A  →  α

Onde A é uma variável de V e α uma palavra de (V U T)*


LINGUAGEM LIVRE DE CONTEXTO
De nição:

“Uma linguagem gerada por uma gramática livre de contexto é uma


linguagem livre de contexto ou linguagem TIPO 2.”

Em outras palavras, uma linguagem livre de contexto é tal que uma produção é feita a partir de uma variável ou grupo de
símbolos, independentemente de algum grupo de símbolos anteriores da produção, não deixando a linguagem “dependente”
recursivamente.

 (Fonte: blogcyberini)

Formas Normais I
As formas normais criam restrições rígidas nas regras de produção das linguagens livres de contexto. Contudo, isso não
diminui o seu poder de geração de gramáticas. Existem duas formas normais mais conhecidas:

Forma Normal de Chomsky

Uma gramática livre de contexto G = {V, T, P, S}, é dita estar na Forma Normal de Chomsky se todas as suas produções P são da
forma

A  →  BC   ou  A  →  a,  onde :

1. A, B e C são variáveis de V.

2. a é um símbolo terminal de T.

3. S é um símbolo especial escolhido aparte de V denominado inicial. Este é o símbolo pelo qual começamos a substituição
das regras de produção.

4. A palavra vazia não pertence à linguagem gerada nessa forma.


Formas Normais II
Forma Normal de Greibach

Uma gramática livre de contexto G = {V, T, P, S}, é dita estar na Forma Normal de Greibach se todas as suas produções P são da
forma

A à a α, onde:

1. A é uma variável de V.

2. a é um símbolo terminal de T.

3. α é uma palavra de V*.

4. S é um símbolo especial escolhido à parte de V denominado inicial. Este é o símbolo pelo qual começamos a substituição
das regras de produção.

5. A palavra vazia não pertence à linguagem gerada nessa forma.

Atividade
1. Minimize o Autômato Finito da gura abaixo:

(Fonte: encrypted-tbn0.gstatic).
2. Considere a máquina de Meally abaixo, que compacta os brancos de um texto em que a é um símbolo qualquer e representa
um branco, como no diagrama abaixo:

Ʃ
M   =  (Q,   ,  δ,  q 0 ,  F ,  Δ),  onde :

Q = {a, β} é o conjunto nito de estados que o autômato pode assumir.

Ʃ = {q, p} é o conjunto nito de símbolos de entrada lidos pelo autômato.

δ é a função de transição, δ Ʃ
:  Q  ×     →  Q  →  Δ* , o qual é uma função parcial.

q é o estado inicial.

F = {q, p} o conjunto de estados nais ou de aceitação.

Δ = {a, β} é o alfabeto de símbolos de saída.

Construa uma máquina de Moore equivalente.

3. Qualquer expressão aritmética binária pode ser convertida em uma expressão totalmente parentizada, bastando reescrever
cada subexpressão binária a + b com (a + b), em que + denota um operador binário. Expressões nesse formato podem ser
de nidas por regras de uma gramática livre de contexto, conforme apresentado a seguir. Nessa gramática, os símbolos não-
terminais E, S, O e L representam expressões, subexpressões, operadores e literais, respectivamente, e os demais símbolos das
regras são terminais (ENADE, 2008).

E → (S O S)

S→L|E

O→+|-|*|/

L→a|b|c|d|e

Mostre que a expressão (a * ( b / c )) pode ser obtida por derivações das regras acima. Para isso, desenhe a árvore de análise
sintática correspondente.

Notas

Referências

HOPCROFT, J.; ULLMAN, J.; MOTWANI, R. Introdução à teoria dos Autômatos, Linguagens e Computação. Tradução da 2. ed.
original de Vandenberg D. de Souza. Rio de Janeiro: Elsevier, 2002. (Título original: Introduction to automata theory, languages,
and computation. ISBN 85 352 1072 5.)

SIPSER, M. Introdução à teoria da Computação. Tradução técnica da 2. ed.: Rui José Guerra Barretto de Queiroz. Revisão
técnica: Newton José Vieira. São Paulo: Thomson Learning, 2007. (Título original : Introduction to the theory of computation.
ISBN 978-85-221-0499-4.)

Próxima aula

Igualdade de Linguagens Regulares, Minimização de Autômato Finitos Determinísticos e Autômato Finito com Saída;

Linguagens Livre de Contexto e Autômatos com Pilha;

Análise Léxica.

Explore mais

Leia os livros:

ANDERSON, J. A., Automata Theory with Modern Applications. Rio de Janeiro: Cambridge University Press, 2006.

MENEZES, P. B. Linguagens Formais e Autômatos, 4. a. ed. Porto Alegre: Sagra Luzzatto,2001.

Você também pode gostar