aula 9 propriedadedas linguagensregulares
TRANSCRIPT
Curso: Ciência da Computação
Linguagens Formais e Autômatos
Aula 9
Propriedade das Linguagens Regulares
Aspectos Teóricos da Computação 2/16
Notas de Aula
Aspectos Teóricos da Computação 3/16
Linguagens RegularesUma das principais características das linguagens regulares é o fato de serem representadas por formalismos de pouca complexidade, grande eficiência e fácil implementação.
No entanto por ser simples é restrita e limitada, sendo fácil definir linguagens não regulares.
(a)Assim alguma questões sobre linguagens regulares necessitam ser analisadas.
(b)Como determinar se uma linguagem é regular?
(c)A Classe das Linguagens Regulares é fechada para operações de união, concatenação e intersecção (ou seja, a oepração de duas linguagens regulares resulta em uma linguagem regular)?
(d)Como verificar se uma linguagem regular é infinita ou finita (ou até mesmo vazia)?
(e)É possível analisar duas linguagens regulares quaisquer e concluir se são iguais ou diferentes?
Vamos responder essas questões com esse conteúdo.
Aspectos Teóricos da Computação 4/16
Bombeamento para as Linguagens Regulares
A ideia do bombeamento é a seguinte:
● Se uma linguagem é regular, então é aceita por um autômato finito determinístivo o qual possui um número finito e predefinido de n estados;
● Se o autômato reconhece uma entrada w de comprimento maio ou igual ao número de estados n, obrigatoriamente o autômato assume algum estado q mais de uma vez e, portanto, existe um ciclo na função programa que passa por q;
● Logo, w pode ser dividida em três subpalavras w=uvz tal que |uv| ≤ n, |v| ≥ 1 e onde v é a parte de w reconhecida pelo ciclo;
● Claramente, tal ciclo pode ser executado (“bombeado”) zero ou mais vezes.
Portanto, para qualquer i ≥ 0, uviz, é aceita pelo autômato (ou seja, é palavra da linguagem)
q0 q q
f
u z
v
Aspectos Teóricos da Computação 5/16
Bombeamento para as Linguagens Regulares
Se L é uma linguagem regular, então:
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
sendo que, para todo i ≥ 0, uviz é palavra de L.
Aspectos Teóricos da Computação 6/16
Exemplo
Considere o autômato abaixo.
Qual é a linguagem aceita?
q0
q1
qfa q
2b
ba
Aspectos Teóricos da Computação 7/16
Exemplo
Considere o autômato abaixo.
abb*a
n=4
no caso particular de w = abbba, vale que:
|w| = 5
qr=q
s=q
1
u=a, v=bb, z=ba
q0
q1
qfa q
2b
ba
Aspectos Teóricos da Computação 8/16
Analisando ainda o nosso autômato
Considere o autômato abaixo.
abb*a
Esse autômato pode ter menos estados para reconhecer a mesma linguage?
5 minutos para pensar.
q0
q1
qfa q
2b
ba
Aspectos Teóricos da Computação 9/16
Investigação se é Linguagem Regular
Para mostrar que uma linguagem é regular, é suficiente representá-la usando um dos formalismos apresentados anteriormente – Autômato Finito, Expressão Regular ou Gramática Regular)
No entanto para mostrar que uma linguagem não é regular temos que fazer a verificação caso a caso.
Aspectos Teóricos da Computação 10/16
Linguagem Não RegularA seguinte linguagem sobre {a,b} é não regular:
L={w|w possui o mesmo número de símbolos a e b}
A prova que segue é por absurdo.
Suponha que L é regular, Então existe um AFD com n estados que aceita L.
Seja w=anbn palavra de L sendo |w|=2n ≥ n. Logo, pelo lema anterior – Bombeamento para as Linguagens Regulares – w pode ser definida como w=uvz tal que:
|uv| ≤ n
|v| ≥ 1
sendo que, para todo i ≥ 0, uviz é palavra de L, o que é um absurdo, pois, como |uv| ≤ n, uv obrigatoriamente é composta exclusivamente por símbolos a. Neste caso, por exemplo, uv2z não pertence a L, pois o número de símbolos a será maior que o número de símbolos b.
Aspectos Teóricos da Computação 11/16
Operações Fechadas sobre as Linguagens Regulares
Operações sobre linguagens podem ser usadas para:
● Construir novas linguagens regulares a partir de linguagens regulares conhecidas (definida uma álgebra);
● Provar propriedades;
● Construir algoritmos.
Uma importante característica da Classe de Linguagens Regulares é ser fechada para diversas operações, com destaque para:
● União;
● Concatenação;
● Complemento;
● Intersecção.
Aspectos Teóricos da Computação 12/16
Operação Complemento
Relembrando: O complemento de um conjunto são todos os elementos que pertencem ao conjunto universo mas não pertencem ao conjunto.
Por exemplo:
Seja um linguagem L definida sobre ∑ = {a,b}
Ela é identificada pelo AFD abaixo
Construa um AFD que aceite somente as palavras que não são aceitas por L.
Exercício.
q0
q1
qfa q
2 a,ba,b
Aspectos Teóricos da Computação 13/16
Operação Complemento Suponha que L é uma linguagem regular sobre ∑ *. Então existe um AFD: M = (∑, Q, δ,q
0, F)
tal que: ACEITA(M) = L A ideia do que segue consiste em inverter as condições de ACEITA/REJEITA de M para reconhecer ~L. Entretanto, com M pode rejeitar por indefinição é necessário modificar o autômato, garantindo que somente irá parar ao terminar de ler toda a entrada. Para tal, é suficiente introduzir um novo estado não-final d. o qual será destino de todas as transições originalmente indefinidas. Um ciclo em d para todos os símbolos do alfabeto garante que o autômato terminará de ler toda a entrada. Por fim, a inversão das condições ACEITA/REJEITA pode ser obtida transformando os estados finais em não finais e vice-versa. A construção do AFD: M
C = (∑, Q
C, δ
C, q
0, F
C)
tal que: ACEITA(MC) = ~L
é como segue (suponha d não pertence a Q). Q
C = QU{d}
FC = Q
C – F
δC
é como δ , com as seguintes transições adicionais (para todo a Є ∑ e q Є Q):
δC(q,a) = d se δ
C(q,a) não é definida
δC(d,a) = d
Claramente, o autômato finito MC construído acima é tal que:ACEITA(M
C) = ~L ou seja ACEITA(M
C) = REJEITA(M)
Aspectos Teóricos da Computação 14/16
ExemploConsidere o AFD: M = ({a,b}, {q
0,q
1,q
2,q
f},δ,q
0,{q
f})
Qual é a linguagem aceita por esse autômato?
L = a(a+b)(a+b)
Vamos construir o AFD que reconhece a linguagem complemento ~L, que são todas as palavras que não são aceitas por M.
MC = ({a,b}, {q
0,q
1,q
2,q
f,d},δ
C,q
0,{q
0,q
1,q
2,d}
ACEITA(MC) = ~L ou seja ACEITA(M
C) = REJEITA(M)
q0
q1
qfa q
2 a,ba,b
q0
q1
qfa q
2 a,ba,b
db a,b
a,b
Aspectos Teóricos da Computação 15/16
Ler
● Seçao 4.1, 4.2, 4.3 do livro.
Aspectos Teóricos da Computação 16/16
Exercícios1. Desenvolva o AFD
C que aceita a L
C a linguagem aceita pelo autômato abaixo: Toda string que
começa por a e tiver dois as é aceita e toda string que começa por b e tiver dois bs é aceita.
2. (Exercício 4.2 do livro texto) Para cada linguagem abaixo, desenvolva um correspondente autômato finito e exemplifique o lema do bombeamento para linguagens regulares de forma a ilustrar a existência de mais de um bombeamento
(a) {anbm | n ≥ 0 e m ≥ 0}
(b) {anbmar | n ≥ 0, m ≥ 0 e r ≥ 0}
3. Prove que as linguagens não são regulares (suponha que n Є N e m Є N):
(a) {ww | w é palavra de {a,b}*}.
(b) {w | (w=anbm ou w=ambn), n ≥ m}
q0
q1
q2
qf
a
a b
bb
a