Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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)
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
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}*}
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
_______________________________________________________________________________________________________________ -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})
_______________________________________________________________________________________________________________ -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)
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}
_______________________________________________________________________________________________________________ -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}
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}
_______________________________________________________________________________________________________________ -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}
O grafo:
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}
_______________________________________________________________________________________________________________ -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>, <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) = {}
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 >, < 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>, < 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.
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.
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
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
_______________________________________________________________________________________________________________ - 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
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
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
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
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)
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.
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
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)
_______________________________________________________________________________________________________________ - 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
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).
(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:
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
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:
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.
_______________________________________________________________________________________________________________ - 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.
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}
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
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.
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.
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.
_______________________________________________________________________________________________________________ - 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}*}
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}*}
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.
Exemplo 21:
Sejam L1 = {aw: w e {a,b}*} e L2 = {wa: w e {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
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 .