aula 4 linguagens regularese automatosfinitosdeterministicos

35
Curso: Ciência da Computação Linguagens Formais e Autômatos Aula 4 Linguagens Regulares

Upload: wab030

Post on 06-Jun-2015

350 views

Category:

Education


4 download

TRANSCRIPT

Page 1: Aula 4   linguagens regularese automatosfinitosdeterministicos

Curso: Ciência da Computação

Linguagens Formais e Autômatos

Aula 4

Linguagens Regulares

Page 2: Aula 4   linguagens regularese automatosfinitosdeterministicos

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

Notas de Aula

.

Page 3: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 3/35

Linguagens Regulares

● O estudo das linguagens regulares é abordado usando os seguintes formalismos:➔ Autômato Finito. Trata-se d eum formalismo

operacional ou reconhecedor, sendo basicamente, um sistema de estados finitos;

➔ Expressão Regular. Trata-se de um formalismo denotacional, também considerado gerador, o qual é definido a partir de conjuntos (linguagens) básicos e das operações de concatenação e de união;

➔ Gramática Regular. Trata-se de um formalismo axiomático ou gerador o que, como o nome indica, é uma gramática, mas com restrições de forma das regras de produção.

Page 4: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 4/35

Linguagens Regulares

De acordo com a hierarquia de Chomsky, as linguagens regulares constituem a classe de

linguagem mais simples, sendo possível desenvolver algoritmos de reconhecimento, de geração ou de conversão entre formalismos de pouca complexidade, de grande eficiência e de

fácil implementação.

Page 5: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 5/35

Linguagens Regulares

Desvantagens:● Limitações de expressividade

Vantagens● Simplicidade ● Algoritmos desenvolvidos para essas linguagens

tem alta taxa de eficiência em tempo de processamento.

● Consigo construir outras linguagens regulares a partir de uma existente.

● Provar propriedades.● Construir algoritmos.

Page 6: Aula 4   linguagens regularese automatosfinitosdeterministicos

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

Linguagens Regulares

Aplicação principal em Análise Léxica.

Análise léxica é o processo de analisar a entrada de linhas de caracteres (tal como o código-fonte de um programa de computador) e produzir uma sequência de símbolos chamado "símbolos léxicos" (lexical tokens), ou somente "símbolos" (tokens), que podem ser manipulados mais facilmente por um parser (leitor de saída).

A Análise Léxica é a forma de verificar determinado alfabeto. Quando analisamos uma palavra, podemos definir através da análise léxica se existe ou não algum caracter que não faz parte do nosso alfabeto, ou um alfabeto inventado por nós. O analisador léxico é a primeira etapa de um compilador, logo após virá a análise sintática.

Page 7: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 7/35

Linguagens Regulares

Para facilitar o estudo de Linguagens Regulares vamos introduzir 2 conceitos:

● Sistema de Estados Finitos.

● Composição de sistemas.

Page 8: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 8/35

Sistema de Estados Finitos

Um sistema de estados finitos é um modelo matemático de sistema com entradas e saídas discretas. Pode assumir um número finito e predefinido de estados.

Cada estado resume somente as informações do passado necessárias para determinar ações para a próxima entrada.

Page 9: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 9/35

Sistema de Estados Finitos

● Você consegue pensar um sistema de estados finitos.● 5 minutos em grupo.

Page 10: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 10/35

Sistema de Estados Finitos

Exemplo: Elevador● É um sistema que não memoriza as

requisições anteriores.● Cada estado sumariza as informações “andar

corrente” e “direção do movimento”. ● As entradas para o sistema são requisições

pendentes.

Page 11: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 11/35

Sistema de Estados Finitos

Exemplo: Analisador Léxico e Processadores de Texto● Cada estado memoriza a estrutura do prefixo

da palavra em análise.

Page 12: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 12/35

Sistema de Estados Finitos

Contra-Exemplo: Cérebro Humano● Um neurônio pode ser representado por um

número finito de bits. ● O cérebro humano é composto por 235 células. ● Portanto possível de representar por um

número finito de estados. ● Entretanto, o elevado número de combinações

de células determina uma abordagem pouco eficiente em termos práticos.

● Tal fenômeno é denominado explosão de estados.

Page 13: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 13/35

Composição Sequencial, Concorrente e Não Determinista

Um sistema em geral se constrói de maneira composicional , no sentido em que sistemas novos são construídos a partir de sistemas conhecidos. Dessa maneira fazendo uma desconstrução de sistemas podemos chegar até o nível mais elementar.

Três formas de composição se destacam:

(a) Sequencial. A execução da próxima componente depende da terminação da componente anterior.

(b) Concorrente. Resulta em componentes independentes, no sentido em que a ordem em que são executadas não é importante, e, portanto podem ser processadas ao mesmo tempo.

(c) Não determinista. A próxima componente a ser executada é uma escolha entre diversas componentes alternativas. O não determinismo pode ser:

• Interno. O sistema escolhe aleatoriamente a próxima componente a ser executada.

• Externo. A escolha da próxima componente a ser executada é externa ao sistema.

Page 14: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 14/35

Composição Sequencial, Concorrente e Não Determinista

Exemplo: Considere um universo de pessoas em um banco

● Sequencial: em uma fila, o atendimento do próximo cliente depende do atendimento do cliente anterior, o pagamento de uma conta depende do fornecimento do valor.

● Concorrente: os diversos caixas atendem independentemente diversos clientes; clientes nos caixas executam ações independentemente dos clientes que aguardam na fila.

● Não-determinista: quando dois ou mais caixas ficam disponíveis ao mesmo tempo, o próximo cliente pode escolher em qual caixa será atendido; o simples caminhar de um indivíduo pode aleatoriamente iniciar com a perna esquerda ou direita.

Page 15: Aula 4   linguagens regularese automatosfinitosdeterministicos

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

Composição Sequencial, Concorrente e Não Determinista

Focaremos na nossa disciplina a composição sequencial e não determinista.

A semântica não determinística adotada na disciplina é a usual para Linguagens Formais e pode ser resumida como segue:

● Considera o não determinismo interno;

● Objetiva determinar a capacidade de reconhecer linguagens e de solucionar problemas.

Page 16: Aula 4   linguagens regularese automatosfinitosdeterministicos

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

Autômato Finito

Autômato Finito é um sistema de estados finitos o qual constitui um modelo computacional do tipo sequencial muito comum em diversos estudos teórico-formais da Computação e Informática, com destaque para Linguagens Formais, Compiladores, Semântica Formal e Modelos para Concorrência.

Page 17: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 17/35

Autômato Finito

Um AF pode ser:

● Determinístico: dependendo do estado corrente e do símbolo lido, o sistema pode assumir um único estado bem determinado;

● Não determinístico: dependendo do estado corrente e do símbolo lido, o sistema pode assumir um conjunto de estados alternativos;

● Como movimentos vazios: dependendo do estado corrente e sem ler qualquer símbolo, o sistema pode assumir um conjunto de estados (portanto é não determinístico). Movimentos vazios podem ser vistos como transições encapsuladas nas quais, excetuando-se por uma eventual mudança de estado, nada mais pode ser observado, de forma análoga à noção de encapsulação das linguagens orientadas a objetos.

Page 18: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 18/35

Autômato Finito

Autômato Determinístico, Não determinístico e Com movimentos vazios são equivalentes em termos de poder computacional.

Page 19: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 19/35

Autômato FinitoComposição:

a) Fita. Dispositivo de entrada que contém a informação a ser processada;

b) Unidade de Controle. Reflete o estado corrente da máquina. Possui uma unidade de leitura (cabeça da fita) a qual acessa uma célula da fita de cada vez e movimenta-se exclusivamente para a direita;

c) Programa, Função Programa ou Função de Transição. Função que comanda as leituras e define o estado da máquina.

A fita é finita e armazena um símbolo em cada célula. Os símbolos pertencem a um alfabeto de entrada. Não é possível gravar sobre a fita (e não existe memória auxiliar).

O programa é uma função parcial tal que: Dependendo do estado corrente e do símbolo lido, determina o novo estado do autômato

Page 20: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 20/35

Autômato Finito

a a b c c b a

Controle

Page 21: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 21/35

Autômato Finito: Definição FormalUm Autômato Finito Determinístico (AFD) ou simplesmente Automato Finito M é uma 5-upla ordenada:

M = { ∑, Q, δ, q0, F}

Na qual:

a) ∑ é um alfabeto de símbolos de entrada, ou simplesmente alfabeto de entrada;

b) Q é o conjunto de estados possíveis do autômato o qual é finito;

c) . δ é uma função programa ou simplesmente programa, ou ainda função de transição:

δ :Q x ∑ → Q

a qual é uma função parcial. Supondo que a função programa é definida para um estado p e um símbolo a, resultando no estado q, então:

δ : (p,a) = q

é uma transição do autômato;

d) q0 é um elemento distinguido de Q, denominado estado inicial;

e) F é um subconjunto de Q, denominado conjunto de estados finais.

Page 22: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 22/35

Autômato FinitoUm AFD pode ser representado na forma de um diagrama no qual:

● Estado são nodos, representados por círculos;

● Transições são arestas, ligando os nodos correspondentes.

● Estados iniciais e finais são representados de forma distinta dos demais.

● Transições paralelas (mesmo nó de origem e destino) podem alternativamente ser representados com duas arestas apontando para o mesmo nodo ou uma aresta com os dois símbolos.

Exemplos do livro página 47.

Page 23: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 23/35

Autômato Finito Determinístico

Uma forma alternativa e muito comum de representar uma função programa ou função de transição é como uma tabela de dupla entrada.

A tabela acima indica a transição do tipo δ(p,a) = q.

δ a ...

p q ...

q ... ...

Page 24: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 24/35

Autômato Finito Determinístico

A computação de AFD para uma palavra de entrada w, consiste na sucessiva aplicação da função programa para cada símbolo de w (da esquerda para a direita) até ocorrer uma condição de parada.

Um AFD não possui memória de trabalho, somente estados.

Page 25: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 25/35

Autômato Finito Determinístico

Exemplo 3.1 página 47.

Page 26: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 26/35

Parada de um AFD

A parada do processamento de um AFD para uma entrada w pode ser de duas maneiras:

a) Aceita a entrada w. Após processar o último símbolo da fita, o autômato finito assume um estado final;

b) Rejeita a entrada w. São duas possibilidades:● Após processar o último elemento da fita, o afd

assume um estado não final. ● Em algum momento, ao longo do processamento

de w, a função programa é indefinida para o argumento (estado corrente e símbolo lido da fita).

Page 27: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 27/35

Função Programa ou Função de Transição Estendida

Seja M = (∑, Q, δ,q0, F) um AFD. A função programa

estendida ou computação de M, denotada por:

δ*:Q x ∑* → Q

É a função programa δ :Q x ∑ → Q estendida para palavras e é indutivamente definida como segue:

δ*(q,ε ) = q

δ*(q,aw) = δ *(δ(q,a),w)

Portanto a função programa estendida consiste na sucessiva aplicação da função programa para cada símbolo da palavra, a partir de um dado estado. Se a entrada for vazia o AFD continua no mesmo estado.

Page 28: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 28/35

Função Estendida

● Exemplo 3.2 da página 50.

Page 29: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 29/35

Linguagem Aceita, Linguagem Rejeitada

Seja M = (∑, Q, δ,q0, F) um AFD. A Linguagem Aceita ou Linguagem

Reconhecida por M, denotada por:

ACEITA(M) ou L(M)

é o conjunto de todas as palavras pertencentes a ∑* aceitas por M, a partir do estado inicial q

o , ou seja:

L(M) = ACEITA(M) = {w | δ*(q0,w) є F}

Analogamente, a Linguagem Rejeitada por M, denotada por:

REJEITA(M)

é o conjunto de todas as palavras pertencentes a ∑* rejeitadas por M, a partir do estado inicial q

0, ou seja:

REJEITA(M) = {w | δ*(q0,w) ∉F ou δ*(q

0,w) é indefinida}

Page 30: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 30/35

Linguagem Aceita, Linguagem Rejeitada

Supondo que ∑* é o conjunto universo, as seguintes afirmações são verdadeiras.

ACEITA(M) ∩ REJEITA(M) = Ø

ACEITA(M) U REJEITA(M) = ∑*

~ACEITA(M) = REJEITA(M)

~REJEITA(M) = ACEITA(M)

ACEITA(M) REJEITA(M)

∑*

Page 31: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 31/35

Autômatos Finitos Equivalentes

Diferentes autômatos finitos podem aceitar a mesma linguagem.

Dois autômatos finitos M1 e M

2 são ditos

Autômatos Finitos Equivalentes se e somente se:

ACEITA(M1) = ACEITA(M

2)

Page 32: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 32/35

Linguagem Regular

Uma linguagem L é dita uma Linguagem Regular ou Linguagem Tipo 3 se existe pelos menos um autômato finito determinístico que aceita L.

Page 33: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 33/35

Linguagem Regular

● Exemplo 3.3 da página 51.● Exemplo 3.4 da página 52.

Page 34: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 34/35

Para a Próxima Aula

Ler as seções 3.1, 3.2 e 3.3 do livro texto.

Page 35: Aula 4   linguagens regularese automatosfinitosdeterministicos

Aspectos Teóricos da Computação 35/35

Exercícios

1. Dado o autômato abaixo determine M = (∑, Q, δ,q0, F)

2. Desenvolva autômatos finitos determinísticos que reconheçam as seguintes linguagens sobre ∑ ={a,b}:a) {w | w possui aaa como subpalavra}b) {w | o sufixo de w é aa}c) {w | w possui número impar de a e número ímpar de b}d) {w | w possui número par de a e número ímpar de b ou w possui

número par de b e ímpar de a}e) {w | o quinto símbolo da direita para a esquerda de w é a}

3. Pense na seguinte afirmação: “Um autômato finito sempre pára.” Analise se ela é verdadeira ou falsa. Se verdadeira justifique. Se falsa dê um contra-exemplo.

q0

q1

qfa c

b