Lr.pdf

  • Uploaded by: Silva Bandeira
  • 0
  • 0
  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Lr.pdf as PDF for free.

More details

  • Words: 3,775
  • Pages: 108
Ciência da Computação

Teoria da Computação Linguagens Regulares Prof. Hilário Tomaz Alves de Oliveira [email protected]

1

Roteiro 2. Linguagens Regulares 2.1 Autômatos Finitos Determinísticos.

2.2 Autômatos Finitos Não Determinísticos. 2.3 Expressões Regulares.

2.4 Equivalências entre os modelos. 2.5 Lema do Bombeamento. 2

Leitura recomendada • Capítulo 1 – Linguagens Regulares.

3

Introdução • A teoria da computação começa com uma pergunta: O que é um computador? • Parece uma questão tola, já que todos nós usamos diariamente um computador. • Os computadores reais são bastante complicados para nos permitir construir uma teoria matemática manejável sobre eles diretamente. • Começaremos com o modelo mais simples, denominado Máquina de

estados finitos ou Autômato finito.

4

Autômatos Finitos • Autômatos Finitos (AF) são bons modelos para computadores com uma quantidade extremamente limitada de memória.

• O que um computador pode fazer com uma memória tão pequena? • Interagimos com tais computadores o tempo todo, pois eles residem no centro de vários dispositivos eletromecânicos.

5

Autômatos Finitos - Aplicações

6

Exemplo - Visão superior de uma porta automática

7

Exemplo – Funcionamento (Diagrama de Estados)

8

Exemplo – Funcionamento (Tabela de Transições)

9

Autômatos Finitos • Pensar em um controlador de porta automática como um Autômato finito é útil porque sugere formas padrão de representação.

• Esse controlador é um computador que tem apenas um bit de memória, capaz de registrar em qual dos dois estados o controlador está.

• Outros dispositivos comuns têm controladores com memórias bem maiores. • Controlador de elevador: • (1) Andar no qual o elevador está; e (2) Sinais recebidos dos botões. 10

Autômatos Finitos • Os autômatos finitos e suas contrapartidas probabilísticas cadeias de Markov são ferramentas úteis quando estamos tentando reconhecer padrões em dados. • Esses dispositivos são utilizados em processamento de voz e em reconhecimento de caracteres. • As cadeias de Markov têm sido usadas para modelar e fazer previsões de mudança de preços em mercados financeiros. 11

Autômatos Finitos - Exemplo 𝑀1

• A Figura acima é chamada de diagrama de estados de 𝑀1 . • M1 possui 3 estados. • q1 é o estado inicial de 𝑀1 . • q2 é o estado de aceitação (estado final) de 𝑀1 .

• As setas saindo ou entrando nos estados são as transições.

12

Autômatos Finitos - Funcionamento de 𝑀1 • 𝑀1 recebe como entrada uma cadeia de símbolos. • Como saída, 𝑀1 aceita ou rejeita a cadeia de entrada. Ao final do

processamento da cadeia de entrada: • Aceita: se 𝑀1 estiver em um estado de aceitação. • Rejeita: se 𝑀1 estiver em qualquer outro estado que não seja de aceitação. 13

Autômatos Finitos - Funcionamento de 𝑀1 • Entrada: 1101. • O processamento de 𝑀1 será executado da seguinte forma: 1. Começa no estado 𝑞1 ; 2. Lê o símbolo 1, segue a transição de 𝑞1 para 𝑞2 ; 3. Lê o símbolo 1, segue a transição de 𝑞2 para 𝑞2 ; 4. Lê o símbolo 0, segue a transição de 𝑞2 para 𝑞3 ; 5. Lê o símbolo 1, segue a transição de 𝑞3 para 𝑞2 ; 6. Aceita a cadeia porque 𝑀1 está no estado de aceitação 𝑞2 no final da entrada.14

Autômatos Finitos - Funcionamento de 𝑀1 • Entrada: 1101. • O processamento de 𝑀1 será executado da seguinte forma: 1. Começa no estado 𝑞1 ; 2. Lê o símbolo 1, segue a transição de 𝑞1 para 𝑞2 ; 3. Lê o símbolo 1, segue a transição de 𝑞2 para 𝑞2 ; 4. Lê o símbolo 0, segue a transição de 𝑞2 para 𝑞3 ; 5. Lê o símbolo 1, segue a transição de 𝑞3 para 𝑞2 ; 6. Aceita a cadeia porque 𝑀1 está no estado de aceitação 𝑞2 no final da entrada.15

Autômatos Finitos - Funcionamento de 𝑀1 • Entrada: 1101. • O processamento de 𝑀1 será executado da seguinte forma: 1. Começa no estado 𝑞1 ; 2. Lê o símbolo 1, segue a transição de 𝑞1 para 𝑞2 ; 3. Lê o símbolo 1, segue a transição de 𝑞2 para 𝑞2 ; 4. Lê o símbolo 0, segue a transição de 𝑞2 para 𝑞3 ; 5. Lê o símbolo 1, segue a transição de 𝑞3 para 𝑞2 ; 6. Aceita a cadeia porque 𝑀1 está no estado de aceitação 𝑞2 no final da entrada.16

Autômatos Finitos - Funcionamento de 𝑀1 • Entrada: 1101. • O processamento de 𝑀1 será executado da seguinte forma: 1. Começa no estado 𝑞1 ; 2. Lê o símbolo 1, segue a transição de 𝑞1 para 𝑞2 ; 3. Lê o símbolo 1, segue a transição de 𝑞2 para 𝑞2 ; 4. Lê o símbolo 0, segue a transição de 𝑞2 para 𝑞3 ; 5. Lê o símbolo 1, segue a transição de 𝑞3 para 𝑞2 ; 6. Aceita a cadeia porque 𝑀1 está no estado de aceitação 𝑞2 no final da entrada.17

Autômatos Finitos - Funcionamento de 𝑀1 • Entrada: 1101. • O processamento de 𝑀1 será executado da seguinte forma: 1. Começa no estado 𝑞1 ; 2. Lê o símbolo 1, segue a transição de 𝑞1 para 𝑞2 ; 3. Lê o símbolo 1, segue a transição de 𝑞2 para 𝑞2 ; 4. Lê o símbolo 0, segue a transição de 𝑞2 para 𝑞3 ; 5. Lê o símbolo 1, segue a transição de 𝑞3 para 𝑞2 ; 6. Aceita a cadeia porque 𝑀1 está no estado de aceitação 𝑞2 no final da entrada.18

Autômatos Finitos - Funcionamento de 𝑀1 • Entrada: 1101. • O processamento de 𝑀1 será executado da seguinte forma: 1. Começa no estado 𝑞1 ; 2. Lê o símbolo 1, segue a transição de 𝑞1 para 𝑞2 ; 3. Lê o símbolo 1, segue a transição de 𝑞2 para 𝑞2 ; 4. Lê o símbolo 0, segue a transição de 𝑞2 para 𝑞3 ; 5. Lê o símbolo 1, segue a transição de 𝑞3 para 𝑞2 ; 6. Aceita a cadeia porque 𝑀1 está no estado de aceitação 𝑞2 no final da entrada.19

Autômatos Finitos - Funcionamento de 𝑀1 • Entrada: 1101. • O processamento de 𝑀1 será executado da seguinte forma: 1. Começa no estado 𝑞1 ; 2. Lê o símbolo 1, segue a transição de 𝑞1 para 𝑞2 ; 3. Lê o símbolo 1, segue a transição de 𝑞2 para 𝑞2 ; 4. Lê o símbolo 0, segue a transição de 𝑞2 para 𝑞3 ; 5. Lê o símbolo 1, segue a transição de 𝑞3 para 𝑞2 ; 6. Aceita a cadeia porque 𝑀1 está no estado de aceitação 𝑞2 no final da entrada.

20

Autômatos Finitos • Definição. Um autômato finito é uma 5-upla (Q, , , q0, F), onde:

• Q é um conjunto finito conhecido como os estados, •  é um conjunto finito chamado de alfabeto, • : Q x  → Q é a função de transição, • q0 ∈ Q é o estado inicial, e • F ⊆ Q é o conjunto de estados de aceitação (estados finais). 21

Autômatos Finitos - Exemplo 𝑀1 • Podemos descrever M1 formalmente escrevendo M1 = {Q, , , q1, F}, onde: • Q = {q1, q2, q3},

•  = {0, 1}, •  é descrita como

0

1

q1

q1

q2

q2

q3

q2

q3

q2

q2

• q1 é o estado inicial, e • F = {q2}

22

Autômatos Finitos • Se A é o conjunto de todas as cadeias que a máquina M aceita, dizemos que A é a linguagem da máquina M e escrever L(M) = A. • Dizemos que M reconhece A ou que M aceita A.

• L(M1) = {w | w termina com o símbolo 1 ou um número par de 0s após o último 1.}.

23

Qual a definição formal de 𝑀2 ? • Podemos descrever M2 formalmente escrevendo M2 = {Q, , , q1, F}, onde:

24

Qual a definição formal de 𝑀2 ? • Podemos descrever M1 formalmente escrevendo M1 = {Q, , , q1, F}, onde: • Q = {q1, q2},

•  = {0, 1}, •  é descrita como

0

1

q1

q1

q2

q2

q1

q2

• q1 é o estado inicial, e • F = {q2}

25

Autômatos Finitos - 𝑀2 • Uma boa maneira para começar a entender uma Máquina é testá-la com algumas amostras de cadeias de entrada.

• Possíveis entradas (w): • 0101010 • 1100011 • 1010101

• Qual a linguagem reconhecida por 𝑀2 ? 26

Autômatos Finitos - 𝑀2 • Uma boa maneira para começar a entender uma Máquina é testá-la com algumas amostras de cadeias de entrada.

• Possíveis entradas (w): • 0101010 • 1100011 • 1010101

• Qual a linguagem reconhecida por 𝑀2 ? • L(𝑀2 ) = {w | w termina com 1.} 27

Autômatos Finitos - Exemplo 𝑀3 • 𝑀3 é muito similar à 𝑀2 , exceto pela posição do estado de aceitação.

• Como o estado inicial também é um estado de aceitação, então 𝑀3 aceita a cadeia vazia ().

• L(𝑀3 ) = {w | w é a cadeia vazia  ou termina com 0.} 28

Autômatos Finitos - Exemplo 𝑀4 • Descreva L(𝑀4 ).

29

Autômatos Finitos - Exemplo 𝑀5 • M5 mantém “contador da soma”

dos símbolos numéricos de entrada. •  = {0, 1, 2, }

• Toda vez que recebe o símbolo ela reinicia o contador de soma para 0. • M5 aceita w se o valor do contador da soma for 0 ou múltiplo de 3.

30

Definição Formal de Computação • Seja M= (Q, , , q0, F) um autômato finito e suponha que w = w1w2...wn seja uma cadeia onde cada wi é um membro do alfabeto.

• M aceita w se uma sequência de estados r0, r1...rn em Q existe com três condições: a) r0 = q0, b) (ri,wi+1) = ri+1, para i = 0,...,n-1; e c) rn  F.

Dizemos que M reconhece a linguagem A se L(A) = {w | M aceita w}. 31

Linguagem Regular

• Uma linguagem é chamada de uma LINGUAGEM REGULAR se algum autômato finito a reconhece.

32

Máquina 𝑀5 - Computação • Seja a máquina 𝑀5 e a cadeia w: 1022012 • Então𝑀5 aceita conforme a definição formal de computação, porque a sequência de estados na qual ela entra quando está computando sobre w é: • 𝑞0 , 𝑞1 , 𝑞1 , 𝑞0 , 𝑞2 , 𝑞1 , 𝑞0 , 𝑞0 , 𝑞1 , 𝑞0 • O que satisfaz as três condições.

33

Máquina 𝑀5 - Computação • L(𝑀5 ) = {w | • a soma dos símbolos em w é múltiplo 3,

• exceto que RESET retorna o contador para 0.}

• Como 𝑀5 reconhece essa linguagem, ela é

uma Linguagem Regular. 34

Operações Regulares

35

Operações Regulares • Na teoria da computação os objetos são linguagens e as ferramentas incluem operações especificamente projetadas para manipulá-las.

• Definimos três operações sobre linguagens, chamadas operações regulares, e as usamos para estudar propriedades de linguagens regulares.

36

Operações Regulares

37

Operações Regulares – Exemplo usando Conjuntos

38

Operação de União • Teorema: A classe de linguagens regulares é fechada sob a operação de união. • Em outras palavras, se A1 e A2 são linguagens regulares, o mesmo acontece com A1  A2.

• Ideia da Prova: Se A1 e A2 são linguagens regulares, então existem AFs M1 e M2 que as reconhecem, respectivamente. • Vamos fazer uma prova construtiva, ou seja, vamos construir um AF M, que

reconheça A1  A2, a partir de M1 e M2. 39

Operação de União - Prova

40

Operação de União - Prova

41

Operação de União - Prova

42

Operação de União – Prova Exemplo • M1 é um AF que reconhece as cadeias w com um número par de 1s. 0 1

0 qq11

q2 1

• M2 é um AF que reconhece as cadeias w com um ímpar de 0s. 1 0

1 qq13

q4 0 43

Operação de União – Prova Exemplo • Construir um M = M1  M2 • L(M) = { w | w possui um número par de 1s ou um número ímpar de 0s}.

• M1=(Q1,1,1,q1,F1) e M2=(Q2,2,2,q3,F2)

0

q1,q3

• M =(Q1Q2,,,(q1,q3),F)

0 1

1

• ((r1,r2),a) = (1(r1,a),2(r2,a)) • F= (F1Q2)  (Q1F2 )

q1,q4 1

1 0

q2,q4

q2,q3 0

44

Operação de Concatenação • Teorema: A classe de linguagens regulares é fechada sob a operação de concatenação. • Em outras palavras, se A1 e A2 são linguagens regulares, o mesmo acontece com A1  A2.

• De modo análogo à prova do teorema anterior, vamos construir um autômato M para reconhecer A1A2 a partir de M1 e M2. • M aceita sua entrada se ela puder ser quebrada em duas partes, onde M1

aceita a primeira parte e M2 aceita a segunda parte. 45

Operação de Concatenação • O problema é que M não sabe onde quebrar sua entrada.

• Para resolver esse problema introduzimos uma nova técnica chamada NÃO-DETERMINISMO.

46

Não-determinismo

47

Não-determinismo • Até agora em nossa discussão, todo passo de uma computação segue de uma maneira única do passo precedente. • Quando a máquina está em um dado estado e lê o próximo símbolo de entrada, sabemos qual será o próximo estado. • Chamamos isso de computação determinística.

• Em uma máquina não-determinística, várias escolhas podem existir para o próximo estado em qualquer ponto. • Não-determinismo é uma generalização de determinismo.

48

Exemplo 𝑁1

• L(𝑁1 ) = {w | w contém 101 ou 11 como uma subcadeia} 49

Computação Não-determinística

50

Computação de Exemplo 𝑁1 • Entrada: 010110

51

Exemplo - AFN q2

q3

q4

q6

q7

q1 q5

52

Exemplo - AFN q2

q3

q4

q5

q6

q7

q1

53

Exemplo - AFN q2

q3

q4

q5

q6

q7

q1

54

Exemplo - AFN q2

q3

q4

q5

q6

q7

q1

55

Exemplo - AFN q2

q3

q4

q5

q6

q7

q1

56

Exemplo - AFN q2

q3

q4

q5

q6

q7

q1

57

Exemplo - AFN q2

q3

q4

q5

q6

q7

q1

58

Exemplo - AFN q2

q3

q4

q5

q6

q7

q1

59

Exemplo - AFN • Como um dos caminhos terminou em um estado final, então a palavra é ACEITA pelo

q2

q3

q4

q5

q6

q7

q1

AFND.

60

Exemplo 𝑁2

61

AFD equivalente ao AFN 𝑁2 • Todo AFN pode ser convertido num AFD equivalente, mas às vezes esse AFD pode ter muito mais estados.

• O menor AFD para a linguagem L(A) contém oito estados. • Entender o funcionamento do

AFN é muito mais fácil.

62

Exemplo 𝑁3 • L(𝑁3 ) = {0𝑘 | k é múltiplo de 2 ou 3}

63

Definição Formal AFN

64

Definição Formal 𝑁1

65

Definição Computação AFN

66

Equivalência entre AFD e AFN

67

Equivalência AFD e AFN • Teorema: Todo autômato finito não-determinístico tem um autômato finito determinístico equivalente.

• IDÉIA DA PROVA: Se uma linguagem é reconhecida por um AFN, então temos de mostrar a existência de um AFD que também a reconhece. • A ideia é converter o AFN num AFD equivalente que simule o AFN.

68

Equivalência AFD e AFN • Vamos converter um AFN em um AFD equivalente que o simule. • Se k é o número de estados do AFN, ele tem 2k subconjuntos de estados. • Cada subconjunto corresponde a uma das possibilidades de que o AFD tem que se lembrar, portanto o AFD que simula o AFN terá 2k estados.

69

Equivalência AFD e AFN • Considere o AFN 𝑁4 seguinte:

70

Equivalência AFD e AFN • O conjunto de estados Q’ do AFD equivalente terá 23 = 8 estados. • Q’ = {∅, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}}

• O estado inicial é E({1}) ➔ o conjunto de estados que são atingíveis a partir

do estado 1 viajando ao longo de setas 𝜀, mais o próprio símbolo 1. • E({1}) = {1, 3}

71

Equivalência AFD e AFN • Os novos estados de aceitação são aqueles contendo o estado de aceitação de 𝑁4 . • F’ = {{1}, {1,2}, {1,3}, {1,2,3}}

• Finalmente, determinamos a função de transição do novo AFD. • Cada um dos estados do AFD vai para um lugar dada a entrada do símbolo a e um lugar quando a entrada é o símbolo b. 72

Equivalência AFD e AFN • O estado {1} vai para estado ∅ na entrada a, porque não existe nenhuma transição para a entrada a no estado {1}. • No AFD, o estado {2} vai para {2,3} com a entrada a, porque no 𝑁4 , o estado 2 vai para ambos 2 e 3 com a entrada a e não consegui ir mais longe. • O estado {3} vai para {1,3} na entrada a, pois em 𝑁4 o estado 3 vai para o estado 1 na entrada a e 1, por sua vez, vai para 3 com uma seta 𝜀. 73

AFD equivalente ao AFN 𝑁4

74

AFD (simplificado) equivalente ao AFN 𝑁4 • Podemos simplificar o AFD observando que nenhuma seta aponta para os estados {1} e {1,2}, portanto eles podem ser removidos sem afetar o AFD.

75

Linguagem Regular

• Uma linguagem é REGULAR se e somente se algum autômato finito não-determinístico a reconhece.

76

Fecho sob as Operações Regulares

77

Operação de União • Teorema: A classe de linguagens regulares é fechada sob a operação de união.

• IDÉIA DA PROVA: Temos as linguagens regulares A1 e A2 e desejamos provar que A1  A2 também é regular.

78

Construção de um AFN para reconhecer A1  A2

79

Operação de Concatenação • Teorema: A classe de linguagens regulares é fechada sob a operação de concatenação.

• IDÉIA DA PROVA: Temos as linguagens regulares A1 e A2 e desejamos provar que A1 ∘ A2 também é regular.

80

Construção de um AFN para reconhecer A1 ∘ A2

81

Operação Estrela • Teorema: A classe de linguagens regulares é fechada sob a operação estrela.

• IDÉIA DA PROVA: Dada a linguagem A1 desejamos provar que A1* também é regular.

82

Construção de um AFN para reconhecer A1*

83

Expressões Regulares

84

Expressões Regulares • Na aritmética, podemos usar as operações + e  para montar expressões tais como (5 + 3)  4. • Similarmente, podemos usar as operações regulares para montar expressões descrevendo linguagens, que são chamadas Expressões Regulares (ER).

• Exemplo: • (0  1)0*

85

Expressões Regulares • O valor de uma expressão aritmética é um número. • No exemplo passado (5 + 3)  4 é 32.

• O valor de uma expressão regular é uma linguagem. • No exemplo (0  1)0* ➔ (0  1) ∘ 0* • A linguagem das cadeias binárias que começam com 1 ou 0 seguido por um número qualquer de 0s. 86

Expressões Regulares • Exemplo: (0  1)* • Essa ER começa com a linguagem (0  1) e aplica a operação *. • L(ER) = todas as cadeias constituídas de 0s e 1s.

• Se  = {0,1}, pode escrever  como uma abreviação para (0  1) • * = (0  1)*

• Qual a linguagem descrita pela ER (0*)  (*1)? 87

Expressões Regulares - Precedência • A ordem de precedência dos operadores é • (R) • R* • R1R2 • R1  R2

• Então ab*c|d é analisada como sendo ((a(b*))c)|d 88

Expressões Regulares - Definição

89

Expressões Regulares - Operadores • Operadores de repetição: • R∗ ➔ Zero ou mais ocorrências de R • R+ ➔ Uma ou mais ocorrências de R (abreviação de RR*) • R𝐾 ➔ k repetições de R

90

Expressões Regulares - Operadores • Se tomarmos R como uma expressão regular qualquer, temos as identidades a seguir. • R∅ =R • R∘𝜀=R

• O inverso pode não ser verdadeiro. • R  𝜀 pode não ser R • R ∘ ∅ pode não ser R 91

Expressões Regulares - Exemplo • Suponha que nosso alfabeto é formado por letras, números, ‘@’, e ‘.’ • Por simplicidade ‘a’ representa letras e números.

• A expressão regular a seguir pode ser usada para extrair endereços de email: aa*(.aa*)*@aa*.aa*(.aa*)* • [email protected][email protected]

[email protected][email protected]

92

Expressões Regulares - Exemplo • Podemos simplificar essa ER para reconhecer e-mails. • aa*(.aa*)*@aa*.aa*(.aa*)*

• Exemplos: • [email protected][email protected][email protected]

[email protected] 93

Expressões Regulares - Exemplo • Podemos simplificar essa ER para reconhecer e-mails. • aa*(.aa*)*@aa*.aa*(.aa*)* • a+ (. a+ )*@ a+ . a+ (. a+ )*

• Exemplos: • [email protected][email protected]

[email protected][email protected]

94

Expressões Regulares - Exemplo • Podemos simplificar essa ER para reconhecer e-mails • aa*(.aa*)*@aa*.aa*(.aa*)* • a+ (. a+ )*@ a+ . a+ (. a+ )*

• Exemplos: • [email protected][email protected]

[email protected][email protected]

95

Expressões Regulares - Exemplo • Podemos simplificar essa ER para reconhecer e-mails • aa*(.aa*)*@aa*.aa*(.aa*)* • a+ (. a+ )*@ a+ . a+ (. a+ )* • a+ (. a+ )*@ a+ (. 𝑎+ )+

• Exemplos: • [email protected][email protected][email protected], [email protected]

96

Equivalência entre ER e Autômatos

97

Equivalência ER e Autômatos • Expressões regulares e autômatos finitos são equivalentes em seu poder descritivo. • Teorema: Uma linguagem é regular se e somente se alguma expressão regular a descreve. • Este teorema tem duas direções. • Todo ER pode ser convertida para um AF

• Todo AF pode ser convertido para uma ER*. 98

Equivalência ER e Autômatos • LEMA: Se uma linguagem é descrita por uma expressão regular, então ela é regular.

• IDEIA DE PROVA: Vamos supor que tenhamos uma expressão regular R descrevendo alguma linguagem A. • Mostramos como converter R em um AFN que reconhece A.

99

Equivalência ER e Autômatos • PROVA: Vamos converter R em um AFN. Consideramos os seis casos na descrição formal de expressões regulares.

100

Equivalência ER e Autômatos

101

Equivalência ER e Autômatos 4. R1  R2

5. R1  R2

6. R* • Para os três últimos casos usamos as construções dadas nas provas de que a classe de linguagens regulares é fechada sob as operações regulares.

102

Equivalência ER e Autômatos - Exemplos

103

Equivalência ER e Autômatos - Exemplos

104

Equivalência ER e Autômatos • Construindo um AFN a partir da expressão regular (a  b)*

105

Linguagens não-regulares • Para entender o poder dos autômatos finitos e das expressões regulares você precisa entender também suas limitações. • Exemplo: B = { 0𝑛 1𝑛 | n ≥ 0} • Existe um método para provar que linguagens, como a anterior, não são regulares. • LEMA DO BOMBEAMENTO. 106

Dúvidas

107

Próximos Assuntos .... • Aula 4 – Linguagens Livres de Contexto.

108

More Documents from "Silva Bandeira"