aspectos teóricos da computação

70
Aspectos Teóricos da Computação Prof. Luiz Fernando R B Corrêa Linguagens Formais - 1

Upload: moana

Post on 17-Mar-2016

58 views

Category:

Documents


14 download

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

Page 1: Aspectos Teóricos da Computação

Aspectos Teóricos da Computação

Prof. Luiz Fernando R B Corrêa

Linguagens Formais - 1

Page 2: Aspectos Teóricos da Computação

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

Page 3: Aspectos Teóricos da Computação

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

Page 4: Aspectos Teóricos da Computação

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.

Page 5: Aspectos Teóricos da Computação

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

Page 6: Aspectos Teóricos da Computaçã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

Page 7: Aspectos Teóricos da Computaçã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

Page 8: Aspectos Teóricos da Computação

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

Page 9: Aspectos Teóricos da Computação

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

Page 10: Aspectos Teóricos da Computação

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)

Page 11: Aspectos Teóricos da Computação

Autômato FinitoExemplo - 1

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

Page 12: Aspectos Teóricos da Computação

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

Page 13: Aspectos Teóricos da Computação

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

Page 14: Aspectos Teóricos da Computação

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

Page 15: Aspectos Teóricos da Computação

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

Page 16: Aspectos Teóricos da Computação

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

Page 17: Aspectos Teóricos da Computação

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

Page 18: Aspectos Teóricos da Computação

Autômato Finito DeterminísticoDefinição Formal

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

Page 19: Aspectos Teóricos da Computação

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

Page 20: Aspectos Teóricos da Computação

Autômato Finito DeterminísticoDefinição Formal

Função programa como uma tabela de dupla entrada

Page 21: Aspectos Teóricos da Computação

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

Page 22: Aspectos Teóricos da Computação

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 *

Page 23: Aspectos Teóricos da Computação

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

Page 24: Aspectos Teóricos da Computação

Autômato Finito DeterminísticoDefinição Formal

Lendo a palavra abba

Page 25: Aspectos Teóricos da Computação

Autômato Finito DeterminísticoDefinição Formal

Lendo a palavra abba

Page 26: Aspectos Teóricos da Computação

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 ∅ ∅

Page 27: Aspectos Teóricos da Computação

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)

Page 28: Aspectos Teóricos da Computação

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);

Page 29: Aspectos Teóricos da Computação

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

Page 30: Aspectos Teóricos da Computação

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

Page 31: Aspectos Teóricos da Computação

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

Page 32: Aspectos Teóricos da Computação

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

Page 33: Aspectos Teóricos da Computação

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)

Page 34: Aspectos Teóricos da Computação

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

Page 35: Aspectos Teóricos da Computação

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

Page 36: Aspectos Teóricos da Computação

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

Page 37: Aspectos Teóricos da Computação

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.

Page 38: Aspectos Teóricos da Computação

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

Page 39: Aspectos Teóricos da Computação

Autômato Finito Não-Determinístico

Autômato como Diagrama

Page 40: Aspectos Teóricos da Computação

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

Page 41: Aspectos Teóricos da Computação

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)

Page 42: Aspectos Teóricos da Computação

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)

Page 43: Aspectos Teóricos da Computação

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 }

Page 44: Aspectos Teóricos da Computação

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

Page 45: Aspectos Teóricos da Computação

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

Page 46: Aspectos Teóricos da Computação

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

*

Page 47: Aspectos Teóricos da Computação

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 })

Page 48: Aspectos Teóricos da Computação

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}

Page 49: Aspectos Teóricos da Computação

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

Page 50: Aspectos Teóricos da Computação

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

Page 51: Aspectos Teóricos da Computação

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...

Page 52: Aspectos Teóricos da Computação

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

Page 53: Aspectos Teóricos da Computação

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

Page 54: Aspectos Teóricos da Computaçã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? ...

Page 55: Aspectos Teóricos da Computação

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

=

Page 56: Aspectos Teóricos da Computaçã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.

Page 57: Aspectos Teóricos da Computação

Exercícios Transformar de AFND para AFD

Page 58: Aspectos Teóricos da Computação

Exercícios Transformar de AFND para AFD

Page 59: Aspectos Teóricos da Computação

Exercícios Transformar de AFND para AFD

Page 60: Aspectos Teóricos da Computação

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

Page 61: Aspectos Teóricos da Computação

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

Page 62: Aspectos Teóricos da Computação

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

Page 63: Aspectos Teóricos da Computação

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

Page 64: Aspectos Teóricos da Computação

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

Page 65: Aspectos Teóricos da Computação

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.

Page 66: Aspectos Teóricos da Computação

Autômatos Finitos com Mov. VaziosExemplo 2

Page 67: Aspectos Teóricos da Computação

Autômatos Finitos com Mov. VaziosExemplo 3

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

Page 68: Aspectos Teóricos da Computação

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 })

Page 69: Aspectos Teóricos da Computação

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

Page 70: Aspectos Teóricos da Computação

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