Você está na página 1de 31

Cursos: Bacharelado em Cincia da Computao e

Bacharelado em Sistemas de Informao


Disciplinas: (1493A) Teoria da Computao e Linguagens Formais,
(4623A) Teoria da Computao e Linguagens Formais e
(1601A) Teoria da Computao
Professora: Simone das Graas Domingues Prado
e-mail: simonedp@fc.unesp.br
home-page: wwwp.fc.unesp.br/~simonedp/discipl.htm

Apostila 02
Assunto: Linguagens Regulares

Objetivos:
Estudar os autmatos finitos
Estudar as expresses regulares
Estudar as gramticas regulares
Estudar as linguagens regulares

Contedo:
1. Introduo
2. Autmato Finito Determinstico (AFD)
3. Autmato Finito no Determinstico (AFN)
4. Equivalncia de AFN e AFD
5. Reduo de estados de um autmato finito
6. Expresses Regulares
7. Gramtica Regular
8. Linguagens Regulares

_______________________________________________________________________________________________________________ -1-
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
1. Introduo

Segundo a Hierarquia de Chomsky, a Linguagem Regular trata-se de uma linguagem mais simples, sendo
possvel desenvolver algoritmos de reconhecimento ou de gerao de pouca complexidade, grande
eficincia e de fcil implementao.

O estudo das Linguagens Regulares ou tipo 3 (Hierarquia de Chomsky) ser visto atravs de vrios
formalismos:
Operacional ou reconhecedor uso dos autmatos finitos (determinstico, no determinstico)
Axiomtico ou gerador gramtica regular
Denotacional expresso regular

2. Autmato Finito Determinstico (AFD)

Um autmato um modelo abstrato de um computador digital composto por uma fita de entrada (que
conter a cadeia de entrada), uma fita de sada (para mostrar a cadeia resultante), memria auxiliar (que
armazena temporariamente smbolos do alfabeto) e unidade de controle. A cadeia a ser tratada fica
armazenada na fita de entrada de onde a unidade de controle l um smbolo por vez, pode mudar de estado
dependendo das funes de transies definidas e escreve na memria e na fita de sada.

O autmato finito um reconhecedor de linguagens simples que no possui memria auxiliar, no altera a
fita (ela serve apenas para a leitura de smbolos), a unidade de controle anda na fita somente em um
sentido (da esquerda para a direita) e a fita tem comprimento limitado, do tamanho da cadeia a ser
analisada.

O autmato finito pode ser determinstico (AFD) e no determinstico (AFN). No AFD cada movimento
determinado de uma nica forma, enquanto que no AFN existem vrias possibilidades de transio para
um mesmo smbolo.

Definio 1
Um autmato finito determinstico definido pela quntupla:
M = ( Q, , , q0, F)

Onde: Q conjunto finito de estados


alfabeto de entrada (ou conjunto finito de smbolos)
funo de transio (ou funo programa) definida por : Q x Q
q0 estado inicial ( q0 Q )
F conjunto de estados finais ( F Q )
_______________________________________________________________________________________________________________ -2-
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Exemplo 01
Dado o Autmato abaixo, especifique sua quntupla.

Figura 01. Autmato exemplo 01

Q = { q0, q1, q2}


= { 0, 1 }
estado inicial = q0
estado final = q1
as funes de transies:
(q0, 0) = q0 (q1, 0) = q0 (q2, 0) = q2
(q0, 1) = q1 (q1, 1) = q2 (q2, 1) = q1
Portanto M = ({ q0, q1, q2 }, { 0, 1 }, , q0, {q1})

Exemplo 02
Desenhe o autmato sabendo que = {a, b}, L = { w | w possui aa ou bb como subcadeia } e o autmato
dado por M = ({q0, q1, q2, qf }, { a, b }, , q0, {qf}), onde o est representado na tabela abaixo.

a b
q0 q1 q2
q1 qf q2
q2 q1 qf
qf qf qf

Figura 02. Autmato exemplo 02

Note que um autmato finito sempre pra ao processar uma cadeia, j que a entrada finita e o conjunto
de estado tambm. Ele pode parar em duas ocasies: ao aceitar uma cadeia ou ao rejeit-la. Quando ele
termina de ler a cadeia e assume um estado final a cadeia aceita. Caso contrrio, a cadeia rejeitada.

_______________________________________________________________________________________________________________ -3-
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Definio 2:
A linguagem associada a um autmato o conjunto de todas as cadeias aceitas pelo autmato:
L(M) = { w * : *(q0, w) F)

Definio 3:
Dois Autmatos Finitos M1 e M2 so ditos equivalentes se, e somente se:
L(M1) = L(M2)
Ou seja, reconhecem a mesma linguagem

Exemplo 03:
Construa autmatos para reconhecer a linguagem L = {w1 : w {0,1}*}

M = ({q0, qf }, {0,1}, , q0, {qf}), M = ({q0, qf }, { 0, 1 }, , q0, {qf}),


(q0, 0) = q0 (q0, 0) = q0
(q0, 1) = { q0 , qf } (q0, 1) = qf
(qf, 0) = q0
(qf, 1) = qf

Definio 4:
A funo de transio (ou programa) estendida denotada por:
*: Q x * Q

Exemplo 04:
Sabendo que M = ({ q0, q1, q2 }, { 0, 1 }, , q0, {q2}) e
(q0, 0) = q0 (q1, 0) = q0 (q2, 0) = q2
(q0, 1) = q1 (q1, 1) = q2 (q2, 1) = q1
Portanto, *( q0, 011) = q2
J que (q0, 0) = q0, (q0, 1) = q1 e (q1, 1) = q2
(q0, 011) = (q0, 11) = (q1, 1) = q2

Figura 03. Autmato exemplo 04

_______________________________________________________________________________________________________________ -4-
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Definio 5:
Uma linguagem L dita regular se, e somente se existe um autmato finito determinstico M, tal
que: L = L(M).

Exemplo 05:
a) Considere a linguagem: L = { w | w possui um nmero par de a e b}
Ma = {{ q0, q1, q2, q3 }, {a,b}, , q0, {q0})

Figura 04. Autmato exemplo 05(a)

b) Considere a linguagem: L = { w | w possui um nmero mpar de a e b}


Mb = {{ q0, q1, q2, qf }, {a,b}, , q0, {qf})

Figura 05. Autmato exemplo 05(b)

_______________________________________________________________________________________________________________ -5-
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
3. Autmato Finito No Determinstico (AFN)

Definio 6:
Um autmato finito no determinstico definido pela quntupla:
M = ( Q, , , q0, F)

Onde: Q conjunto finito de estados


alfabeto de entrada, conjunto finito de smbolos
funo de transio ou funo programa definido por : Q x 2Q
q0 estado inicial ( q0 Q )
F conjunto de estados finais ( F Q )

Obs: 2Q representa os subconjuntos de Q.

Em alguns livros cita-se que um AFN pode ter movimentos vazios. Um movimento vazio uma transio
sem leitura de smbolo algum. A a funo transio dada por: : Q x { } 2Q

Exemplo 06:
Considere a linguagem: L = {w | w possui aa ou bb como subcadeia }
O autmato finito no determinstico pode ser dado por:
M = {{ q0, q1, q2, qf}, {a,b}, , q0, { qf }}
Onde
(q0, a) = {q0, q1} (q1, a) = {qf} (qf, a) = {qf}
(q0, b) = {q0, q2} (q2, b) = {qf} (qf, b) = {qf}

Figura 06. Autmato exemplo 06

_______________________________________________________________________________________________________________ -6-
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Exemplo 07:
Considere a linguagem: L = {w | w possui aaa como sufixo }
O autmato finito no determinstico pode ser dado por:
M = {{ q0, q1, q2, qf}, {a,b}, , q0, { qf }}
Onde
(q0, a) = {q0, q1} (q1, a) = {q2}
(q0, b) = {q0} (q2, a) = {qf}

Figura 07. Autmato exemplo 07

4. Equivalncia entre os autmatos AFD e AFN


Sabe-se que um autmato M1 equivalente a um autmato M2 se , e somente se, L(M1) = L(M2) pela
Definio 2. Ento se pode transformar um AFN em AFD para que a linguagem lida pelo AFN seja do
tipo regular.

Seja M = ( Q, , , q0, F) um AFN qualquer. Seja M = ( Q, , , <q0>, F) um AFD construdo a partir


de M como segue:
Q o conjunto de todas as combinaes, sem repeties, de estado de Q as quais so
denotados por <q1q2...qn>, onde qj pertence a Q para j em {1, 2, ..., n}. Note-se que a ordem
dos elementos no distingue mais combinaes. Por exemplo, <q1q2> = <q2q1>;
tal que (<q1...qn>, a) = <p1...pm> se e somente se, ({q1,...qn},a) = {p1, ..., pm}. Ou seja,
um estado de M representa uma imagem dos estados de todos os caminhos alternativos de
M;
<q0> estado inicial;
F conjunto de todos os estados <q1q2...qn> pertencentes a Q tal que alguma componente qj
pertence a F, para j em {1,2,...,n}.

Algoritmo
1. Crie um grafo Gd com um vrtice rotulado por <q0>. Identifique-o como sendo o estado inicial.
2. Repita os seguintes passos at que no faltem mais arestas:
a. Tome um vrtice <qn1, qn2, ..., qnk> de Gd que ainda no tenha aresta rotulada por a .
b. Compute as funes transies estendidas: *(qn1,a), *(qn2,a), ...., *(qnk,a)
c. Produza <qm1, qm2, ..., qml> como sendo a unio das funes transies estendidas calculadas
no passo anterior
d. Crie um vrtice no Gd rotulado por <qm1, qm2, ..., qml> , caso esse vrtice no tenha sido criado.
e. Adicione a Gd a aresta de <qn1, qn2, ..., qnk> at <qm1, qm2, ..., qml> e rotule-a com o smbolo a

_______________________________________________________________________________________________________________ -7-
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
3. Todo estado de Gd cujo rtulo contm algum qf F (estados finais de AFN) definido como sendo
um estado final do AFD
4. se o AFN aceita a cadeia vazia, faa o estado inicial do AFD ser um estado final.

Exemplo 08:
Considere o exemplo o autmato AFN do exemplo 07.
M = {{ q0, q1, q2, qf}, {a,b}, , q0, { qf }}
(q0, a) = {q0, q1} (q1, a) = {q2}
(q0, b) = {q0} (q2, a) = {qf}

Para construir um AFD tem-se: M = {Q, {a,b}, , <q0>, F}

vrtice <q0 > e smbolo a


(<q0>, a) = <q0, q1>, j que (q0, a) = {q0, q1}
vrtice <q0 > e smbolo b
(<q0>, b) = <q0>, j que (q0, b) = {q0}

vrtice <q0, q1 > e smbolo a


(<q0, q1>, a) = <q0, q1, q2>, j que (q0, a) = {q0, q1} e (q1, a) = {q2}
vrtice <q0, q1 > e smbolo b
(<q0, q1>, b) = <q0>, j que (q0, b) = {q0}

vrtice <q0, q1, q2 > e smbolo a


(<q0, q1, q2>, a) = <q0, q1, q2, qf >, j que (q0, a)={q0, q1}, e (q1, a)={q2} e (q2, a) = {qf}
vrtice <q0, q1, q2 > e smbolo b
(<q0, q1, q2>, b) = <q0>, j que (q0, b) = {q0}

_______________________________________________________________________________________________________________ -8-
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
vrtice <q0, q1, q2, qf > e smbolo a
(<q0, q1, q2, qf>, a) = <q0, q1, q2, qf>, j que (q0, a)={q0, q1}, e (q1, a)={q2} e (q2, a)= {qf}
vrtice <q0, q1, q2, qf > e smbolo b
(<q0, q1, q2, qf>, b) = <q0>, j que (q0, b) = {q0}

F = {<q0, q1, q2, qf>}

Portanto o AFD, M = {Q, {a,b}, , <q0>, F}, a partir de AFN :

M = {Q, {a,b}, , <q0>, F}


Q = {<q0 >, <q0, q1>, <q0, q1, q2>, <q0, q1, q2, qf>}
F = {<q0, q1, q2, qf>}
(<q0 >, a) = <q0, q1>
(<q0, q1>, a) = <q0, q1, q2>
(<q0, q1, q2 >, a) = <q0, q1, q2, qf>
(<q0, q1, q2, qf>, a) = <q0, q1, q2, qf>
(<q0 >, b) = <q0>
(<q0, q1>, b) = <q0 >
(<q0, q1, q2>, b) = <q0>
(<q0, q1, q2, qf>, b) = <q0>

O grafo:

Figura 08. Autmato exemplo 08

Exemplo 09:
Considere um AFN como segue:
M = {{ q0, q1, qf}, {0,1}, , q0, { qf }}
(q0, 0) = {q0, qf} (qf, 0) = {q1} (q1, 1) = {q1}
(q0, 1) = {qf} (qf, 1) = {q1}

Para construir um AFD tem-se: M = {Q, {0,1}, , <q0>, F}

_______________________________________________________________________________________________________________ -9-
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Q = {<q0>}
vrtice <q0 > e smbolo 0
(<q0>, 0) = <q0, qf>, j que (q0, 0) = {q0, qf}
vrtice <q0 > e smbolo 1
(<q0>, 1) = <qf>, j que (q0, 1) = {qf

Q = {<q0>, <q0, qf>, < qf> }


vrtice <q0, qf > e smbolo 0
(<q0, qf>, 0) = <q0, q1, qf>, j que (q0, 0) = {q0, qf} e (qf, 0) = {q1}
vrtice <q0, qf> e smbolo 1
(<q0, qf>, 1) = <q1, qf>, j que (q0, 1) = {qf} e (qf, 1) = {q1}

Q = {<q0>, <q0, qf>, < qf>, <q0, q1, qf>, <q1, qf> }
vrtice <qf > e smbolo 0
(<qf>, 0) = <q1>, j que (qf, 0) = {q1}
vrtice <qf > e smbolo 1
(<qf>, 1) = <q1>, j que (qf, 1) = {q1}

Q = {<q0>, <q0, qf>, < qf>, <q0, q1, qf>, <q1, qf>, <q1> }
vrtice <q0, q1, qf > e smbolo 0
(<q0, q1, qf>, 0) = <q0, q1, qf >, j que (q0, 0) = {q0, qf} e (qf, 0) = {q1}
vrtice <q0, q1, qf > e smbolo 1
(<q0, q1, qf>, 1) = <q1, qf>, j que (q0, 1) = {qf } , (qf, 1) = {q1} e (q1, 1) = {q1}

Q = {<q0>, <q0, qf>, < qf>, <q0, q1, qf>, <q1, qf>, <q1> }
vrtice <q1, qf > e smbolo 0
(<q1, qf>, 0) = <q1>, j que (q1, 0) = {} e (qf, 0) = {q1}
vrtice <q1, qf> e smbolo 1
(<q1, qf>, 1) = <q1>, j que (q1, 1) = {q1} e (qf, 1) = {q1}

Q = {<q0>, <q0, qf>, < qf>, <q0, q1, qf>, <q1, qf>, <q1> }
vrtice <q1 > e smbolo 0
(<q1>, 0) = <>, j que (q1, 0) = {}
vrtice <q1> e smbolo 1
(<q1>, 1) = <q1>, j que (q1, 1) = {q1}

Q = {<q0>, <q0, qf>, < qf>, <q0, q1, qf>, <q1, qf>, <q1>, <>}
vrtice <> e smbolo 0
(<>, 0) = <>, j que (, 0) = {}
vrtice <> e smbolo 1
(<>, 1) = <>, j que (, 1) = {}

Portanto, M = {Q, {0,1}, , <q0>, F}


Q = {<q0>, <q0, qf>, < qf>, <q0, q1, qf>, <q1, qf>, <q1>, <>}
F = { <qf>, <q0, qf>, <q0, q1, qf>}
(<q0>, 0) = <q0, qf>
(<q0>, 1) = <qf>
_______________________________________________________________________________________________________________ - 10 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
(<q0, qf>, 0) = <q0, q1, qf>
(<q0, qf>, 1) = <q1, qf>
(<qf>, 0) = <q1>
(<qf>, 1) = <q1>
(<q0, q1, qf>, 0) = <q0, q1, qf >
(<q0, q1, qf>, 1) = <q1, qf>
(<q1, qf>, 0) = <q1>
(<q1, qf>, 1) = <q1>
(<q1>, 0) = <>
(<q1>, 1) = <q1>
(<>, 0) = <>
(<>, 1) = <>

Exemplo 10:
Considere um AFN como segue:
M = {{ q0, q1, q2, q3, qf}, {0,1}, , q0, { qf }}
(q0, 0) = {q1} (q1, 0) = {q0} (q2, 0) = {q3} (q3, 0) = {q2}
(q0, 1) = {q2, qf} (q1, 1) = {q3, qf} (q2, 1) = {q0, qf} (q3, 1) = {q1, qf}
Para construir um AFD tem-se: M = {Q, {0,1}, , <q0>, F}

Q = {<q0>}
vrtice <q0 > e smbolo 0
(<q0>, 0) = <q1>, j que (q0, 0) = {q1}
vrtice <q0 > e smbolo 1
(<q0>, 1) = < q2, qf>, j que (q0, 1) = {q2, qf}

Q = {<q0>, <q1>, < q2, qf >}


vrtice <q1 > e smbolo 0
(<q1>, 0) = <q0>, j que (q1, 0) = {q0}
vrtice <q1 > e smbolo 1
(<q1>, 1) = < q3, qf >, j que (q1, 1) = {q3, qf}

Q = {<q0>, <q1>, < q2, qf >, < q3, qf >}


vrtice <q2, qf > e smbolo 0
(<q2, qf>, 0) = <q3>, j que (q2, 0) = {q3} e (qf, 0) = {}
vrtice <q2, qf> e smbolo 1
(<q2, qf>, 1) = <q0, qf>, j que (q2, 1) = {q0,qf} e (qf, 1) = {}

Q = {<q0>, <q1>, < q2, qf >, < q3, qf >, <q3>, <q0, qf>}
vrtice <q3, qf > e smbolo 0
(<q3, qf>, 0) = <q2>, j que (q3, 0) = {q2} e (qf, 0) = {}
vrtice <q3, qf> e smbolo 1
(<q3, qf>, 1) = <q1, qf>, j que (q3, 1) = {q1, qf} e (qf, 1) = {}

Q = {<q0>, <q1>, < q2, qf >, < q3, qf >, <q3>, <q0, qf>, <q2>, <q1, qf>}
vrtice <q3 > e smbolo 0
_______________________________________________________________________________________________________________ - 11 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
(<q3>, 0) = <q2>, j que (q3, 0) = {q2}
vrtice <q3 > e smbolo 1
(<q3>, 1) = < q3, qf >, j que (q3, 1) = {q1, qf}

Q = {<q0>, <q1>, < q2, qf >, < q3, qf >, <q3>, <q0, qf>, <q2>, <q1, qf>}
vrtice <q0, qf > e smbolo 0
(<q0, qf>, 0) = <q1>, j que (q0, 0) = {q1} e (qf, 0) = {}
vrtice <q0, qf> e smbolo
(<q0, qf>, 1) = <q2, qf>, j que (q0, 1) = {q2, qf} e (qf, 1) ={ }

Q = {<q0>, <q1>, < q2, qf >, < q3, qf >, <q3>, <q0, qf>, <q2>, <q1, qf>}
vrtice <q2 > e smbolo 0
(<q2>, 0) = <q2>, j que (q2, 0) = {q3}
vrtice <q2 > e smbolo 1
(<q2>, 1) = < q0, qf >, j que (q2, 1) = {q0, qf}
Q = {<q0>, <q1>, < q2, qf >, < q3, qf >, <q3>, <q0, qf>, <q2>, <q1, qf>}
vrtice <q1, qf > e smbolo 0
(<q1, qf>, 0) = <q0>, j que (q1, 0) = {q0} e (qf, 0) = {}
vrtice <q1, qf> e smbolo
(<q1, qf>, 1) = <q3, qf>, j que (q1, 1) = {q3, qf} e (qf, 1) = {}

Portanto,
M = {Q, {0,1}, , <q0>, F}
Q = {<q0>, <q1>, < q2, qf >, < q3, qf >, <q3>, <q0, qf>, <q2>, <q1, qf>}
F = { <q0, qf>, <q1, qf>, <q2, qf>, <q3, qf>}
(<q0>, 0) = <q1>
(<q0>, 1) = < q2, qf>
(<q1>, 0) = <q0>
(<q1>, 1) = < q3, qf >
(<q2>, 0) = <q2>
(<q2>, 1) = < q0, qf >
(<q3>, 0) = <q2>
(<q3>, 1) = < q3, qf >
(<q0, qf>, 0) = <q1>
(<q0, qf>, 1) = <q2, qf>
(<q1, qf>, 0) = <q0>
(<q1, qf>, 1) = <q3, qf>
(<q2, qf>, 0) = <q3>
(<q2, qf>, 1) = <q0, qf>
(<q3, qf>, 0) = <q2>
(<q3, qf>, 1) = <q1, qf>

Exemplo 11:
Considere um AFN como segue:
M = {{ q0, q1, q2, qf}, {a,b}, , q0, { qf }}
(q0, a) = {q0, q1} (q1, a) = {qf} (qf, a) = {qf}
_______________________________________________________________________________________________________________ - 12 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
(q0, b) = {q0, q2} (q2, b) = {qf} (qf, b) = {qf}
Para construir um AFD tem-se: M = {Q, {a,b}, , <q0>, F}

Q = {<q0>}
vrtice <q0 > e smbolo a
(<q0>, a) = < q0, q1>, j que (q0, a) = {q0, q1}
vrtice <q0 > e smbolo b
(<q0>, b) = < q0, q2>, j que (q0, b) = {q0, q2}

Q = {<q0>, < q0, q1>, < q0, q2>}


vrtice <q0, q1 > e smbolo a
(<q0, q1>, a) = < q0, q1 , qf >, j que (q0, a) = {q0, q1} e (q1, a) = {qf}
vrtice <q0, q1> e smbolo b
(<q0, q1>, b) = < q0, q2 >, j que (q0, b) = {q0, q2} e (q1, b) = {}

Q = {<q0>, < q0, q1>, < q0, q2>, < q0, q1 , qf >}
vrtice <q0, q2 > e smbolo a
(<q0, q2>, a) = < q0, q1>, j que (q0, a) = {q0, q1} e (q2, a) = {}
vrtice <q0, q2> e smbolo b
(<q0, q2>, b) = < q0, q2 , qf >, j que (q0, b) = {q0, q2} e (q2, b) = {qf}

Q = {<q0>, < q0, q1>, < q0, q2>, < q0, q1 , qf >, < q0, q2 , qf >}
vrtice < q0, q1 , qf >e smbolo a
(< q0, q1 , qf >, a) = < q0, q1 , qf >, j que (q0, a) = {q0, q1}, (q1, a) = {qf } e (qf, a) = {qf}
vrtice < q0, q1 , qf > e smbolo b
(< q0, q1 , qf >, b) = < q0, q2 , qf >, j que (q0, b) = {q0, q2}, (q1, b) = {} e (qf, a) = {qf}

Q = {<q0>, < q0, q1>, < q0, q2>, < q0, q1 , qf >, < q0, q2 , qf >}
vrtice < q0, q2 , qf >e smbolo a
(< q0, q2 , qf >, a) = < q0, q1 , qf >, j que (q0, a) = {q0, q1}, (q2, a) = {} e (qf, a) = {qf}
vrtice < q0, q1 , qf > e smbolo b
(< q0, q2 , qf >, b) = < q0, q2 , qf >, j que (q0, b) = {q0, q2}, (q2, b)= {qf} e (qf, a) = {qf}

Portanto,
M = {Q, {a,b}, , <q0>, F}
Q = {<q0>, < q0, q1>, < q0, q2>, < q0, q1 , qf >, < q0, q2 , qf >}
F = { <q0, qf>, <q1, qf>, <q2, qf>, <q3, qf>}
(<q0>, a) = < q0, q1>
(<q0>, b) = < q0, q2>
(<q0, q1>, a) = < q0, q1 , qf >
(<q0, q1>, b) = < q0, q2 >
(<q0, q2>, a) = < q0, q1>
(<q0, q2>, b) = < q0, q2 , qf >
(< q0, q1 , qf >, a) = < q0, q1 , qf >
(< q0, q1 , qf >, b) = < q0, q2 , qf >
(< q0, q2 , qf >, a) = < q0, q1 , qf >
(< q0, q2 , qf >, b) = < q0, q2 , qf >
_______________________________________________________________________________________________________________ - 13 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
5. Reduo de estados de um autmato finito

Definio 07:
Um autmato mnimo de uma Linguagem Regular L um Autmato Finito Determinstico
M = (Q, , , q0, F) tal que L = L(M) e que, para qualquer outro Autmato Finito Determinstico
M = (Q, , , q0, F) tal que L = L(M), tem-se que #Q >= #Q.

Um autmato Finito a ser minimizado deve satisfazer aos seguintes pr-requisitos:


1. Deve ser Determinstico (AFD)
2. No pode ter estados inacessveis (no atingveis a partir do estado inicial)
3. A funo programa deve ser total (a partir de qualquer estado so previstas transies para todos os
smbolos do alfabeto)

Caso o autmato no satisfaa algum dos pr-requisitos, necessrio gerar um autmato equivalente:
1. gerar um AFD equivalente
2. eliminar os estados inacessveis e suas correspondentes transies
3. para transformar a funo transio em total, suficiente introduzir um novo estado no-final d e
incluir as transies no previstas, tendo d como estado destino. Por fim, incluir um ciclo em d
para todos os smbolos do alfabeto.

Algoritmo de minimizao

Suponha um AFD M = (Q, , , q0, F) que satisfaz aos pr-requisitos de minimizao. Os passos do
algoritmo de minimizao so os seguintes:

1. TABELA. Construir uma tabela relacionando os estados distintos, onde cada par de estados ocorre
somente uma vez.

2. MARCAO DOS ESTADOS TRIVIALMENTE NO EQUIVALENTES. Marcar todos os


pares do tipo {estado final, estado no-final}, pois obviamente, estados finais no so equivalentes
a no-finais.

3. MARCAO DOS ESTADOS NO EQUIVALENTES. Para cada par {qu, qv} no marcado e
para smbolo a , suponha que (qu, a) = pu e (qv, a) = pv e:
a. Se pu = pv, ento qu equivalente a qv para o smbolo a e no deve ser marcado;
b. Se pu pv e o par {pu ,pv} no esto marcados, ento {qu ,qv} includo em uma lista a
partir de {pu ,pv} para posterior anlise;
c. Se pu pv e o par {pu ,pv} esto marcados, ento:
{qu ,qv} no equivalente e deve ser marcado
se {qu ,qv} encabea uma lista de pares, ento marcar todos pares da lista
(recursivamente)
_______________________________________________________________________________________________________________ - 14 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
4. UNIFICAO DOS ESTADOS EQUIVALENTES. Os estados dos pares no marcados so
equivalentes e podem ser unificados como segue:
a. A equivalncia de estados transitiva;
b. pares de estados no finais equivalentes podem ser unificados como um nico estado no
final;
c. Pares de estados finais equivalentes podem ser unificados como um nico estado final;
d. Se algum dos estados equivalentes inicial, ento correspondente estado unificado inicial

5. EXCLUSO DOS ESTADOS INTEIS. Por fim, os estados chamados inteis devem ser
excludos. Um estado q intil se no final e a partir de q no possvel atingir um esto final.
Deve-se reparar que o estado d (se includo) sempre intil.

Exemplo 11:
Considere um AFD como segue:
M = {{q0, q1, q2, q3, q4, q5}, {a,b}, , q0, {q0, q4, q5}}
(q0, a) = q2 (q1, a) = q1 (q2, a) = q4 (q3, a) = q5
(q0, b) = q1 (q1, b) = q0 (q2, b) = q5 (q3, b) = q4
(q4, a) = q3 (q4, b) = q2 (q5, a) = q2 (q5, b) = q3

Percebe-se que os pr-requisitos (1, 2 e 3) so satisfeitos. Ento se pode fazer a minimizao.


Para construir um AFM tem-se:

PASSO 1. TABELA
Pode-se montar a tabela em qualquer formato, porm deve-se ater ao fato de combinar todos os pares.
Veja algumas situaes:

Opo 01 Opo 02
q0 q0
q1 q1
q2 q2
q3 q3
q4 q4
q5 q5
q0 q1 q2 q3 q4 q5 q0 q1 q2 q3 q4 q5

Opo 03 Opo 04
q5 q5
q4 q4
q3 q3
q2 q2
q1 q1
q0 q0
q0 q1 q2 q3 q4 q5 q0 q1 q2 q3 q4 q5

Nesta apostila iremos adotar a Opo 01

_______________________________________________________________________________________________________________ - 15 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
PASSO 2. MARCAO DOS ESTADOS TRIVIALMENTE NO EQUIVALENTES.
Marcar todos os pares do tipo {estado final, estado no-final}, ou seja,
Estados finais: {q0, q4, q5}
Estados no finais: {q1, q2, q3}
Ento, devem ser marcados, na tabela, os pares: {q0, q1}, {q0, q2}, {q0, q3},
{q4, q1}, {q4, q2}, {q4, q3},
{q5, q1}, {q5, q2}, {q5, q3}

q0
q1 X
q2 X
q3 X
q4 X X X
q5 X X X
q0 q1 q2 q3 q4 q5

PASSO 3. MARCAO DOS ESTADOS NO EQUIVALENTES


Para isso, percorrem-se todos os pares no marcados na tabela, ou seja,
{q0, q4}, {q0, q5}, {q1, q2}, {q1, q3}, {q3, q2}, {q5, q4}
e verifica se so ou no equivalentes.

Para o par: {q0, q4}


(q0, a) = q2 (q4, a) = q3 forma o par {q2, q3}, q2 q3 e o par no est marcado(3.b) aguarde na lista
(q0, b) = q1 (q4, b) = q2 forma o par {q1, q2}, q1 q2 e o par no est marcado(3.b) aguarde na lista

Para o par: {q0, q5}


(q0, a) = q2 (q5, a) = q2 forma o par {q2, q2}, q2 = q2 e o par descartado (3.a)
(q0, b) = q1 (q5, b) = q3 forma o par {q1, q3}, q1 q3 e o par no est marcado(3.b) aguarde na lista

Para o par: {q1, q2}


(q1, a) = q1 (q2, a) = q4 forma o par {q1, q4}, q1 q4 e o par est marcado (3.a) marca {q1, q2}
(q1, b) = q0 (q2, b) = q5 ....

Como vai marcar {q1, q2} e o par {q0, q4} estava esperando que {q1, q2} fosse marcado, ento sero
marcados os dois pares: {q1, q2} e {q0, q4}.

q0
q1 X
q2 X X
q3 X
q4 X X X X
q5 X X X
q0 q1 q2 q3 q4 q5

Para o par: {q1, q3}


(q1, a) = q1 (q3, a) = q5 forma o par {q1, q5}, q1 q5 e o par est marcado (3.a) marca {q1, q3}
(q1, b) = q0 (q3, b) = q4 ....
_______________________________________________________________________________________________________________ - 16 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Como vai marcar {q1, q3} e o par {q0, q5} estava esperando que {q1, q3} fosse marcado, ento sero
marcados os dois pares: {q1, q3} e {q0, q5}.

q0
q1 X
q2 X X
q3 X X
q4 X X X X
q5 X X X X
q0 q1 q2 q3 q4 q5

Para o par: {q3, q2}


(q2, a) = q4 (q3, a) = q5 forma o par {q4, q5}, q4 q5 e o par no est marcado(3.b) aguarde na lista
(q2, b) = q5 (q3, b) = q4 forma o par {q5, q4}, q5 q4 e o par no est marcado(3.b) aguarde na lista

Para o par: {q5, q4}


(q5, a) = q2 (q4, a) = q3 forma o par {q2, q3}, q2 q3 e o par no est marcado(3.b) aguarde na lista
(q5, b) = q3 (q4, b) = q2 forma o par {q3, q2}, q3 q2 e o par no est marcado(3.b) aguarde na lista

PASSO 4. UNIFICAO DOS ESTADOS EQUIVALENTES


Foram verificados todos os pares e os pares {q3, q2} e {q5, q4} ficaram ser serem marcados. Portanto:
(1) como {q3, q2} no foi marcado, ento q3 equivalente a q2. Cria-se o estado q23 para unific-los.
(2) como {q5, q4} no foi marcado, ento q5 equivalente a q4. Cria-se o estado q45 para unific-los.

PASSO 5. EXCLUSO DOS ESTADOS INTEIS


Sero excludos os estados: q2 , q3, q4, q5

Ento:
M = {{q0, q1, q23, q45}, {a,b}, , q0, {q0, q45}}
(q0, a) = q23 (q1, a) = q1 (q23, a) = q45 (q45, a) = q23
(q0, b) = q1 (q1, b) = q0 (q23, b) = q45 (q45, b) = q23

Exemplo 12:
Considere um AFD como segue:
M = {{q0, q1, q2, q3, q4}, {0,1}, , q0, {q4}}
(q0, 0) = q1 (q1, 0) = q2 (q2, 0) = q1
(q0, 1) = q3 (q1, 1) = q4 (q2, 1) = q4
(q3, 0) = q2 (q4, 0) = q4
(q3, 1) = q4 (q4, 1) = q4

_______________________________________________________________________________________________________________ - 17 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
PASSO 1. TABELA
q0
q1
q2
q3
q4
q0 q1 q2 q3 q4

PASSO 2. MARCAO DOS ESTADOS TRIVIALMENTE NO EQUIVALENTES.


Marcar todos os pares do tipo {estado final, estado no-final}, ou seja,
Estados finais: q4
Estados no finais: {q0, q1, q2, q3}
Ento deve marcar na tabela os pares: {q4, q0}, {q4, q1}, {q4, q2}, {q4, q3}
q0
q1
q2
q3
q4 X X X X
q0 q1 q2 q3 q4

PASSO 3. MARCAO DOS ESTADOS NO EQUIVALENTES


Para isso deve percorrer todos os pares no marcados na tabela, ou seja,
{q0, q1}, {q0, q2}, {q0, q3}, {q1, q2}, {q1, q3}, {q2, q3}
e verificar se so no equivalentes.

O par: {q0, q1}


(q0, 0) = q1 (q1, 0) = q2 forma o par {q1, q2}, q1 q2 e o par no est marcado(3.b) aguarde na lista
(q0, 1) = q3 (q1, 1) = q4 forma o par {q3, q4}, q3 q4 e o par est marcado (3.a) marcar {q0, q1}

q0
q1 X
q2
q3
q4 X X X X
q0 q1 q2 q3 q4
O par: {q0, q2}
(q0, 0) = q1 (q2, 0) = q1 forma o par {q1, q1}, q1 = q1 e o par descartado (3.a)
(q0, 1) = q3 (q2, 1) = q4 forma o par {q3, q4}, q3 q4 e o par est marcado (3.a) marcar {q0, q2}

q0
q1 X
q2 X
q3
q4 X X X X
q0 q1 q2 q3 q4

_______________________________________________________________________________________________________________ - 18 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
O par: {q0, q3}
(q0, 0) = q1 (q3, 0) = q2 forma o par {q1, q2}, q1 q2 e o par no est marcado(3.b) aguarde na lista
(q0, 1) = q3 (q3, 1) = q4 forma o par {q3, q4}, q3 q4 e o par est marcado (3.a) marcar {q0, q3}

q0
q1 X
q2 X
q3 X
q4 X X X X
q0 q1 q2 q3 q4
O par: {q1, q2}
(q1, 0) = q2 (q2, 0) = q1 forma o par {q2, q1}, q2 q1 e o par no est marcado(3.b) aguarde na lista
(q1, 1) = q4 (q2, 1) = q4 forma o par {q4, q4}, q4 = q4 e o par descartado (3.a)

O par: {q1, q3}


(q1, 0) = q2 (q3, 0) = q2 forma o par {q2, q2}, q2 = q2 e o par descartado (3.a)
(q1, 1) = q4 (q3, 1) = q4 forma o par {q4, q4}, q4 = q4 e o par descartado (3.a)

O par: {q2, q3}


(q2, 0) = q1 (q3, 0) = q2 forma o par {q1, q2}, q1 q2 e o par no est marcado(3.b) aguarde na lista
(q2, 1) = q4 (q3, 1) = q4 forma o par {q4, q4}, q4 = q4 e o par descartado (3.a)

PASSO 4. UNIFICAO DOS ESTADOS EQUIVALENTES


Foram verificados todos os pares e os pares {q3, q2} e {q1, q2} e {q1, q3} ficaram ser serem marcados.
Portanto:
(1) como {q3, q2} no foi marcado, ento q3 equivalente a q2.
(2) como {q1, q2} no foi marcado, ento q1 equivalente a q2.
(3) como {q1, q3} no foi marcado, ento q1 equivalente a q3.
Ento q1 equivalente a q2 que equivalente a q3. Cria-se o estado q123 para unific-los.

PASSO 5. EXCLUSO DOS ESTADOS INTEIS


Sero excludos os estados: q1, q2 , q3

Portanto:
M = {{q0, q123, q4}, {0,1}, , q0, {q4}}
(q0, 0) = q123 (q123, 0) = q123 (q4, 0) = q4
(q0, 1) = q123 (q123, 1) = q4 (q4, 1) = q4

_______________________________________________________________________________________________________________ - 19 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
6. Expresses Regulares
A expresso regular uma maneira de descrever os conjuntos regulares. Usa-se a expresso regular em
construo de compiladores, editores, sistemas operacionais, protocolos, etc.

Trata-se de um formalismo denotacional, tambm considerado gerador, pois se pode inferir como
construir (gerar) as palavras de uma linguagem.

Uma expresso regular definida a partir de conjuntos bsicos e operaes de concatenao e unio.

Definio 08:
Uma Expresso Regular (ER) sobre um alfabeto definida como:
a) (l-se phi) uma ER e denota uma linguagem vazia
b) uma ER e denota a linguagem contendo exclusivamente a palavra vazia, ou seja, {}
c) x ( smbolo do alfabeto ) uma ER e denota a linguagem contendo a palavra {x}
d) se r e s so ER e denotam as linguagens R e S, respectivamente, ento
d.1) (r) uma ER
d.2) (r + s) uma ER e denota a linguagem R S
d.3) (r . s) uma ER e denota a linguagem RS = {uv | u R e v S}
d.4) r* uma ER e denota a linguagem R*

OBS:
1. a concatenao sucessiva (*) tem precedncia sobre a concatenao (.) e a unio (+)
2. a concatenao tem precedncia sobre a unio.

Se r e s so ER e denotam as linguagens R e S, respectivamente, ento


a) L( r + s ) = L( r ) L( s )
b) L( r . s ) = L( r ) . L( s ) ou L( r s ) = L( r ) L( s )
c) L(( r )) = L( r )
d) L( r* ) = ( L( r ) )*

Exemplo 13:
Seja L = { anbm | n 0, m 0}, ento L = { , a, b, aa, bb, ab, aab ...}
Considere as Linguagens:
L1 = {a}
L2 = {b}
L3 = {ak | k 0}
L4 = {bl | l 0}
L5 = { ak bl | k 0, l 0}
As linguagens L1 e L2 so conjuntos sobre o = {a,b} e por definio (8.c) uma ER.
As linguagens L3 e L4 so obtidas por concatenao sucessiva, ou seja, L3 = L1* e L4 = L2* e portanto so
ER (definio 8.d.4).
A linguagem L5 uma ER obtida pela concatenao de L3 e L4 (definio 8.d.3).
Assim, L = { anbm | n 0, m 0} pode ser denotada pela ER = a*b*
_______________________________________________________________________________________________________________ - 20 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Outros exemplos de ER e suas linguagens:

ER Linguagem representada
aa Somente a cadeia aa
ba* Cadeias que iniciam com b, seguida por zero ou mais a
(a+b)* Todas as cadeias sobre {a,b}
(a+b)*aa(a+b)* Todas as cadeias contendo aa como subcadeia
a*ba*ba* Todas as cadeias contendo exatamente dois b
(a+b)*(aa+bb) Todas as cadeias que terminam com aa ou bb
(a+ )(b+ba)* Todas as cadeias que no possuem dois a consecutivos

As principais leis algbricas das ER so apresentadas a seguir. Sejam R, S, T trs ER quaisquer. Ento:
(1) Associatividade:
- da unio: (R + S) + T = R + (S + T)
- da concatenao: (R . S) . T = R . (S . T)
(2) Comutatividade:
- da unio: R + S = S + R
- da concatenao: no se aplica
(3) Elemento neutro:
- da unio: R + = + R = R
- da concatenao: . R = R . = R
(4) Distribuio da concatenao sobre a unio:
- esquerda: R . ( S + T ) = R.S + R.T
- direita: (R + S) . T = R.T + S.T

Teorema 01:
Se r uma Expresso Regular (ER), ento L(r) uma Linguagem Regular.

Prova:
Por definio, uma linguagem Regular se, e somente se, possvel construir uma AF (determinstico ou
no), que reconhea a linguagem.
a) Base da induo: seja r uma ER com zero operador. Ento se tem:
r = (linguagem vazia)
r = (linguagem contendo exclusivamente a palavra vazia, ou seja, {})
r=x(x )
Com os Autmatos Finitos: M1 = {{q0}, , 1 , qf, }
M2 = {{qf}, , 2 , qf, { qf } }
M3 = {{q0 , qf }, {x} , 3 , q0, { qf }}

_______________________________________________________________________________________________________________ - 21 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
qo qf qo x qf

M1 M2 M3

Figura 09. Base de induo

b) Hiptese de Induo: Seja r uma ER com at n (n > 0) operadores. Suponha que possvel definir um
AF que aceita a linguagem gerada por r;

c) Passo da Induo: Seja r uma ER com (n+1) operadores. Ento r pode ser representada por um dos
seguintes casos, onde r1 e r2 possuem conjuntamente no mximo n operadores:
r = r1 +r2
r = r1 r2
r = r1*
Portanto por hiptese de induo possvel construir os autmatos:
M1 = {Q1, 1 , 1 , q01, { qf1 }} e M2 = {Q2, 2 , 2 , q02, { qf2 }}
Tais que L(M1) = L(r1) e L(M2) = L(r2).

Os AFs, que aceitam a linguagem L(r), para cada caso, so como segue:
c.1) r = r1 +r2 M = {Q1 Q2, 1 2, , q0, { qf }} (vide Figura 10)
c.2) r = r1 r2 M = {Q1 Q2, 1 2, , q01, { qf2 }} (vide Figura 11)
c.3) r = r1 * M = {Q1 { q0, qf }, 1 , , q0, { qf }} (vide Figura 12)

Figura 10. Adio de expresses regulares

Figura 11. Multiplicao de expresses regulares

_______________________________________________________________________________________________________________ - 22 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Figura 12. Concatenaes sucessivas de expresses regulares

7. Gramtica Regular

Definio 09:
Seja G = (V, T, P, S) uma gramtica e sejam A e B elementos de V e w uma palavra de T*.
Ento G uma:
(a) Gramtica Linear Direita (GLD) se todas as regras de produo so da forma:
A wB ou A w
(b) Gramtica Linear Esquerda (GLE) se todas as regras de produo so da forma:
A Bw ou A w
(c) Gramtica Linear Unitria Direita (GLUD) se todas as regras de produo so como na linear
direita e, adicionalmente |w| <= 1
(d) Gramtica Linear Unitria Esquerda (GLUE) se todas as regras de produo so como na
linear esquerda e, adicionalmente |w| <= 1

Exemplo 14:
(a) G = ({S}, {x, y}, P, S)
P = { S xyS, S x}
Assim, G uma GLD

(b) G = ({S1, S2, S3}, {a, b}, P, S1)


P = { S1 S2ab, S2 S2ab | S3, S3 a }
Assim, G uma GLE

(c) G = ({S, A, B}, {a, b}, P, S)


P = { S A, A aB| , B Ab }
Assim, G no Linear

Definio 10:
Uma Gramtica Regular qualquer Gramtica Linear

_______________________________________________________________________________________________________________ - 23 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Teorema 02:
Se L uma linguagem gerada por uma Gramtica Regular, ento L uma Linguagem Regular.

Prova:
Para mostrar que uma linguagem regular, suficiente construir um AF que a reconhea.
Suponha G = ( V, T, P, S) uma GLUD. Ento o AF M = {Q, , , q0, F} com:
Q = V { qf }
=T
q0 = S
F = { qf }
, como na tabela abaixo:
Tipo de Produo Transio Gerada
A (A, ) = qf
Aa (A, a) = qf
AB (A, ) = B
A aB (A, a) = B
Simula as derivaes de G, ou seja, L(G) = L(M).

A demonstrao que L(G) = L(M) verdade de fato, est no nmero de derivaes.


Seja elemento de (T V)* e w elemento de T*, ento:
(a) base de induo. Suponha S 1 , ento, se:
(a .1.) = , existe uma regra S e assim para o AFM, (S, ) = qf
(a .2.) = a, existe uma regra S a e assim para o AFM, (S, a) = qf
(a .3.) = A, existe uma regra S A e assim para o AFM, (S, ) = A
(a .4.) = aA, existe uma regra S aA e assim para o AFM, (S, a) = A

(b) hiptese de induo. Suponha que S n , n > 1, tal que, se:


(b.1.) = w, ento *(S, w) = qf
(b.2.) = wA, ento *(S, w) = A

(c) passo da induo. Suponha que S n+1 . Ento ocorre a hiptese (b.2.) e S n wA 1
(c.1.) = w, existe uma regra A e assim
*(S, w) = (*(S, w),) = (A, ) = qf
(c.2.) = wb, existe uma regra A b e assim
* (S, wb) = (* (S, w),b) = (A, b) = qf
(c.3.) = wB, existe uma regra A B e assim
* (S, w) = (* (S, w),) = (A, ) = B
(c.4.) = wbB, existe uma regra A bB e assim
* (S, wb) = (* (S, w),b) = (A, b) = B

_______________________________________________________________________________________________________________ - 24 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Exemplo 15:
Considere a GLUD, G = ({S, A, B}, {a,b}, P, S), onde P :
S aA
A bB|
B aA
O AF M que reconhece a linguagem gerada por G : M = ({S,A,B, qf }, {a,b}, , S, {qf }), tal que
dada na tabela abaixo:
Produo Transio Gerada
S aA (S, a) = A
A bB (A, b) = B
A (A, ) = qf
B aA (B, a) = A

Teorema 03:
Se L uma linguagem Regular, ento existe uma Gramtica Regular que gera L.

Prova:
Se L uma Linguagem Regular, ento existe um AFN M = {Q, , , q0, F} tal que L(M) = L. A idia
central da demonstrao construir uma GLD G a partir de M tal que L(G) = L(M).
Ento G = (V, T, P, S) tal que: V = Q {S} e T =
P construdo como segue:

Transio Tipo de Produo


- S q0
- qf
( qi, a) = qk q i a qk

Suponha w elemento de *
a) base de induo: seja w tal que seu comprimento seja zero (|w|=0). Ento a cadeia vazia
pertence linguagem L(M), logo q0 um estado final e assim q0
S q0

b) hiptese de induo. Seja w tal que |w| = n (n 1) e *(q0 , w) = q. Ento


b.1) q no estado final, ento S wq
b.2) q estado final, ento S wq w

c) Passo de induo. Seja w tal que |wa| = n+1 e *(q0 , wa) = p. Ento (*(q0 , w),a) = p.
Portanto ocorre somente a hiptese b.1 acima e se:
c.1) p no estado final, ento S n wq 1 wap
c.2) p estado final, ento S n wq 1 wap 1 wa

_______________________________________________________________________________________________________________ - 25 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Exemplo 16:
Seja M = ({q0, q1, q2}, {a,b,c}, , q0, {q0, q1, q2})
Ento G = ({q0, q1, q2, S}, {a,b,c}, S, P), onde P como a tabela abaixo:

Transio Tipo de Produo


- S q0
- Q0
- Q1
- Q2
( q0, a) = q0 Q 0 a q 0
( q0, b) = q1 Q0 b q 1
( q1, b) = q1 Q1 b q 1
( q1, c) = q2 Q 1 c q 2
( q2, c) = q2 Q 2 c q 2

8. Linguagens Regulares
Tm-se vrios caminhos para descrever linguagens regulares: AFD, AFN, ER e gramticas regulares.
Algumas conexes entre esses conceitos foram definidas nesta apostila atravs de teoremas. Foram vistas
as transformaes de ER em Autmatos Finitos (4), Autmatos Finitos em Gramticas Regulares (5),
Gramticas em Autmatos Finitos (3). As outras transformaes podem ser encontradas nos livros de
Referncia.

Existem algumas questes sobre linguagens regulares que necessitam anlise:


(1) Como determinar se uma linguagem regular?
(2) Como verificar se uma linguagem regular infinita ou finita (ou at mesmo vazia)?
(3) possvel analisar duas linguagens regulares e concluir se so iguais ou diferentes?
(4) A classe das linguagens regulares fechada para operaes de unio, concatenao e interseco?

_______________________________________________________________________________________________________________ - 26 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Lema do bombeamento

Se L uma Linguagem regular, ento existe uma constante n tal que para qualquer palavra w de L
onde | w | n, w pode ser definida como w = uvz onde | uv | n, | v | 1 e para todo i 0, uviz palavra
de L.

8.1. Linguagens regulares e no regulares


Para mostrar que uma linguagem regular suficiente represent-la usando um dos formalismos
apresentados (AF, ER, GR), j a prova de que ela no regular necessita anlise caso a caso. Uma forma
usar o lema do Bombeamento.

Exemplo 17:
Seja a linguagem L, no regular, sobre {a,b} sendo que
L = { w | w possui o mesmo nmero de smbolos a e b}

A prova que L no regular usando o lema do bombeamento e por absurdo.

Suponha L regular, ento existe um AFD M com n estados que aceita L.


Seja w = anbn
Pelo lema do bombeamento, w pode ser escrita como w = uvz, s que um absurdo, j que como |uv| n,
uv composta exclusivamente por smbolos a . Neste caso, por exemplo, uv2z no pertence a L, pois no
possui o mesmo nmero de smbolos a e b.

Para n = 4, w = aabb
1 caso: u = a, v = a, z = bb, |uv| = |aa| = 2 4, mas aa2bb no pertence a L
2 caso: u = aa, v = b, z = b, |uv| = |aab| = 3 4, mas aab2b no pertence a L

8.2. Linguagem regular vazia, finita ou infinita

Teorema 04:
Se L uma linguagem Regular aceita por um AF M com n estados, ento L :
a.) vazia se, e somente se, M no aceita qualquer palavra w tal que | w | < n
b.) finita se, e somente se, M no aceita uma palavra w tal que n | w | < 2n
c.) infinita se, e somente se, M aceita uma palavra w tal que n | w | < 2n

Exemplo 18:
Considere o autmato M = ({q0, q1, q2}, {a,b}, , q0, { q2}) com as funes de transies definidas abaixo:
(q0, a) = q1, (q1, a) = q2, (q2, b) = q0.
A linguagem reconhecida pelo autmato M infinita, j que o autmato aceita uma palavra w tal que
n | w | < 2n, ou seja 3 | w | < 6 com w = aabaa com comprimento 5.
_______________________________________________________________________________________________________________ - 27 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
8.3. Igualdade de linguagens

Teorema 05:
Se M1 e M2 so autmatos finitos, ento existe um algoritmo para determinar se L(M1) = L(M2).

Pela definio 3 viu-se que se conseguirmos encontrar M1 e M2 equivalentes, L(M1) = L(M2). Ento existe
um algoritmo para determinar se L(M1) = L(M2) como os de reduo de estados, transformao de AFN
para AFD.

8.4. Operaes fechadas sobre as linguagens regulares

Teorema 06:
A classe das linguagens regulares fechada para as seguintes operaes: unio, concatenao,
complemento e interseco.

Diz-se que um conjunto fechado sobre uma operao se o elemento obtido coma aplicao da operao
pertence ao conjunto.

8.4.1. Fechamento para a unio

Se L1 regular ento existe um AFD M1 = {Q1, 1 , 1 , q01, F1}, tal que L(M1)= L1
Se L2 regular ento existe um AFD M2 = {Q2, 2 , 2 , q02, F2}, tal que L(M2)= L2

Se for possvel construir um AFD M3 , tal que L(M3)= (L1 L2 ) , ento L1 L2 regular e a prova est
feita.

Seja M3 = {Q3, 3 , 3 , q03, F3}, ento:


Q3 = { (qi, qj); qi Q1 e qj Q2}
3 = 1 2
3 ((qi,qj),a) = (1(qi,a), 2(qj,a))
q03 = ( q01,q02)
F3 = {(qi,qj); qi F1 ou qj F2}

_______________________________________________________________________________________________________________ - 28 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Exemplo 19:
L1 = {aw: w e {a,b}*}
L2 = {wa: w e {a,b}*}

Ento M1 = {{q0, q1, q2}, {a,b}, 1 , q0, {q1}}


Com 1 (q0, a) = q1 ,
1 (q0, b) = q2 ,
1 (q1, a) = q1 ,
1 (q1, b) = q1 ,
1 (q2, a) = q2 ,
1 (q2, b) = q2 .

Ento M2 = {{q3, q4}, {a,b}, 1 , q3, {q4}}


Com 2 (q3, a) = q4 ,
2 (q3, b) = q3 ,
2 (q4, a) = q4 ,
2 (q4, b) = q3 .

Assim o M3 = {Q3, 3 , 3 , q03, F3} ser


Q3 = {(qi, qj); qi Q1 e qj Q2} = {(q0, q3), (q0, q4), (q1, q3), (q1, q4), (q2, q3), (q2, q4)}
3 = 1 2 = {a, b}
q03 = (q1,q3)
F3 = {(qi,qj); qi F1 ou qj F2} = {(q1, q3) (q1, q4), (q0, q4), (q2, q4)}

3 ((qi,qj),a) = (1(qi,a), 2(qj,a)), ento se tem:


3 ((q0, q3), a) = (1 (q0, a), 2 (q3, a)) = (q1, q4)
3 ((q0, q3), b) = (1 (q0, b), 2 (q3, b)) = (q2, q3)
3 ((q0, q4), a) = (1 (q0, a), 2 (q4, a)) = (q1, q4)
3 ((q0, q4), b) = (1 (q0, b), 2 (q4, b)) = (q2, q3)
3 ((q1, q3), a) = (1 (q1, a), 2 (q3, a)) = (q1, q4)
3 ((q1, q3), b) =(1 (q1, b), 2 (q3, b)) = (q1, q3)
3 ((q1, q4), a) = (1 (q1, a), 2 (q4, a)) = (q1, q4)
3 ((q1, q4), b) = (1 (q1, b), 2 (q4, b)) = (q1, q3)
3 ((q2, q3), a) = (1 (q2, a), 2 (q3, a)) = (q2, q4)
3 ((q2, q3), b) = (1 (q2, b), 2 (q3, b)) = (q2, q3)
3 ((q2, q4), a) = (1 (q2, a), 2 (q4, a)) = (q2, q4)
3 ((q2, q4), b) = (1 (q2, b), 2 (q4, b)) = (q2, q3)

8.4.2. Fechamento para a interseo

Se L1 regular ento existe um AFD M1 = {Q1, 1 , 1 , q01, F1}, tal que L(M1)= L1
Se L2 regular ento existe um AFD M2 = {Q2, 2 , 2 , q02, F2}, tal que L(M2)= L2

Se for possvel construir um AFD M3 , tal que L(M3)= (L1 L2 ) , ento L1 L2 regular.
_______________________________________________________________________________________________________________ - 29 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
Seja M3 = {Q3, 3 , 3 , q03, F3}, ento:
Q3 = { (qi, qj); qi Q1 e qj Q2}
3 = 1 2
3 ((qi,qj),a) = (1(qi,a), 2(qj,a))
q03 = ( q01,q02)
F3 = {(qi,qj); qi F1 e qj F2}

Exemplo 20:
L1 = {aw: w e {a,b}*} e L2 = {wa: w e {a,b}*}

Assim o M3 = {Q3, 3 , 3 , q03, F3} ser


Q3 = {(qi, qj); qi Q1 e qj Q2} = {(q0, q3), (q0, q4), (q1, q3), (q1, q4), (q2, q3), (q2, q4)}
3 = 1 2 = {a, b}
q03 = (q1,q3)
F3 = {(qi,qj); qi F1 e qj F2} = {(q1, q4)}
3 ((qi,qj),a) = (1(qi,a), 2(qj,a)), como no exemplo anterior para unio.

8.4.3. Fechamento sobre concatenao

Se L1 regular ento existe um AFD M1 = {Q1, 1 , 1 , q01, F1}, tal que L(M1)= L1
Se L2 regular ento existe um AFD M2 = {Q2, 2 , 2 , q02, F2}, tal que L(M2)= L2

Se for possvel construir um AFD M3 , tal que L(M3)= (L1 . L2 ) , ento L1 . L2 regular.

Seja M3 = {Q3, 3 , 3 , q03, F3}, ento:


Q3 = Q1 Q2
3 = 1 2
q03 = q01
F3 = F2
3 (qi, a) = 1(qi,a)
3 (qj, a) = 2(qj,a)
3 (qk, ) = q03, onde qk F1

Exemplo 21:
Sejam L1 = {aw: w e {a,b}*} e L2 = {wa: w e {a,b}*}

Assim o M3 = {Q3, 3 , 3 , q1, {q4}} ser


Q3 = {q0, q1, q2, q3, q4}
3 = 1 2 = {a, b}

3(q0, a) = q1 ,
3(q0, b) = q2 ,
3(q1, a) = q1 ,
3(q1, b) = q1 ,
_______________________________________________________________________________________________________________ - 30 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02
3(q2, a) = q2 ,
3(q2, b) = q2 .
3(q3, a) = q4 ,
3(q3, b) = q3 ,
3(q4, a) = q4 ,
3(q4, b) = q3 ,
3(q1, ) = q3

8.4.4. Fechamento sobre complemento

Seja uma linguagem regular sobre *. Seja M = {Q, , ,q0 ,F}, um AFD tal que L(M) = L. A idia do que
segue consiste em inverter as condies aceita/rejeita de M para reconhecer L. Entretanto, como M pode
rejeitar por indefinio necessrio modificar o autmato, garantindo que somente ir parar ao terminar
de ler todas a entrada. Assim, a inverso das condies aceita/rejeita pode ser obtida transformando os
estados finais em no finais e vice-versa.

A construo do AFD M= {Q, , ,q0 ,F} tal que L(M) = L como segue
Q= Q {d}
F= Q- F
como , com as seguintes transies adicionais, para todo a :
(q,a) = d se (q,a) no definida
(d,a) = d
claramente o AFD M construdo acima tal que L(M) = L

Exemplo 22:
L = {aw: w e {a,b}*}
Ento M = {{q0, q1, q2}, {a,b}, , q0, {q1}}
Com (q0, a) = q1 ,
(q0, b) = q2 ,
(q1, a) = q1 ,
(q1, b) = q1 ,
(q2, a) = q2 ,
(q2, b) = q2 .

Ento M= {Q, , ,q0 ,F} tal que L(M) = L


Q= Q {d} = {q0, q1, q2, d}
F= Q- F = {q0, q1, q2, d} - {q1} = {q0, q2, d}
Com (q0, a) = q1 ,
(q0, b) = q2 ,
(q1, a) = q1 ,
(q1, b) = q1 ,
(q2, a) = q2 ,
(q2, b) = q2 ,
(d, a) = d ,
(d, b) = d .
_______________________________________________________________________________________________________________ - 31 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 02