aspectos teóricos da computação
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 PresentationTRANSCRIPT
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