aspectos teóricos da computação

Post on 17-Mar-2016

59 Views

Category:

Documents

14 Downloads

Preview:

Click to see full reader

DESCRIPTION

Aspectos Teóricos da Computação. Linguagens Formais - 1. Prof. Luiz Fernando R B Corrêa. Agenda. Breve introdução da Hierarquia de Chomsky Definição de linguagens regulares Autômatos Finitos Determinísticos Gramática  AFD / AFD  Gramática Autômatos Finitos Não-determinísticos - PowerPoint PPT Presentation

TRANSCRIPT

Aspectos Teóricos da Computação

Prof. Luiz Fernando R B Corrêa

Linguagens Formais - 1

Agenda Breve introdução da Hierarquia de

Chomsky Definição de linguagens regulares Autômatos Finitos Determinísticos Gramática AFD / AFD Gramática Autômatos Finitos Não-determinísticos Equivalência entre AFND e AFD Autômatos Finitos com Movimentos

Vazios

Hierarquia de ChomskyBreve Introdução

Classifica as linguagens 4 tipos:Tipo 0: Linguagens Enumeráveis

RecursivamenteMaior nível de liberdade em suas

regrasTipo 1:Linguagens Sensíveis ao

ContextoTipo 2:Linguagens Livres do ContextoTipo 3:Linguagens Regulares

Hierarquia de ChomskyBreve Introdução

Os dois últimos níveis são amplamente utilizados na descrição de linguagens de programação e na implementação de compiladores e interpretadores

Cada nível é um super conjunto do próximo. Logo, uma gramática de tipo n é conseqüentemente uma linguagem de tipo n - 1.

Linguagens RegularesLinguagens Regulares ou Tipo 3 pode

ser representada por: Autômato Finito

basicamente, um sistema de estados finitos (determinístico, não-determinístico ou com movimentos vazios)

• Expressão Regular conjuntos (linguagens) básicos +

concatenação e união • Gramática Regular

gramática com restrições da forma das regras de produção

Linguagens RegularesHierarquia de Chomsky

classe de linguagens mais simplesalgoritmos de reconhecimento,

geração ou conversão entre formalismos

pouca complexidadegrande eficiênciafácil implementação

Linguagens Regulares Universo de aplicações das

linguagens regulares Muito grande Constantemente ampliado

Exemplo típico e simples Análise léxica

Exemplos mais recentes Sistemas de animação Hipertextos Hipermídias

Sistema de Estados Finitos Sistema de Estados Finitos

modelo matemático de sistema com entradas e saídas discretas

número finito e pré-definido de estados podem ser definidos antes de iniciar o

processamento Estado

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

Sistema de Estados Finitos Motivacional

Podem ser associados a diversos tipos de sistemas naturais e construídos

Exemplo: Elevador Não memoriza as requisições anteriores Estado: sumariza "andar corrente" e

"direção de movimento" Entrada: requisições pendentes

Exemplo: Analisador Léxico, Processador de Texto Estado: memoriza a estrutura do prefixo da

palavra em análise Entrada: texto

Autômato Finito Reconhecedor de palavras ou cadeia de

caracteres, que sempre pára retornando uma resposta sim (cadeia reconhecida) ou não (cadeia não reconhecida)

Bons modelos para computadores com capacidade de memória reduzida

Fazem parte de vários dispositivos eletro- mecânicos do dia-a-dia

Podem ser classificados em: Autômatos Finitos Determinísticos (AFD) Autômatos Finitos Não-Determinísticos

(AFND)

Autômato FinitoExemplo - 1

Interruptor de Luz Se estiver apagada e pressionar, acende Se estiver acessa e pressionar, apaga

Autômato Finito Exemplo - 2

Palavra AMOR Tentativa de ler

a palavra AMBIENTE

Em q2 não é mais possível andar, logo dizemos que o autômato na reconhece a palavra

Autômato Finito Determinístico

Máquina composta basicamente de três partes: Fita: dispositivo de entrada

contém informação a ser processada Unidade de Controle: reflete o estado corrente

da máquina possui unidade de leitura (cabeça da fita) acessa uma célula da fita de cada vez movimenta-se exclusivamente para a direita

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

comanda as leituras define o estado da máquina

Autômato Finito Determinístico

Fita Finita dividida em células cada célula armazena um símbolo símbolos pertencem a um alfabeto de

entrada não é possível gravar sobre a fita (não existe

memória auxiliar) palavra a ser processada ocupa toda a fita

Autômato Finito Determinístico

Unidade de controle número finito e predefinido de estados

Leitura lê o símbolo de uma célula de cada vez move a cabeça da fita uma célula para a direita posição inicial da cabeça célula mais à esquerda

da fita

Autômato Finito Determinístico

Programa: função parcial dependendo do estado corrente e do símbolo lido

determina o novo estado do autômato Não possui memória de trabalho, logo, para

armazenar as informações passadas necessárias ao processamento, deve-se usar o conceito de estado

Autômato Finito DeterminísticoDefinição Formal

Autômato Finito Determinístico (AFD), é definido pela 5-upla:

M=(Σ,Q, δ,qo,F), onde: Σ : Alfabeto de símbolos de entrada Q : conjunto de estados possíveis do autômato o

qual é finito δ : função programa ou função transição:

δ:QxΣQ ,a qual é uma função parcial. Significa dizer que permanecendo em um estado e lendo um símbolo do alfabeto faz o autômato passar para outro estado ou mesmo ficar no mesmo transição do autômato: δ(p, a) = q

q0 : estado inicial tal que q0 é um elemento de Q F : conjunto de estados finais tal que F está contido

em Q

Autômato Finito DeterminísticoDefinição Formal

Autômato finito como um diagrama: δ(p, a) = q

Autômato Finito DeterminísticoDefinição Formal

Estados iniciais e finais

Transições paralelas: δ(q, a) = p e δ(q, b) = p

Os arcos que vão de um estado para outro são chamados de transições

Autômato Finito DeterminísticoDefinição Formal

Função programa como uma tabela de dupla entrada

Autômato Finito DeterminísticoDefinição Formal

Computação de um autômato finito sucessiva aplicação da função programa para

cada símbolo da entrada (da esquerda para a direita) até ocorrer uma condição de parada

Lembre-se que um autômato finito não possui memória de trabalho para

armazenar as informações passadas deve-se usar o conceito de estado

Autômato Finito DeterminísticoDefinição Formal

Exemplo: Autômato Finito: aa ou bb como subpalavra

L1 = { w | w possui aa ou bb como subpalavra }

Autômato finito:

M1 = ({ a, b }, { q0, q1, q2, qf }, δ1, q0, { qf })

* Obs.: Para facilitar, o estado inicial vamos marcar com e os finais com *

Autômato Finito DeterminísticoDefinição Formal – Gramática AFD

q1: "símbolo anterior é a“ q2: "símbolo anterior é b“ após identificar aa ou bb

qf (final): varre o sufixo da entrada - terminar o processamento

Autômato Finito DeterminísticoDefinição Formal

Lendo a palavra abba

Autômato Finito DeterminísticoDefinição Formal

Lendo a palavra abba

Autômato Finito DeterminísticoDefinição Formal – AFD Gramática

Seja o AFD:

A gramática é: G={{a,b},{q0,q1,q2}, δ,{q0},{q2}

δ a bq0 q1 ∅q1 ∅ q2q2 ∅ ∅

Autômato Finito DeterminísticoDefinição Formal

Autômato Finito Sempre Para Como

qualquer palavra é finita novo símbolo é lido a cada aplicação da função

programa não existe a possibilidade de ciclo (loop) infinito

Parada do processamento Aceita a entrada

após processar o último símbolo, assume um estado final

Rejeita a entrada. Duas possibilidades após processar o último símbolo, assume um

estado não-final programa indefinido para argumento (estado e

símbolo)

Autômato Finito DeterminísticoResumindo

Definir um AFD engloba definir Um conjunto finito de estados;

Um alfabeto de entrada que indica os símbolos de entrada permitidos;

Um conjunto de regras de movimento que indicam como ir de um estado p/ outro, dependendo do símbolo de entrada;

Um estado escolhido como estado inicial;

Um conjunto de estados escolhidos como estados finais (de reconhecimento);

Autômato Finito Determinístico

Para definir formalmente o comportamento de um Autômato Finito (ou seja, dar semântica à sintaxe de um Autômato Finito), é necessário estender a definição da função programa usando como argumento um estado e uma palavra

Autômato Finito DeterminísticoFunção Programa Estendida (FPE), ComputaçãoSeja M = (Σ, Q, δ, q0, F) AFD. A função programa estendida denotada por:

δ*: Q × Σ* → Qé a função prog δ: Q × Σ → Q estendida para palavras - indutivamente definidaδ*(q, ε) = qδ*(q, aw) = δ*(δ(q, a), w) Observe

sucessiva aplicação da função programa para cada símb da palavra a partir de um dado estadose a entrada for vazia, fica paradoaceita/rejeita: função programa estendida a partir do estado inicial

Autômato Finito DeterminísticoFunção Programa Estendida (FPE), ComputaçãoExemplo:Função estendida= fe

δ*(q0, abaa) = fe sobre abaa δ*(δ(q0, a), baa) = processa abaa δ*(q1, baa) = fe sobre baa δ*(δ(q1, b), aa) = processa baa δ*(q2, aa) = fe sobre aa δ*(δ(q2, a), a) = processa aa δ*(q1, a) = fe sobre a δ*(δ(q1, a), ε) = processa a δ*(qf, ε) = qf fe sobre ε: fim da indução;

ACEITA

Autômato Finito DeterminísticoLinguagem Aceita, Linguagem rejeitadaSeja M = (Σ, Q, δ, q0, F) um AFD Ling Aceita ou Ling Reconhecida por M

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

Ling Rejeitada por M:REJEITA(M) = { w | δ*(q0, w) ∉ F ou δ*(q0, w) é indefinida }

Supondo que Σ* é o conjunto universo ACEITA(M) ∩ REJEITA(M) = ∅ ACEITA(M) ∪ REJEITA(M) = Σ* ~ACEITA(M) = REJEITA(M) Complemento ~REJEITA(M) = ACEITA(M) Complemento

Autômato Finito DeterminísticoAutômatos Finitos Equivalentes Diferentes autômatos finitos podem aceitar uma

mesma linguagem

M1 e M2 são Autômatos Finitos Equivalentes se e somente se

ACEITA(M1) = ACEITA(M2)

Autômato Finito DeterminísticoLinguagem Regular ou Tipo 3 L é uma Linguagem Regular ou Linguagem Tipo 3

existe pelo menos um autômato finito determinístico que aceita L

Autômato Finito DeterminísticoExercício Autômato Finito: número par de cada

símbolo: L4 = { w | w possui um número par de a e um número

par de b } Desenhar o AFD

Autômato Finito Não-DeterminísticoDefinições Não-determinismo

Importante generalização dos modelos de máquinas.

Fundamental no estudo de teoria da computação e teoria das linguagens formais

Não é sempre que aumenta o poder de reconhecimento de linguagens de uma classe de autômatos

Qualquer AFND pode ser representado por um AFD. O contrário também é verdade

Autômato Finito Não-DeterminísticoDefinições Não-determinismo no programa, é uma função

parcial dependendo do estado corrente e do símbolo

lido, determina um conjunto de novos estados do autômato.

Assume um conjunto de estados alternativos como uma multiplicação da unidade de

controle uma para cada alternativa processando independentemente sem

compartilhar recursos Podemos ter zero, uma ou mais transições de

estado com o mesmo símbolo de entrada.

Autômato Finito Não-Determinístico

M = (Σ, Q, δ, q0, F)

Σ - alfabeto (de símbolos) de entrada Q - conjunto de estados possíveis (finito) δ - (função) programa ou função de transição

(função parcial)δ: Q × Σ → 2Q

transição: δ(p, a) = { q1, q2, …, qn } q0 é um elemento distinguido de Q: estado inicial F é um subconjunto de Q: conjunto de estados

finais

Autômato Finito Não-Determinístico

Autômato como Diagrama

Autômato Finito Não-Determinístico

O processamento de um AFND M para um conjunto de estados ao ler um símbolo, é a união dos resultados da função programa aplicada a cada estado alternativo.

Para definir formalmente o comportamento de um AFND é necessário estender a definição da função programa usando como argumento um conjunto finito de estados e uma palavra

Autômato Finito Não-DeterminísticoFunção Programa Estendida, ComputaçãoSeja M = (Σ, Q, δ, q0, F) um AFND. A função Programa Estendida(FPE) denotada por:

δ*: 2Q × Σ* → 2Q

indutivamente definida comoδ*(P, ε) = Pδ*(P, aw) = δ*(∪q∈P δ(q, a), w)

Transição estendida (a um conjunto de estados): dado um conjunto de estados {q1,q2,...,qn} e para um símbolo a:

δ*({ q1, q2,…, qn }, a) = δ(q1, a) ∪ δ(q2, a) ∪…∪ δ(qn, a)

Autômato Finito Não-DeterminísticoParada do processamento Aceita a entrada

após processar o último símbolo da fita, existe pelo menos um estado final pertencente ao conjunto de estados alternativos atingidos

Rejeita a entrada. Duas possibilidades após processar o último símbolo da fita, todos

os estados alternativos atingidos são não-finais programa indefinido para o argumento

(conjunto de estados e símbolo)

Autômato Finito Não-DeterminísticoLinguagem Aceita, Linguagem RejeitadaSeja M = (Σ, Q, δ, q0, F) um autômato finito não-determinístico Ling Aceita ou Linguagem Reconhecida por M

L(M) = ACEITA(M) = { w | δ*({ q0 }, w) ∩ F ≠ ∅ }

Linguagem Rejeitada por M REJEITA(M) = { w | δ*({ q0 }, w) ∩ F = ∅ ou δ*({ q0 },

w) é indefinida }

Autômato Finito Não-DeterminísticoLinguagem Aceita, Linguagem Rejeitada Exemplo: AFND: aa ou bb como subpalavra L5 = { w | w possui aa ou bb como subpalavra } AFND:

M5 = ({ a, b }, { q0, q1, q2, qf }, δ5, q0, { qf }) Desenhar o AFD Representar δ5 em tabela, tal que ACEITA(M5)=l5

Autômato Finito Não-DeterminísticoLinguagem Aceita, Linguagem Rejeitada

o ciclo em q0 realiza uma varredura em toda a entrada o caminho q0/q1/qf garante a ocorrência de aa o caminho q0/q2/qf garante a ocorrência de bb

Autômato Finito Não-DeterminísticoLinguagem Aceita, Linguagem Rejeitada

*

Autômato Finito Não-DeterminísticoLinguagem Aceita, Linguagem Rejeitada Exemplo2: AFND: aaa como sufixo

L6 = { w | w possui aaa como sufixo } Autômato finito não-determinístico:

M6 = ({ a, b }, { q0, q1, q2, qf }, δ6, q0, { qf })

Autômato Finito Não-DeterminísticoExercício Exemplo3: AFND:

Dado M = ({q0,q1,q2}, {a,b}, δ, qo, {q2})

Diga se a palavra bab é aceita ou rejeitada e justifique!

a b

q0 {q1} {q0,q1}

q1 {} {q2}

*q2 {q2} {q2}

Relação entre AFD e AFND

Não-determinismo aparentemente, um significativo acréscimo ao poder

computacional autômato finito na realidade não aumenta seu poder computacional

Teorema: Equivalência entre AFD e AFND Classe dos Autômatos Finitos Determinísticos é

equivalente à Classe dos Autômatos Finitos Não-Determinísticos

Relação entre AFD e AFNDTransformação de AFND em AFD Seja o AFND

Relação entre AFD e AFNDTransformação de AFND em AFD Transições do estado vazio + estados resultantes da junção

de dois ou mais estados da transição...

Relação entre AFD e AFNDTransformação de AFND em AFD

Relação entre AFD e AFNDTransformação de AFND em AFD {q2} = estado de aceitação, então todos os estados que

tiverem q2 também serão estados de aceitação

Relação entre AFD e AFNDTransformação de AFND em AFD Será que temos estados inacessíveis que podem ser

removidos? Para facilitar a identificação, renomear os estados.

Quem acessa o estado C? Retirando o estado C, quem acessará o estado D? ...

Relação entre AFD e AFNDTransformação de AFND em AFD Após simplificação

=

Relação entre AFD e AFNDAlgoritmo de conversão de AFND em AFD1. Tome o diagrama de transição do AFND e crie para cada

conjunto de estados, um novo estado onde o rótulo é o próprio conjunto.

2. Complete as transições de cada novo estado acompanhando o comportamento de cada estado individualmente e tomando a união dos estados acessados.

3. Adicione como estados finais aqueles estados que tem como rótulo um estado final.

4. Elimine os estados nunca acessados a partir do estado inicial.5. Complete o AFD da seguinte forma:

1. Q do AFD são os estados resultantes dos passos até este ponto.

2. O alfabeto não é alterado3. A construção do delta já foi mencionada.4. O estado inicial não se altera5. Os estados finais são a união de todos os estados finais do

delta resultante.

Exercícios Transformar de AFND para AFD

Exercícios Transformar de AFND para AFD

Exercícios Transformar de AFND para AFD

Autômatos Finitos com Mov. Vazios AFNε ou AFε

Movimentos vazios generalizam os movimentos não-determinísticos

Movimento vazio transição sem leitura de símbolo algum da fita interpretado como um não-determinismo interno ao

autômato transição encapsulada excetuando-se por uma eventual mudança de

estados, nada mais pode ser observado

Autômatos Finitos com Mov. Vazios Algumas vantagens

facilita algumas construções e demonstrações Poder computacional p/ autômatos finitos

não aumenta o poder de reconhecimento de linguagens qualquer AFNε pode ser simulado por um AFD

Autômatos Finitos com Mov. Vazios O autômato vai do estado p para o estado q sem ler um

símbolo de entrada.

p q

Autômatos Finitos com Mov. VaziosExemplo 1 Suponha um autômato que reconhece a soma de um inteiro

positivo ou negativo com um decimal positivo

Autômatos Finitos com Mov. VaziosExemplo 1 Acompanhar este autômato com a expressão -12+2.6

Autômatos Finitos com Mov. VaziosExemplo 2 Mostre como o autômato finito não-determinístico com

transições vazias (AFND-ε) se comporta ao receber a palavra abc.

Para isso, mostre os conjuntos de estados atingidos após a leitura de cada símbolo da palavra. Lembre-se de considerar as transições ε antes e depois de fazer a transição para os símbolos da palavra.

Autômatos Finitos com Mov. VaziosExemplo 2

Autômatos Finitos com Mov. VaziosExemplo 3

AFNε: a’s antecedem b’sM7 = ({ a, b }, { q0, qf }, δ7, q0, { qf })

Autômatos Finitos com Mov. VaziosExemplo 4 L8 = { w | w possui como sufixo a ou bb ou ccc } M8 = ({ a, b, c }, { q0, q1, q2, q3, q4, q5, q6, qf }, δ8, q0,

{ qf })

Autômatos Finitos com Mov. VaziosExemplo 3 e e

b e b e b

Estando no estado s e recebendo o símbolo b: ler b e ir para p ir para t e então ler b e ir para q ir para t, ir para u e então ler b e ir para r.

O conjunto {b, bb, bbb} é aceito pelo autômato.

s t u

p q r

Referências da Aula Material de aula: Linguagens Formais e

Autômatos Expressões Regulares. Professor Eduardo Araújo Oliveira. http://sites.google.com/site/eaoufpe

Licenciatura em Engenharia Informática – DEI/ISEP, Linguagens de Programação 2006/07, Ficha 4, Autómatos Finitos Determinísticos http://www.dei.isep.ipp.pt/~goreti/ficha4.pdf

Capítulo 3 - Autómatos e respectivas linguagens. Carlos Barrico. http://www.di.ubi.pt/~cbarrico/Disciplinas/Compiladores/Downloads/Capitulo3.pdf

top related