780 likes | 1.08k Views
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
E N D
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 • 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 Recursivamente • Maior nível de liberdade em suas regras • Tipo 1:Linguagens Sensíveis ao Contexto • Tipo 2:Linguagens Livres do Contexto • Tipo 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 Regulares Linguagens 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 Regulares Hierarquia de Chomsky • classe de linguagens mais simples • algoritmos de reconhecimento, geração ou conversão entre formalismos • pouca complexidade • grande eficiência • fá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}
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ção Seja 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 estado • se a entrada for vazia, fica parado • aceita/rejeita: função programa estendida a partir do estado inicial
Autômato Finito DeterminísticoFunção Programa Estendida (FPE), Computação Exemplo: 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, ε) = qffe sobre ε: fim da indução; ACEITA
Autômato Finito DeterminísticoLinguagem Aceita, Linguagem rejeitada Seja 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ção Seja 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 Rejeitada Seja 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 })
a b q0 {q1} {q0,q1} q1 {} {q2} *q2 {q2} {q2} 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!
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