aula 9 propriedadedas linguagensregulares

16

Click here to load reader

Upload: wab030

Post on 25-May-2015

1.191 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Aula 9   propriedadedas linguagensregulares

Curso: Ciência da Computação

Linguagens Formais e Autômatos

Aula 9

Propriedade das Linguagens Regulares

Page 2: Aula 9   propriedadedas linguagensregulares

Aspectos Teóricos da Computação 2/16

Notas de Aula

Page 3: Aula 9   propriedadedas linguagensregulares

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.

Page 4: Aula 9   propriedadedas linguagensregulares

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

Page 5: Aula 9   propriedadedas linguagensregulares

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.

Page 6: Aula 9   propriedadedas linguagensregulares

Aspectos Teóricos da Computação 6/16

Exemplo

Considere o autômato abaixo.

Qual é a linguagem aceita?

q0

q1

qfa q

2b

ba

Page 7: Aula 9   propriedadedas linguagensregulares

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

Page 8: Aula 9   propriedadedas linguagensregulares

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

Page 9: Aula 9   propriedadedas linguagensregulares

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.

Page 10: Aula 9   propriedadedas linguagensregulares

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.

Page 11: Aula 9   propriedadedas linguagensregulares

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.

Page 12: Aula 9   propriedadedas linguagensregulares

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

Page 13: Aula 9   propriedadedas linguagensregulares

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)

Page 14: Aula 9   propriedadedas linguagensregulares

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

Page 15: Aula 9   propriedadedas linguagensregulares

Aspectos Teóricos da Computação 15/16

Ler

● Seçao 4.1, 4.2, 4.3 do livro.

Page 16: Aula 9   propriedadedas linguagensregulares

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