1 / 70

Aspectos Teóricos da Computação

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

moana
Télécharger la présentation

Aspectos Teóricos da Computação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

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

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

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

  11. Autômato FinitoExemplo - 1 • Interruptor de Luz • Se estiver apagada e pressionar, acende • Se estiver acessa e pressionar, apaga

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

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

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

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

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

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

  18. Autômato Finito DeterminísticoDefinição Formal • Autômato finito como um diagrama: δ(p, a) = q

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

  20. Autômato Finito DeterminísticoDefinição Formal • Função programa como uma tabela de dupla entrada

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

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

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

  24. Autômato Finito DeterminísticoDefinição Formal • Lendo a palavra abba

  25. Autômato Finito DeterminísticoDefinição Formal • Lendo a palavra abba

  26. Autômato Finito DeterminísticoDefinição Formal – AFD  Gramática • Seja o AFD: • A gramática é: • G={{a,b},{q0,q1,q2}, δ,{q0},{q2}

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

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

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

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

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

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

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

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

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

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

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

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

  39. Autômato Finito Não-Determinístico Autômato como Diagrama

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

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

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

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

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

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

  46. Autômato Finito Não-DeterminísticoLinguagem Aceita, Linguagem Rejeitada  *

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

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

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

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

More Related