SlideShare una empresa de Scribd logo
1 de 140
Descargar para leer sin conexión
Linguagens Formais e
                       Autômatos
                                            P. Blauth Menezes
                                                     blauth@inf.ufrgs.br

                   Departamento de Informática Teórica
                     Instituto de Informática / UFRGS




Linguagens Formais e Autômatos - P. Blauth Menezes                         1
Linguagens Formais e Autômatos
                                                     P. Blauth Menezes

                      1       Introdução e Conceitos Básicos
                      2       Linguagens e Gramáticas
                      3       Linguagens Regulares
                      4       Propriedades das Linguagens Regulares
                      5       Autômato Finito com Saída
                      6       Linguagens Livres do Contexto
                      7       Propriedades e Reconhecimento das Linguagens
                              Livres do Contexto
                      8       Linguagens Recursivamente Enumeráveis e
                               Sensíveis ao Contexto
                      9       Hierarquia de Classes e Linguagens e Conclusões




Linguagens Formais e Autômatos - P. Blauth Menezes                              2
3 – Linguagens Regulares
     3.1 Sistema de Estados Finitos
     3.2 Composição Seqüencial, Concorrente e
         Não-Determinista
     3.3 Autômato Finito
     3.4 Autômato Finito Não-Determinístico
     3.5 Autômato Finito com Movimentos Vazios
     3.6 Expressão Regular
     3.7 Gramática Regular




Linguagens Formais e Autômatos - P. Blauth Menezes   3
3 – Linguagens Regulares
Linguagens Formais e Autômatos - P. Blauth Menezes   4
3 Linguagens Regulares
◆    Linguagens Regulares ou Tipo 3 - formalismos
     • Autômato Finito
        ∗ formalismo operacional ou reconhecedor
        ∗ basicamente, um sistema de estados finitos

     • Expressão Regular
        ∗ formalismo denotacional ou gerador
        ∗ conjuntos (linguagens) básicos + concatenação e união

     • Gramática Regular
        ∗ formalismo axiomático ou gerador
        ∗ gramática com restrições da forma das regras de produção

Linguagens Formais e Autômatos - P. Blauth Menezes                   5
◆    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

◆    Fortes limitações de expressividade
     • exemplo: duplo balanceamento não é regular.
     • linguagens de programação em geral: não-regulares




Linguagens Formais e Autômatos - P. Blauth Menezes                6
◆    Complexidade de algoritmos - autômatos finitos
     • classe de algoritmos mais eficientes (tempo de processamento)
       ∗ supondo determinada condição

     • qualquer autômato finito é igualmente eficiente

     • qualquer solução é ótima
        ∗ a menos de eventual redundância de estados

     • redundância de estados
        ∗ (não influi no tempo)
        ∗ pode ser facilmente eliminada: Autômato Finito Mínimo




Linguagens Formais e Autômatos - P. Blauth Menezes                     7
◆    Importantes propriedades - podem ser usadas para
     • construir novas linguagens regulares
        ∗ a partir de linguagens regulares conhecidas
        ∗ (definindo uma álgebra)

     • provar propriedades
     • construir algoritmos

◆    Se um problema tiver uma solução regular
     • considerar preferencialmente a qualquer outra não-regular
        ∗ propriedades da Classe
        ∗ eficiência e simplicidade dos algoritmos




Linguagens Formais e Autômatos - P. Blauth Menezes                 8
◆    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




Linguagens Formais e Autômatos - P. Blauth Menezes     9
◆    Capítulos subseqüentes
     • minimização de autômatos finitos
     • propriedades da Classe
     • algumas importantes aplicações




Linguagens Formais e Autômatos - P. Blauth Menezes   10
3 – Linguagens Regulares
     3.1 Sistema de Estados Finitos
     3.2 Composição Seqüencial, Concorrente e
         Não-Determinista
     3.3 Autômato Finito
     3.4 Autômato Finito Não-Determinístico
     3.5 Autômato Finito com Movimentos Vazios
     3.6 Expressão Regular
     3.7 Gramática Regular




Linguagens Formais e Autômatos - P. Blauth Menezes   11
3.1 Sistema de Estados Finitos
◆    Sistema de Estados Finitos
     • modelo matemático de sistema com entradas e saídas discretas
     • número finito e predefinido 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




Linguagens Formais e Autômatos - P. Blauth Menezes                    12
◆    Motivacional
     • associados a diversos tipos de sistemas naturais e construídos
Exp: Elevador
Não memoriza as requisições anteriores

     • Estado: sumaria "andar corrente" e "direção de movimento"
     • Entrada: requisições pendentes
Exp: Analisador Léxico, Processador de Texto
     • Estado: memoriza a estrutura do prefixo da palavra em análise
     • Entrada: texto




Linguagens Formais e Autômatos - P. Blauth Menezes                      13
◆    Restrição
     • nem todos os sistemas de estados finitos
     • são adequados para serem estudados por esta abordagem


Exp: Cérebro humano
     • Neurônio: número finito de bits
     • Cérebro: cerca de 235 células
        ∗ abordagem pouco eficiente
        ∗ explosão de estados




Linguagens Formais e Autômatos - P. Blauth Menezes             14
Exp: Computador
     • processadores e memórias: sistema de estados finitos

     • estudo da computabilidade
        ∗ exige uma memória sem limite predefinido

     • Máquina de Turing
        ∗ mais adequado ao estudo da computabilidade

     • computabilidade e solucionabilidade de problemas
        ∗ apenas introduzido
        ∗ questões tratadas na Teoria da Computação




Linguagens Formais e Autômatos - P. Blauth Menezes            15
3 – Linguagens Regulares
     3.1 Sistema de Estados Finitos
     3.2 Composição Seqüencial, Concorrente e
         Não-Determinista
     3.3 Autômato Finito
     3.4 Autômato Finito Não-Determinístico
     3.5 Autômato Finito com Movimentos Vazios
     3.6 Expressão Regular
     3.7 Gramática Regular




Linguagens Formais e Autômatos - P. Blauth Menezes   16
3.2 Composição Seqüencial,
    Concorrente e Não-Determinista
◆    Construção composicional de sistema
     • construído a partir de sistemas conhecidos
        ∗ e assim sucessivamente
        ∗ até chegar ao nível mais elementar (como uma ação atômica)

◆    Composição
     • Seqüencial
     • Concorrente
     • Não-Determinista



Linguagens Formais e Autômatos - P. Blauth Menezes                     17
◆    Seqüencial
     • execução da próxima componente

     • depende da terminação da componente anterior

◆    Concorrente
     • componentes independentes
        ∗ ordem em que são executadas não é importante

     • portanto, podem ser processadas ao mesmo tempo




Linguagens Formais e Autômatos - P. Blauth Menezes       18
◆    Não-Determinista
     • próxima componente: escolha entre diversas alternativas

     • em oposição à determinista
        ∗ para as mesmas condições
        ∗ próxima componente é sempre a mesma

     • não-determinismo pode ser
        ∗ interno: sistema escolhe aleatoriamente
        ∗ externo: escolha externa ao sistema

◆    Sistemas reais
     • as três formas de composição são comuns



Linguagens Formais e Autômatos - P. Blauth Menezes               19
Exp: Banco
Seqüencial
  • fila: próximo cliente depende do atendimento do anterior
  • pagamento de uma conta depende do fornecimento de um valor

Concorrente
  • diversos caixas atendem independentemente diversos clientes
  • clientes nos caixas: ações independentemente dos clientes na fila

Não-determinista
  • dois ou mais caixas disponíveis ao mesmo tempo
     ∗ próximo cliente pode escolher o caixa

     • caminhar de um indivíduo: perna esquerda ou direita



Linguagens Formais e Autômatos - P. Blauth Menezes                      20
◆    Linguagens Formais
     • seqüencial e não-determinimo: especialmente importantes

◆    Semântica do não-determinismo adotada
     • a usual para Linguagens Formais, Teoria da Computação...
        ∗ não-determinismo interno
        ∗ objetivo: determinar a capacidade de reconhecer linguagens e
          de solucionar problemas

     • difere da adotada no estudo dos Modelos para Concorrência
        ∗ exemplo: Sistemas Operacionais
        ∗ pode causar confusão com a semântica da concorrência




Linguagens Formais e Autômatos - P. Blauth Menezes                       21
3 – Linguagens Regulares
     3.1 Sistema de Estados Finitos
     3.2 Composição Seqüencial, Concorrente e
         Não-Determinista
     3.3 Autômato Finito
     3.4 Autômato Finito Não-Determinístico
     3.5 Autômato Finito com Movimentos Vazios
     3.6 Expressão Regular
     3.7 Gramática Regular




Linguagens Formais e Autômatos - P. Blauth Menezes   22
3.3 Autômato Finito
◆    Autômato Finito: sistema de estados finitos
     • número finito e predefinido de estados

     • modelo computacional comum em diversos estudos teórico-formais
        ∗ Linguagens Formais
        ∗ Compiladores
        ∗ Semântica Formal
        ∗ Modelos para Concorrência




Linguagens Formais e Autômatos - P. Blauth Menezes                 23
◆    Formalismo operacional/reconhecedor - pode ser
     • determinístico
        ∗ dependendo do estado corrente e do símbolo lido
        ∗ pode assumir um único estado

     • não-determinístico
        ∗ dependendo do estado corrente e do símbolo lido
        ∗ pode assumir um conjunto de estados alternativos

     • com movimentos vazios
        ∗ dependendo do estado corrente e sem ler qualquer símbolo
        ∗ pode assumir um conjunto de estados (portanto é não-
          determinístico)



Linguagens Formais e Autômatos - P. Blauth Menezes                   24
◆    Movimento vazio
     • pode ser visto como transições encapsuladas
       ∗ excetuando-se por uma eventual mudança de estado
       ∗ nada mais pode ser observado

     • análogo à encapsulação das linguagens orientadas a objetos

◆    Três tipos de autômatos: equivalentes
     • em termos de poder computacional




Linguagens Formais e Autômatos - P. Blauth Menezes                  25
◆    Autômato finito (determinístico): máquina constituída
     por
     • 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




Linguagens Formais e Autômatos - P. Blauth Menezes                 26
◆    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




Linguagens Formais e Autômatos - P. Blauth Menezes                        27
◆    Unidade de controle
     • número finito e predefinido de estados
        ∗ origem do termo controle finito

     • 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

            a               a               b        c   c   b   a   a




       controle



Linguagens Formais e Autômatos - P. Blauth Menezes                       28
◆    Programa: função parcial
     • dependendo do estado corrente e do símbolo lido

     • determina o novo estado do autômato




Linguagens Formais e Autômatos - P. Blauth Menezes       29
Def: Autômato Finito (Determinístico) ou AFD
                                                     M = (Σ, Q, δ, q0, F)

     • Σ é um alfabeto (de símbolos) de entrada
     • Q é um conjunto de estados possíveis do autômato (finito)
     • δ é uma (função) programa ou função de transição (função parcial)

                                                        δ: Q × Σ → Q

           ∗ transição do autômato: δ(p, a) = q

     • q 0 é um elemento distinguido de Q: estado inicial
     • F é um subconjunto de Q: conjunto de estados finais




Linguagens Formais e Autômatos - P. Blauth Menezes                          30
◆    Autômato finito como um diagrama: δ(p, a) = q

                                                         a
                                   p                                     q




              estado anterior
                                                     símbolo lido
                                                                    novo estado

Linguagens Formais e Autômatos - P. Blauth Menezes                                31
◆    Estados iniciais e finais



                                              q0         qf




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


                        a
                                                              a,b
      p                                        q     p              q
                        b



Linguagens Formais e Autômatos - P. Blauth Menezes                      32
◆    Função programa como uma tabela de dupla entrada


                                                     δ(p, a) = q



                                                     δ    a   …

                                                     p    q   …
                                                     q   … …




Linguagens Formais e Autômatos - P. Blauth Menezes                 33
◆    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




Linguagens Formais e Autômatos - P. Blauth Menezes                 34
Exp: 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 })


                                                     δ1   a   b

                                                     q0 q1 q2
                                                     q1 qf q2
                                                     q2 q1 qf
                                                     qf qf qf


Linguagens Formais e Autômatos - P. Blauth Menezes                             35
a              b
                                                         q0

                                              b
                                   q1                                       q2
                                                                        a
                               a                                                 b
                                                         qf

                                                              a,b


     •   q 1: "símbolo anterior é a"
     •   q 2: "símbolo anterior é b"
     •   qual a informação memorizada por q0 e qf
     •   após identificar aa ou bb
          ∗ q f (final): varre o sufixo da entrada - terminar o processamento

Linguagens Formais e Autômatos - P. Blauth Menezes                                   36
a              b
                                                               q0

                                                      b
                                                 q1                                q2
                                                                              a
                                             a                                          b
                                                               qf

                                                                    a,b




                                        a             b        b              a


                                       q0

                                                      q1

                                                               q2

                                                                              qf

                                                                                            qf

Linguagens Formais e Autômatos - P. Blauth Menezes                                               37
Obs: Autômato Finito Sempre Pára
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)


Linguagens Formais e Autômatos - P. Blauth Menezes                      38
Obs: Autômato Finito × Grafo Finito Direto
Qual a diferença entre um autômato finito e um grafo finito direto?
Qualquer autômato finito pode ser visto como um grafo finito direto

     • podem existir arcos paralelos (mesmos nodos origem e destino)
     • dois ou mais arcos podem ser identificados com a mesma etiqueta
       (símbolo do alfabeto)
     • existe um nodo distinguido: estado inicial
     • existe um conjunto de nodos distinguidos: estados finais

Usual considerar um autômato finito como grafo finito direto especial

     • herda resultados da Teoria dos Grafos




Linguagens Formais e Autômatos - P. Blauth Menezes                      39
◆    Definição formal do comportamento de um autômato
     finito
     • dar semântica à sintaxe

     • necessário estender a função programa

     • argumento: estado e palavra




Linguagens Formais e Autômatos - P. Blauth Menezes      40
Def: Função Programa Estendida, Computação
M = (Σ, Q, δ, q0, F) autômato finito determinístico

                                                     δ*: Q × Σ* → Q

é δ: 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ímbolo 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
Linguagens Formais e Autômatos - P. Blauth Menezes                            41
Exp: Função Programa Estendida
                                                     a              b
                                                         q0

                                                b
                                      q1                                    q2
                                                                        a
                                  a                                              b
                                                         qf

                                                              a,b




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

Linguagens Formais e Autômatos - P. Blauth Menezes                                   42
Def: Linguagem Aceita, Linguagem Rejeitada
M = (Σ, Q, δ, q0, F) autômato finito determinístico.
Linguagem 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 }

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

Linguagens Formais e Autômatos - P. Blauth Menezes                       43
◆    Cada autômato finito M sobre Σ
     • induz uma partição de Σ* em duas classes de equivalência

     • e se um dos dois conjuntos for vazio?

                                                            Σ*

                         ACEITA(M)                   REJEITA(M)




Linguagens Formais e Autômatos - P. Blauth Menezes                44
◆    Diferentes autômatos finitos podem aceitar uma
     mesma linguagem

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

                                         ACEITA(M1) = ACEITA(M2)


Def: Linguagem Regular, Linguagem Tipo 3
L é uma Linguagem Regular ou Linguagem Tipo 3

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




Linguagens Formais e Autômatos - P. Blauth Menezes                        45
Exp: …Autômato Finito: Vazia, Todas as Palavras
Linguagens sobre o alfabeto { a, b }

                                      L2 = ∅     e     L3 = Σ*


         M2                                            M3
                                      q0                         q0

                                                 a,b                  a,b




Linguagens Formais e Autômatos - P. Blauth Menezes                          46
Exp: Autômato Finito: Vazia, Todas as Palavras


                                      L2 = ∅     e     L3 = Σ*




                                           δ2 a      b                     δ3 a   b

                                          q0 q0 q0                         q0 q0 q0



     • diferença entre δ2 e δ3?
     • o que, exatamente, diferencia M2 de M3?


Linguagens Formais e Autômatos - P. Blauth Menezes                                    47
Exp: 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 }
                                                              b
                                                     q0                   q1
                                                                  b
                                               a                               a



                                                          a           a

                                                                  b
                                                     q2                   q3
                                                              b

Como seria para aceitar um número ímpar de cada símbolo?


Linguagens Formais e Autômatos - P. Blauth Menezes                                 48
Obs: Função Programa × Função Programa Estendida
Objetivando simplificar a notação

     • δ e a sua correspondente extensão δ*

     • podem ser ambas denotadas por δ


Obs: Computações × Caminhos de um Grafo
     • conjunto de arcos: computações possíveis

     • subconjunto de arcos
        ∗ com origem no estado inicial
        ∗ destino em algum estado final
        ∗ linguagem aceita


Linguagens Formais e Autômatos - P. Blauth Menezes   49
Obs: …Computações × Caminhos de um Grafo


    M                                                        caminhos M
                                                                                        Computações(M)
                           1                             ε            1                          =
                       a       d                                            d
                                                             a                           { ε, a, b, c, d,
                                                                                          ab, bc, abc}
               2                   5                     2       ab             5
                                                     ε                              ε
           b                                             b            abc
                                                                 bc

               3                                         3
                                                                                          ACEITA (M)
                   c                                 ε       c                                  =
                                                                                          {ε , d, abc}
                           4                                          4         ε




Linguagens Formais e Autômatos - P. Blauth Menezes                                                          50
3 – Linguagens Regulares
     3.1 Sistema de Estados Finitos
     3.2 Composição Seqüencial, Concorrente e
         Não-Determinista
     3.3 Autômato Finito
     3.4 Autômato Finito Não-Determinístico
     3.5 Autômato Finito com Movimentos Vazios
     3.6 Expressão Regular
     3.7 Gramática Regular




Linguagens Formais e Autômatos - P. Blauth Menezes   51
3.4             Autômato Finito Não-Determinístico
Linguagens Formais e Autômatos - P. Blauth Menezes   52
◆    Não-determinismo
     • importante generalização dos modelos de máquinas
     • fundamental no estudo
        ∗ Modelos para Concorrência
        ∗ Teoria da Computação
        ∗ Linguagens Formais, …

◆    Semântica de não-determinismo adotada
     • usual no estudo das Linguagens Formais
     • objetiva determinar a capacidade de
        ∗ reconhecer linguagens
        ∗ solucionar problemas

     • pode causar alguma confusão com semântica da concorrência


Linguagens Formais e Autômatos - P. Blauth Menezes                 53
◆    Nem sempre não-determinismo aumenta o poder
     • reconhecimento de linguagens de uma classe de autômatos
        ∗ qualquer autômato finito não-determinístico pode ser simulado
          por um autômato finito determinístico

◆    Não-determinismo no programa, é uma função parcial
                     dependendo do estado corrente e do símbolo lido,
                      determina um conjunto de 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

Linguagens Formais e Autômatos - P. Blauth Menezes                        54
Def: Autômato Finito Não-Determinístico (AFN)
                                                     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 }

     • q 0 é um elemento distinguido de Q: estado inicial

     • F é um subconjunto de Q: conjunto de estados finais



Linguagens Formais e Autômatos - P. Blauth Menezes                          55
◆    Autômato como diagrama
                                            δ(p, a) = { q1, q2, …, qn }

                                                                          estado anterior

                                       p

    a                                      a                 a            símbolo lido


                                                                          conjunto de
     q1                               q2                   qn
                                                                          novos estados




Linguagens Formais e Autômatos - P. Blauth Menezes                                       56
◆    Computação de um autômato finito não-
     determinístico
     • 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



◆    Argumentos: computação/função programa estendida
     • conjunto finito de estados e uma palavra




Linguagens Formais e Autômatos - P. Blauth Menezes                 57
Def: Função Programa Estendida, Computação
M = (Σ, Q, δ, q0, F) autômato finito não-determinístico

                                                     δ*: 2Q × Σ* → 2Q

indutivamente definida

     • δ*(P, ε) = P

     • δ*(P, aw) = δ*(∪q∈P δ(q, a), w)



◆    Transição estendida (a um conjunto de estados)
             δ*({ q1, q2,…, qn }, a) = δ(q1, a) ∪ δ(q2, a) ∪…∪ δ(qn, a)



Linguagens Formais e Autômatos - P. Blauth Menezes                        58
◆    Parada 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)




Linguagens Formais e Autômatos - P. Blauth Menezes                        59
Def: Linguagem Aceita, Linguagem Rejeitada
Seja M = (Σ, Q, δ, q0, F) um autômato finito não-determinístico


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




Linguagens Formais e Autômatos - P. Blauth Menezes                       60
Exp: Autômato Finito Não-Determinístico: aa ou bb
     como subpalavra
                      L5 = { w  w possui aa ou bb como subpalavra }

Autômato finito não-determinístico:

                         M5 = ({ a, b }, { q0, q1, q2, qf }, δ5, q0, { qf })

                                                                  q0       a,b

                                                              a        b


                                                     q1                     q2

                                                          a            b

                                                                  qf       a,b



Linguagens Formais e Autômatos - P. Blauth Menezes                               61
q0       a,b

                                                     a        b


                                  q1                               q2

                                              a               b

                                                         qf       a,b


Linguagens Formais e Autômatos - P. Blauth Menezes                      62
q0       a,b

                                                         a        b


                                         q1                            q2

                                                     a            b

                                                             qf       a,b


     • 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

Linguagens Formais e Autômatos - P. Blauth Menezes                          63
q0        a,b

                                                              a            b


                                                     q1                             q2

                                                          a                 b

                                                                      qf        a,b




                                               δ5                 a             b

                                               q 0 { q0,q1 } { q0,q2 }
                                               q 1 { qf }        -
                                               q2                 -        { qf }
                                               qf         { qf }           { qf }

Linguagens Formais e Autômatos - P. Blauth Menezes                                       64
Exp: AFN: 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                      a               a
                  q0                                 q1        q2              qf


                           a,b




Linguagens Formais e Autômatos - P. Blauth Menezes                                  65
◆    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 AFN
Classe dos Autômatos Finitos Determinísticos é equivalente à
Classe dos Autômatos Finitos Não-Determinísticos




Linguagens Formais e Autômatos - P. Blauth Menezes                   66
Prova: (por indução)
Mostrar que
  • a partir de um AFN M qualquer
  • construir um AFD MD que realiza as mesmas computações
  • MD simula M

AFN → AFD
  • estados de MD simulam combinações de estados alternativos de M
  • prova da simulação: por indução

AFD → AFN
  • não necessita ser mostrado: decorre trivialmente das definições




Linguagens Formais e Autômatos - P. Blauth Menezes                    67
M = (Σ, Q, δ, q0, F) um AFN qualquer. AFD construído

                                            MD = (Σ, QD, δD, 〈q0〉, FD)

     • QD - todas as combinações, sem repetições, de estados de Q
        ∗ notação 〈q1q 2…qn〉
        ∗ ordem não distingue combinações: 〈quq v 〉 = 〈qv q u〉
        ∗ imagem de todos os estados alternativos de M

     • δD: QD × Σ → QD

 δD(〈q1…qn〉, a) = 〈p1…pm〉                            sse   δ*({ q1, …, qn }, a) = { p1, …, pm }

     • 〈q0〉 - estado inicial

     • FD - conjunto de estados 〈q1q 2…qn〉 pertencentes a QD
        ∗ alguma componente qi pertence a F, para i em { 1, 2, …, n }

Linguagens Formais e Autômatos - P. Blauth Menezes                                           68
AFD MD simula as computações do AFN M ???
  • indução no tamanho da palavra
  • mostrar que

           δD*(〈q0〉, w) = 〈q1…qu〉                        sse   δ*({ q0 }, w) = { q1, …, qu }

Base de indução.  w  = 0. Portanto w = ε:

          δD*(〈q0〉, ε) = 〈q0〉                        se e somente se   δ*({ q0 }, ε) = { q0 }

     • verdadeiro, por definição de computação




Linguagens Formais e Autômatos - P. Blauth Menezes                                              69
Hipótese de indução.  w  = n e n ≥ 1. Suponha que:

          δD*(〈q0〉, w) = 〈q1…qu〉                      sse    δ*({ q0 }, w) = { q1, …, qu }

Passo de Indução.  wa  = n + 1 e n ≥ 1

       δD*(〈q0〉, wa) = 〈p1…pv 〉                       sse    δ*({ q0 }, wa) = { p1, …, pv }

     • equivale (hipótese de indução)

δD(〈q1…qu〉, a) = 〈p1…pv 〉                            sse    δ*({ q1, …, qu }, a) = { p1, …, pv }

     • verdadeiro, por definição de δD

Logo, MD simula M para qualquer entrada w pertencente a Σ*




Linguagens Formais e Autômatos - P. Blauth Menezes                                            70
◆    Portanto, linguagem aceita por AFN
     • é Linguagem Regular ou Tipo 3

Obs: Determinismo × Não-Determinismo
Muitas vezes é mais fácil desenvolver um AFN do que um AFD
  • exemplo

           { w  o quinto símbolo da direita para a esquerda de w é a }

     • solução determinista: não é trivial; número grande de estados
     • solução não-determinista: bem simples; poucos estados

Alternativa para construir um AFD
   • desenvolver inicialmente AFN
   • aplicar o algoritmo apresentado na prova do teorema

Linguagens Formais e Autômatos - P. Blauth Menezes                        71
Exp: AFN → AFD
                         M6 = ({ a, b }, { q0, q1, q2, qf }, δ6, q0, { qf })


                                   a                      a                a
                  q0                                 q1           q2           qf


                           a,b


                                     M6D = ({ a, b }, QD, δ6D, 〈q0〉, FD)


     • QD = { 〈q0〉, 〈q1〉, 〈q2〉, 〈qf〉, 〈q0q 1〉, 〈q0q 2〉, …, 〈q0q 1q 2q f〉 }
     • FD = { 〈qf〉, 〈q0q f〉, 〈q1q f〉, …, 〈q0q 1q 2q f〉 }

Linguagens Formais e Autômatos - P. Blauth Menezes                                  72
AFN
                                             a               a             a
                                q0                   q1               q2           qf


                                       a,b

AFD

                                        δ6D                      a             b

                                       〈q0〉                 〈q0q 1〉        〈q0〉
                                     〈q0q 1〉               〈q0q 1q 2〉      〈q0〉
                                  〈q0q 1q 2〉              〈q0q 1q 2q f〉    〈q0〉
                                〈q0q 1q 2q f〉             〈q0q 1q 2q f〉    〈q0〉




Linguagens Formais e Autômatos - P. Blauth Menezes                                      73
δ6D                    a                 b

                                       p 0 = 〈q0〉                 〈q0q 1〉            〈q0〉
                                    p 1 = 〈q0q 1〉              〈q0q 1q 2〉            〈q0〉
                                  p 2 = 〈q0q 1q 2〉            〈q0q 1q 2q f〉          〈q0〉
                                p f = 〈q0q 1q 2q f〉           〈q0q 1q 2q f〉          〈q0〉




                                                          b                      b                 b
                                      a                       a                           a
                       p0                            p1                     p2                pf

                              b                                                                    a

Linguagens Formais e Autômatos - P. Blauth Menezes                                                     74
3 – Linguagens Regulares
     3.1 Sistema de Estados Finitos
     3.2 Composição Seqüencial, Concorrente e
         Não-Determinista
     3.3 Autômato Finito
     3.4 Autômato Finito Não-Determinístico
     3.5 Autômato Finito com Movimentos Vazios
     3.6 Expressão Regular
     3.7 Gramática Regular




Linguagens Formais e Autômatos - P. Blauth Menezes   75
3.5 Autômato Finito com Movimentos
    Vazios
◆    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



Linguagens Formais e Autômatos - P. Blauth Menezes                 76
◆    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 aAFNε pode ser simulado por um AFD




Linguagens Formais e Autômatos - P. Blauth Menezes           77
Def: Autômato Finito com Movimentos Vazios - AFNε
                                                     M = (Σ, Q, δ, q0, F)

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

                                               δ: Q × (Σ ∪ { ε }) → 2Q
           ∗ movimento vazio ou transição vazia

                                            δ(p, ε) = { q1, q2, …, qn }

     • q 0 - elemento distinguido de Q: estado inicial
     • F - subconjunto de Q: conjunto de estados finais



Linguagens Formais e Autômatos - P. Blauth Menezes                          78
◆    Autômato como diagrama
             δ(q, ε) = { p0 }                  δ(q, a1) = { p1 }   …   δ(q, an) = { pn }


                                                          q

                       ε                                                            an
                                                              a1


                         p0                              p1                    pn




Linguagens Formais e Autômatos - P. Blauth Menezes                                         79
◆    Computação de um AFNε
     • análoga à de um AFN

◆    Processamento de uma transição vazia
     • não-determinístico

     • assume simultaneamente os estados destino e origem

     • origem de um movimento vazio: caminho alternativo




Linguagens Formais e Autômatos - P. Blauth Menezes          80
Exp: AFNε: a’s antecedem b’s
                                M7 = ({ a, b }, { q0, qf }, δ7, q0, { qf })


                                            δ7       a          b        ε

                                            q 0 { q0 }             -   { qf }
                                            qf     -          { qf }


                                                               ε
                                                     q0                  qf

                                                          a                     b



Linguagens Formais e Autômatos - P. Blauth Menezes                                  81
◆    Antes de definir computação
     • computação de transições vazias a partir de
        ∗ um estado
        ∗ um conjunto finito de estados




Linguagens Formais e Autômatos - P. Blauth Menezes   82
Def: Computação Vazia
M = (Σ, Q, δ, q0, F)

Computação Vazia ou Função Fecho Vazio (um estado)

                                                      δε: Q → 2Q

     • indutivamente definida

           ∗ δε(q) = { q }, se δ(q, ε) é indefinida
           ∗ δε(q) = { q } ∪ δ(q, ε) ∪ (∪p∈δ(q,ε) δε(p)), caso contrário

Computação Vazia ou Função Fecho Vazio (conjunto de estados)
                                                     δε*: 2Q → 2Q

     • tal que
                                                δε*(P) = ∪q∈P δε(q)
Linguagens Formais e Autômatos - P. Blauth Menezes                         83
◆    Por simplicidade, δε e δε*
     • ambas denotadas por δε


Exp: Computação Vazia

                                                              ε
                                                     q0           qf

                                                          a            b

     • δε(q0) = { q0, qf }
     • δε(qf) = { qf }
     • δε({ q0, qf }) = { q0, qf }



Linguagens Formais e Autômatos - P. Blauth Menezes                         84
◆    Computação de um AFNε para uma entrada w
     • sucessiva aplicação da função programa

     • para cada símbolo de w (da esquerda para a direita)

     • cada passo de aplicação intercalado com computações vazias

     • até ocorrer uma condição de parada

◆    Assim, antes de processar a próxima transição
     • determinar
        ∗ todos os demais estados atingíveis
        ∗ exclusivamente por movimentos vazios




Linguagens Formais e Autômatos - P. Blauth Menezes                  85
Def: Função Programa Estendida, Computação
M = (Σ, Q, δ, q0, F) AFNε

                                                     δ*: 2Q × Σ* → 2Q

indutivamente definida

     • δ*(P, ε) = δε(P)
     • δ*(P, wa) = δε(R) onde R = { r  r ∈ δ(s, a) e s ∈ δ*(P, w) }


◆    Parada do processamento, Ling. Aceita/Rejeitada
     • análoga à do autômato finito não-determinístico




Linguagens Formais e Autômatos - P. Blauth Menezes                      86
Exp: Computação Vazia, Computação
                     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 })
                                                                a
                                                           q1

                                       ε

                                       ε                   b         b
                           q0                         q2        q3            qf
                                       ε
                                                                          c
                         a,b,c                        c         c
                                                 q4        q5        q6



Linguagens Formais e Autômatos - P. Blauth Menezes                                 87
a
                                                               q1

                                            ε

                                            ε                  b         b
                                  q0                      q2        q3               qf
                                            ε
                                                                              c
                                a,b,c                     c         c
                                                     q4        q5        q6



δ*({ q0 }, abb) = δε({ r  r ∈ δ(s, b) e s ∈ δ*({ q0 }, ab) })                                   (1)
δ*({ q0 }, ab) = δε({ r  r ∈ δ(s, b) e s ∈ δ*({ q0 }, a) })                                     (2)
δ*({ q0 }, a) = δε({ r  r ∈ δ(s, a) e s ∈ δ*({ q0 }, ε) })                                      (3)
Como:
δ*({ q0 }, ε) } = δε({ q0 }) = { q0, q1, q2, q4 }                                 considerado em (3)
δ*({ q0 }, a) = { q0, q1, q2, q4, qf }                                            considerado em (2)
δ*({ q0 }, ab) = { q0, q1, q2, q3, q4 }                                           considerado em (1)
Resulta na computação: δ*({ q0 }, abb) = { q0, q1, q2, q3, q4, qf }
Linguagens Formais e Autômatos - P. Blauth Menezes                                                88
Teorema: Equivalência entre AFN e AFNε
Classe dos Autômatos Finitos com Movimentos Vazios é equivalente à
Classe dos Autômatos Finitos Não-Determinísticos

Prova: (por indução)
Mostrar que

     • a partir de um AFNε M qualquer
     • construir um AFN MN que realiza as mesmas computações
     • MN simula M

AFNε → AFN
  • construção de uma função programa sem movimentos vazios
  • conjunto de estados destino de cada transição não-vazia
     ∗ ampliado com os demais estados possíveis de serem atingidos
       exclusivamente por transições vazias

Linguagens Formais e Autômatos - P. Blauth Menezes               89
M = (Σ, Q, δ, q0, F) um AFNε qualquer. AFN construído

                                              MN = (Σ, Q, δN, q0, FN)

     • δN: Q × Σ → 2Q é tal que

                                                δN(q, a) = δ*({ q }, a)

     • FN é o conjunto de todos os estados q pertencentes a Q

                                                     δε(q) ∩ F ≠ ∅
           ∗    estados que atingem estados finais via computações vazias

Demonstração que, de fato, o AFN MN simula o AFNε M

     • indução no tamanho da palavra
     • exercício


Linguagens Formais e Autômatos - P. Blauth Menezes                          90
◆    Portanto, linguagem aceita por AFNε
     • é Linguagem Regular ou Tipo 3




Linguagens Formais e Autômatos - P. Blauth Menezes   91
Exp: Construção de um AFN a partir de um AFNε
AFNε - M9 = ({ a, b }, { q0, q1, q2 }, δ9, q0, { q2 })

                                               δ9        a   b      ε

                                               q 0 { q0 }    -    { q1 }

                                               q1        -{ q1 } { q2 }
                                               q 2 { q2 }    -      -


                                                     ε                     ε
                                 q0                          q1                q2

                                          a                       b                 a

Linguagens Formais e Autômatos - P. Blauth Menezes                                      92
ε             ε
                                 q0                      q1             q2

                                          a                   b              a


M9N = ({ a, b }, { q0, q1, q2 }, δ9N q0, FN)


                        a,b

                                                a,b               a,b
                                q0                       q1             q2

                                          a                   b              a


Linguagens Formais e Autômatos - P. Blauth Menezes                               93
ε            ε
                                 q0                      q1           q2

                                          a                   b            a

FN = { q0, q1, q2 }

     • δε(q0) = { q0, q1, q2 }
     • δε(q1) = { q1, q2 }
     • δε(q2) = { q2 }




Linguagens Formais e Autômatos - P. Blauth Menezes                             94
ε            ε
                                 q0                      q1           q2

                                          a                   b            a

Na construção de δ9N

     • δ9*({ q0 }, ε) = { q0, q1, q2 }
     • δ9*({ q1 }, ε) = { q1, q2 }
     • δ9*({ q2 }, ε) = { q2 }




Linguagens Formais e Autômatos - P. Blauth Menezes                             95
ε                   ε
                                 q0                          q1                     q2

                                          a                         b                     a

Assim, δ9N é tal que

δ9N(q0, a) = δ9*({ q0 }, a) =
                                  δε({ r  r ∈ δ(s, a) e s ∈ δ*({ q0 }, ε) }) = { q0, q1, q2 }

δ9N(q0, b) = δ9*({ q0 }, b) =
                                         δε({ r  r ∈ δ(s, b) e s ∈ δ*({ q0 }, ε) }) = { q1, q2 }

δ9N(q1, a) = δ9*({ q1 }, a) =
                                                 δε({ r  r ∈ δ(s, a) e s ∈ δ*({ q1 }, ε) }) = { q2 }

Linguagens Formais e Autômatos - P. Blauth Menezes                                                 96
ε            ε
                                 q0                      q1           q2

                                          a                   b            a

     • δ9N(q1, b) = δ9*({ q1 }, b) = δε({ r  r ∈ δ(s, b) e
      s ∈ δ*({ q1 }, ε) }) = { q1, q2 }

     • δ9N(q2, a) = δ9*({ q2 }, a) = δε({ r  r ∈ δ(s, a) e
      s ∈ δ*({ q2 }, ε) }) = { q2 }

     • δ9N(q2, b) = δ9*({ q2 }, b) = δε({ r  r ∈ δ(s, b) e
      s ∈ δ*({ q2 }, ε) }) é indefinida




Linguagens Formais e Autômatos - P. Blauth Menezes                             97
3 – Linguagens Regulares
     3.1 Sistema de Estados Finitos
     3.2 Composição Seqüencial, Concorrente e
         Não-Determinista
     3.3 Autômato Finito
     3.4 Autômato Finito Não-Determinístico
     3.5 Autômato Finito com Movimentos Vazios
     3.6 Expressão Regular
     3.7 Gramática Regular




Linguagens Formais e Autômatos - P. Blauth Menezes   98
3.6 Expressão Regular
◆    Toda linguagem regular pode ser descrita por uma
     • Expressão Regular

◆    Formalismo denotacional (gerador)
◆    Definida a partir de
     • conjuntos (linguagens) básicos
     • concatenação e união

◆    Adequadas para a comunicação
     • humano × humano
     • humano × máquina

Linguagens Formais e Autômatos - P. Blauth Menezes      99
Def: Expressão Regular (ER)
Base de Indução

     • ∅ é ER
        ∗ denota a linguagem vazia: ∅

     • ε é ER
        ∗ denota a linguagem { ε }

     • x é ER (para qualquer x ∈ Σ)
        ∗ denota a linguagem { x }




Linguagens Formais e Autômatos - P. Blauth Menezes   100
Def: …Expressão Regular (ER)
Passo de Indução: se r e s são ER e denotam as ling. R e S, então

     • União. (r + s) é ER
        ∗ denota a linguagem R ∪ S

     • Concatenação. (rs) é ER
        ∗ denota a linguagem R S = { uv  u ∈ R e v ∈ S }

     • Concatenação Sucessiva. (r*) é ER
        ∗ denota a linguagem R*




Linguagens Formais e Autômatos - P. Blauth Menezes                  101
Def: Linguagem Gerada por uma ER
Se r é ER, a correspondente linguagem denotada é dita

     • Linguagem Gerada por r

                                                L(r)   ou   GERA(r)



◆    Omissão de parênteses em uma ER é usual
     • concatenação sucessiva: precedência sobre concatenação e união

     • concatenação: precedência sobre união




Linguagens Formais e Autômatos - P. Blauth Menezes                    102
Exp: Expressão Regular


                                         ER          Linguagem Gerada ???

                          aa
                          ba*
                          (a + b)*
                          (a + b)*aa(a + b)*
                          a*ba*ba*
                          (a + b)*(aa + bb)
                          (a + ε)(b + ba)*




Linguagens Formais e Autômatos - P. Blauth Menezes                          103
Exp: …Expressão Regular


              ER                                     Linguagem Gerada

aa                                  somente a palavra aa
ba*                                 todas as palavras que iniciam por b, seguido por
                                      zero ou mais a
(a + b)*                            todas as palavras sobre { a, b }
(a + b)*aa(a + b)* todas as palavras contendo aa como subpalavra
a*ba*ba*                            todas as palavras contendo exatamente dois b
(a + b)*(aa + bb) todas as palavras que terminam com aa ou bb
(a + ε)(b + ba)*                    todas as palavras que não possuem dois a
                                    consecutivos

Linguagens Formais e Autômatos - P. Blauth Menezes                                     104
Exp: …Expressão Regular
Linguagem gerada pela ER (a + b)*(aa + bb)

     • a e b denotam { a } e { b }, respectivamente
     • a + b denota { a } ∪ { b } = { a, b }
     • (a + b)* denota { a, b }*
     • aa e bb denotam { a } { a } = { aa } e { b } { b } = { bb },
       respectivamente
     • (aa + bb) denota { aa } ∪ { bb } = { aa, bb }
     • (a + b)*(aa + bb) denota { a, b }* { aa, bb }

Portanto, GERA( (a + b)*(aa + bb) ) é

                                        { aa, bb, aaa, abb, baa, bbb,
               aaaa, aabb, abaa, abbb, baaa, babb, bbaa, bbbb,… }


Linguagens Formais e Autômatos - P. Blauth Menezes                      105
Teorema: Expressão Regular → Linguagem Regular
Se r é ER, então GERA(r) é linguagem regular

Prova: (por indução)
Uma linguagem é regular sse é possível construir um

     • AFD, AFN ou AFNε que reconheça a linguagem

É necessário mostrar que

     • dada uma ER r qualquer
     • é possível construir um autômato finito M tal que

                                              ACEITA(M) = GERA(r)

Demonstração: indução no número de operadores


Linguagens Formais e Autômatos - P. Blauth Menezes                  106
Base de indução. r ER com zero operadores

     • r=∅
        ∗ Autômato???

     • r=ε
        ∗ Autômato???

     • r = x (x ∈ Σ)
        ∗ Autômato???




Linguagens Formais e Autômatos - P. Blauth Menezes   107
Base de indução. r ER com zero operadores

     • r = ∅. Autômato: M1 = (∅, { q0 }, δ1, q0, ∅)

                                                          q0


     • r = ε. Autômato: M2 = (∅, { qf }, δ2, qf, { qf })

                                                          qf


     • r = x (x ∈ Σ). Autômato: M3 = ({ x }, { q0, qf }, δ3, q0, { qf })

                                                          x
                                                     q0        qf


Linguagens Formais e Autômatos - P. Blauth Menezes                         108
Hipótese de Indução. r ER com até n > 0 operadores

     • suponha que é possível definir um AF que aceita GERA(r)

Passo de Indução. r ER com n + 1 operadores

     • r pode ser representada por (r1 e r2 possuem conjuntamente no
       máximo n operadores)
        ∗ r = r1 + r2
        ∗ r = r1r2
        ∗ r = r1*

     • por hipótese de indução, existem

     M1 = (Σ1, Q1, δ1, q01, { qf1 })                 e   M2 = (Σ2, Q2, δ2, q02, { qf2 })

             ACEITA(M1) = GERA(r1)                   e   ACEITA(M2) = GERA(r2)


Linguagens Formais e Autômatos - P. Blauth Menezes                                         109
r = r1 + r2

     • Autômato???

r = r1r2

     • Autômato???

r = r1*

     • Autômato???




Linguagens Formais e Autômatos - P. Blauth Menezes   110
• sem perda de generalidade:
        ∗ M1 e M2 possuem exatamente um estado final (exercícios)
        ∗ estados dos autômatos: conjunto disjuntos (se não forem?)

r = r1 + r2. Autômato M = (Σ1 ∪ Σ2, Q1 ∪ Q2 ∪ { q0, qf }, δ, q0, { qf })


                                         ε                 M1         ε
                                                     q01        qf1


                                 q0                                       qf

                                         ε                 M2         ε
                                                     q02        qf2



Linguagens Formais e Autômatos - P. Blauth Menezes                             111
r = r1r2. Autômato M = (Σ1 ∪ Σ2, Q1 ∪ Q2, δ, q01, { qf2 })

                                        M1                   ε             M2
                             q01                     qf1           q02          qf2



r = r1*. Autômato (suponha q0 ∉ Q1, qf ∉ Q1)
   • M = (Σ1, Q1 ∪ { q0, qf }, δ, q0, { qf })

                   ε
                                       ε                    M1             ε
                     q0                               q01        qf1                  qf

                                                                       ε

Linguagens Formais e Autômatos - P. Blauth Menezes                                         112
◆    Exercício: no caso r = r1 + r2
     • não introduzir os estados q0 e qf
     • identificar ("unificar") os estados iniciais/finais de M1/M2 ???



                                         ε                 M1         ε
                                                     q01        qf1


                                 q0                                       qf

                                         ε                 M2         ε
                                                     q02        qf2



Linguagens Formais e Autômatos - P. Blauth Menezes                             113
◆    Exercício: no caso r = r1 *
     • não introduzir o estado qf
     • manter qf1 como o estado final
     • transição vazia de q0 para qf1 ???



                   ε
                                       ε                   M1             ε
                     q0                              q01        qf1           qf

                                                                      ε



Linguagens Formais e Autômatos - P. Blauth Menezes                                 114
Exp: AFNε a partir de a*(aa + bb)


                                  ER                         AFNε

                                   a                           a


                                   b                           b


                                  a*                 ε
                                                         ε     a        ε

                                                                    ε

                                  aa                     a     ε        a


Linguagens Formais e Autômatos - P. Blauth Menezes                          115
ER                         AFNε

                                  bb                     b     ε    b


                           (aa + bb)                     a     ε    a

                                                                        ε
                                                     ε

                                                     ε
                                                                        ε
                                                         b     ε    b




Linguagens Formais e Autômatos - P. Blauth Menezes                          116
• Autômato resultante: a*(aa + bb)

                                                                 a   ε   a

                                                                             ε
          ε                                                  ε
                  ε                a                 ε   ε

                                                 ε           ε
                                                                             ε
                                                                 b   ε   b




Linguagens Formais e Autômatos - P. Blauth Menezes                           117
Teorema: Linguagem Regular → Expressão Regular
Se L é linguagem regular, então existe uma ER r tal que

                                                     GERA(r) = L

O teorema não será provado




Linguagens Formais e Autômatos - P. Blauth Menezes                 118
3 – Linguagens Regulares
     3.1 Sistema de Estados Finitos
     3.2 Composição Seqüencial, Concorrente e
         Não-Determinista
     3.3 Autômato Finito
     3.4 Autômato Finito Não-Determinístico
     3.5 Autômato Finito com Movimentos Vazios
     3.6 Expressão Regular
     3.7 Gramática Regular




Linguagens Formais e Autômatos - P. Blauth Menezes   119
3.7 Gramática Regular
◆    Formalismo Gramáticas
     • permite definir tanto linguagens regulares como não-regulares

◆    Gramática Regular
     • restrições nas regras de produção

     • existe mais de uma forma de restringir as regras de produção
        ∗ Gramáticas Lineares




Linguagens Formais e Autômatos - P. Blauth Menezes                     120
Def: Gramáticas Lineares
                                                     G = (V, T, P, S)

Gramática Linear à Direita (GLD)
                                              A → wB        ou    A→w
Gramática Linear à Esquerda (GLE)
                                              A → Bw        ou    A→w
Gramática Linear Unitária à Direita (GLUD)
  • como na gramática linear à direita. Adicionalmente
                                                        w≤1
Gramática Linear Unitária à Esquerda (GLUE)
  • como na gramática linear à esquerda. Adicionalmente
                                                        w≤1

Linguagens Formais e Autômatos - P. Blauth Menezes                      121
◆    Lado direito de uma produção
     • no máximo uma variável
        ∗ sempre antecede (linear à esquerda)
        ∗ ou sucede (linear à direita)
        ∗ qualquer subpalavra (eventualmente vazia) de terminais

◆    Exercício
     • gramática simultaneamente nas quatro formas lineares?




Linguagens Formais e Autômatos - P. Blauth Menezes                 122
Teorema: Equivalência das Gramáticas Lineares
Seja L uma linguagem. Então:

     •   L é gerada por uma GLD sse
     •   L é gerada por uma GLE sse
     •   L é gerada por uma GLUD sse
     •   L é gerada por uma GLUE

◆    Diversas formas das gramáticas lineares
     • formalismos equivalentes
     • demonstração do teorema: exercício


Def: Gramática Regular (GR)
G é uma gramática linear

Linguagens Formais e Autômatos - P. Blauth Menezes   123
Def: Linguagem Gerada
G = (V, T, P, S) gramática

                                              L(G)   ou     GERA(G)

é tal que

                                           L(G) = { w ∈ T*  S ⇒+ w }


Exp: Gramática Regular: a(ba)*
                                                      ???




Linguagens Formais e Autômatos - P. Blauth Menezes                      124
Exp: Gramática Regular: a(ba)*
Linear à Direita. G = ({ S, A }, { a, b }, P, S)
   • S → aA
   • A → baA  ε

Linear à Esquerda. G = ({ S }, { a, b }, P, S)
   • S → Sba  a

Linear Unitária à Direita. G = ({ S, A, B }, { a, b }, P, S)
   • S → aA
   • A → bB  ε
   • B → aA

Linear Unitária à Esquerda. G = ({ S, A }, { a, b }, P, S)
   • S → Aa  a
   • A → Sb

Linguagens Formais e Autômatos - P. Blauth Menezes             125
Exp: Gramática Regular: (a + b)*(aa + bb)
Linear à Direita. G = ({ S, A }, { a, b }, P, S), e P é tal que

     • S → aS  bS  A

     • A → aa  bb

Linear à Esquerda. G = ({ S, A }, { a, b }, P, S), e P é tal que

     • S → Aaa  Abb

     • A → Aa  Ab  ε




Linguagens Formais e Autômatos - P. Blauth Menezes                 126
Obs: Gramática Linear à Esquerda e Linear à Direita
Suponha  w  ≥ 1
Produções simultaneamente do tipo

     • A → wB (direita) e
     • A → Bw (esquerda)

correspondente linguagem gerada

     • poderá não ser regular
     • não é uma gramática regular

É possível desenvolver uma gramática, com produções lineares à direita
e à esquerda, que gera (exercício)

                                                     { anbn  n ∈ N }

Linguagens Formais e Autômatos - P. Blauth Menezes                      127
Teorema: Gramática Regular → Linguagem Regular
Se L é gerada por uma gramática regular,
então L é linguagem regular

Prova: (por indução)
Mostrar que
  • dado uma GLUD G qualquer
  • é possível construir um AFNε M tq

                                             ACEITA(M) = GERA(G)

M simula as derivações de G
  • demonstração de que ACEITA(M) = GERA(r)
  • indução no número de derivações



Linguagens Formais e Autômatos - P. Blauth Menezes                 128
Suponha G = (V, T, P, S) uma GLUD. Seja o AFNε

                                                     M = (Σ, Q, δ, q0, F)
     •   Σ=T
     •   Q = V ∪ { qf }                                                            (suponha qf ∉ V)
     •   F = { qf }
     •   q0 = S

                               Tipo da Produção Transição Gerada

                                            A→ε                     δ(A, ε) = qf
                                            A→a                     δ(A, a) = qf
                                            A→B                     δ(A, ε) = B
                                          A → aB                    δ(A, a) = B


Linguagens Formais e Autômatos - P. Blauth Menezes                                              129
M simula as derivações de G

                                              ACEITA(M) = GERA(G)

Base de indução. S ⇒1 α. Quatro casos
  • α=ε         existe S → ε                                   Logo, δ(S, ε) = qf
  • α=a         existe S → a                                   Logo, δ(S, a) = qf
  • α=A         existe S → A                                   Logo, δ(S, ε) = A
  • α = aA      existe S → aA                                  Logo, δ(S, a) = A

Hipótese de indução. S ⇒n α, n > 1. Dois casos
   • α=w         então δ*(S, w) = qf                                                (1)
   • α = wA      então δ*(S, w) = A                                                 (2)

Passo de Indução. S ⇒n+1 α. Então (2) é a única hipótese que importa

                                                     S ⇒n wA ⇒1 α

Linguagens Formais e Autômatos - P. Blauth Menezes                                  130
Quatro casos:

     • α = wε = w. Existe A → ε. Logo

                               δ*(S, wε) = δ(δ*(S, w), ε) = δ(A, ε) = qf

     • α = wb. Existe A → b. Logo

                              δ*(S, wb) = δ(δ*(S, w), b) = δ(A, b) = qf

     • α = wB. Existe A → B. Logo

                               δ*(S, wε) = δ(δ*(S, w), ε) = δ(A, ε) = B

     • α = wbB. Existe A → bB. Logo

                              δ*(S, wb) = δ(δ*(S, w), b) = δ(A, b) = B



Linguagens Formais e Autômatos - P. Blauth Menezes                         131
Exp: Construção de um AFNε a partir de uma GR
                                         G = ({ S, A, B }, { a, b }, P, S)

     • S → aA
     • A → bB  ε
     • B → aA

                                M = ({ a, b }, { S, A, B, qf }, δ, S, { qf })

                                                     a               ε
                                              S              A               qf

                                                         b
                                                                 a

                                                             B


Linguagens Formais e Autômatos - P. Blauth Menezes                                132
Produção        Transição

                                                S → aA       δ(S, a) = A
                                               A → bB        δ(A, b) = B
                                                 A→ε         δ(A, ε) = qf
                                               B → aA        δ(B, a) = A

                                                     a               ε
                                                S            A              qf

                                                         b
                                                                 a

                                                             B


Linguagens Formais e Autômatos - P. Blauth Menezes                               133
Teorema: Linguagem Regular → Gramática Regular
Se L é linguagem regular, então existe G, gramática regular que gera L

Prova: (por indução)
L é linguagem regular

     • existe um AFD M = (Σ, Q, δ, q0, F) tal que ACEITA(M) = L

Construição de uma GLUD G

                                              GERA(G) = ACEITA(M)

     • derivação simula a função programa estendida




Linguagens Formais e Autômatos - P. Blauth Menezes                   134
Suponha um AFD M = (Σ, Q, δ, q0, F) tal que ACEITA(M) = L
Seja a gramática regular

                                                     G = (V, T, P, S)

     • V=Q∪{S}                                                              (suponha S ∉ Q)
     • T=Σ
     • suponha qi, qk ∈ Q, qf ∈ F e a ∈ Σ


                                             Transição         Produção

                                                     -          S → q0
                                                     -           qf → ε
                                            δ(qi, a) = qk       q i → aqk

Linguagens Formais e Autômatos - P. Blauth Menezes                                      135
GERA(G) = ACEITA(M)? Indução no tamanho da palavra (w ∈ Σ*)

Base de Indução.  w  = 0

     • por definição, S → q0 é produção
     • se ε ∈ ACEITA(M), então
        ∗ q 0 é estado final
        ∗ q 0 → ε é produção

                                                     S ⇒ q0 ⇒ ε

Hipótese de Indução.  w  = n (n ≥ 1) e δ*(q0, w) = q. Dois casos

     • q não é final. Suponha S ⇒n wq                             (única hipótese que importa)
     • q é final. Suponha S ⇒n wq ⇒ w




Linguagens Formais e Autômatos - P. Blauth Menezes                                         136
Passo de Indução.  wa  = n + 1 e δ*(q0, wa) = p. Então

                                         δ(δ*(q0, w), a) = δ(q, a) = p

     • p não é final
        ∗ S ⇒n wq ⇒1 wap

     • p é final
        ∗ S ⇒n wq ⇒1 wap ⇒1 wa




Linguagens Formais e Autômatos - P. Blauth Menezes                       137
Exp: Construção de uma GR a partir de um AFD
M = ({ a, b, c }, { q0, q1, q2 }, δ, q0, { q0, q1, q2 })


                                                     b        c
                                             q0          q1       q2


                                              a          b        c


G = ({ q0, q1, q2, S }, { a, b, c }, P, S)




Linguagens Formais e Autômatos - P. Blauth Menezes                     138
Transição              Produção

                                               -                   S → q0
                                               -                    q0 → ε
                                               -                    q1 → ε
                                               -                    q2 → ε
                                         δ(q0, a) = q0            q 0 → aq0
                                         δ(q0, b) = q1            q 0 → bq1
                                         δ(q1, b) = q1            q 1 → bq1
                                         δ(q1, c) = q2            q 1 → cq2
                                         δ(q2, c) = q2            q 2 → cq2

                                                         b         c
                                                 q0          q1         q2


                                                     a       b          c

Linguagens Formais e Autômatos - P. Blauth Menezes                            139
Linguagens Formais e Autômatos
                                                     P. Blauth Menezes

                      1       Introdução e Conceitos Básicos
                      2       Linguagens e Gramáticas
                      3       Linguagens Regulares
                      4       Propriedades das Linguagens Regulares
                      5       Autômato Finito com Saída
                      6       Linguagens Livres do Contexto
                      7       Propriedades e Reconhecimento das Linguagens
                              Livres do Contexto
                      8       Linguagens Recursivamente Enumeráveis e
                               Sensíveis ao Contexto
                      9       Hierarquia de Classes e Linguagens e Conclusões

Linguagens Formais e Autômatos - P. Blauth Menezes                              140

Más contenido relacionado

La actualidad más candente

Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Leinylson Fontinele
 
Raciocínio Lógico Aplicado a Resolução de Problemas Matemáticos
Raciocínio Lógico Aplicado a Resolução de Problemas MatemáticosRaciocínio Lógico Aplicado a Resolução de Problemas Matemáticos
Raciocínio Lógico Aplicado a Resolução de Problemas MatemáticosAndré Constantino da Silva
 
Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Eder Samaniego
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Ricardo Terra
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPDelacyr Ferreira
 
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaEstrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaLeinylson Fontinele
 
Aula 10 minimizaçãode automato
Aula 10   minimizaçãode automatoAula 10   minimizaçãode automato
Aula 10 minimizaçãode automatowab030
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Farmacologia do sistema nervoso autonomo parassimpatico
Farmacologia do sistema nervoso autonomo parassimpaticoFarmacologia do sistema nervoso autonomo parassimpatico
Farmacologia do sistema nervoso autonomo parassimpaticoalklafke
 
Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)
Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)
Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)Gustavo Zimmermann
 
Algoritmos e Programação: Matrizes
Algoritmos e Programação: MatrizesAlgoritmos e Programação: Matrizes
Algoritmos e Programação: MatrizesAlex Camargo
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordGabriel Albuquerque
 
Raciocinio Lógico
Raciocinio LógicoRaciocinio Lógico
Raciocinio LógicoLeocely
 
Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasDelacyr Ferreira
 
Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Pacc UAB
 

La actualidad más candente (20)

Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
 
Top down parsing
Top down parsingTop down parsing
Top down parsing
 
Expressões Regulares: Teoria e Prática
Expressões Regulares: Teoria e PráticaExpressões Regulares: Teoria e Prática
Expressões Regulares: Teoria e Prática
 
Algoritmos gulosos
Algoritmos gulososAlgoritmos gulosos
Algoritmos gulosos
 
Raciocínio Lógico Aplicado a Resolução de Problemas Matemáticos
Raciocínio Lógico Aplicado a Resolução de Problemas MatemáticosRaciocínio Lógico Aplicado a Resolução de Problemas Matemáticos
Raciocínio Lógico Aplicado a Resolução de Problemas Matemáticos
 
Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NP
 
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaEstrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
 
Aula 10 minimizaçãode automato
Aula 10   minimizaçãode automatoAula 10   minimizaçãode automato
Aula 10 minimizaçãode automato
 
AnsiolíTicos E HipnóTicos
AnsiolíTicos E HipnóTicosAnsiolíTicos E HipnóTicos
AnsiolíTicos E HipnóTicos
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Farmacologia do sistema nervoso autonomo parassimpatico
Farmacologia do sistema nervoso autonomo parassimpaticoFarmacologia do sistema nervoso autonomo parassimpatico
Farmacologia do sistema nervoso autonomo parassimpatico
 
Dijkstra.ppt
Dijkstra.pptDijkstra.ppt
Dijkstra.ppt
 
Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)
Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)
Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)
 
Algoritmos e Programação: Matrizes
Algoritmos e Programação: MatrizesAlgoritmos e Programação: Matrizes
Algoritmos e Programação: Matrizes
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
 
Raciocinio Lógico
Raciocinio LógicoRaciocinio Lógico
Raciocinio Lógico
 
Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de Recorrências
 
Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1
 

Similar a 03 linguagens regulares

09 hierarquia de classes e linguagens e conclusoes
09   hierarquia de classes e linguagens e conclusoes09   hierarquia de classes e linguagens e conclusoes
09 hierarquia de classes e linguagens e conclusoesComputação Depressão
 
08 linguagens recursivamente enumeraveis e sensiveis ao contexto
08   linguagens recursivamente enumeraveis e sensiveis ao contexto08   linguagens recursivamente enumeraveis e sensiveis ao contexto
08 linguagens recursivamente enumeraveis e sensiveis ao contextoComputação Depressão
 
Aula 1 - Apresentação da disciplina e metodologia de trabalho. aspectos teori...
Aula 1 - Apresentação da disciplina e metodologia de trabalho. aspectos teori...Aula 1 - Apresentação da disciplina e metodologia de trabalho. aspectos teori...
Aula 1 - Apresentação da disciplina e metodologia de trabalho. aspectos teori...wab030
 
Aula 4 linguagens regularese automatosfinitosdeterministicos
Aula 4   linguagens regularese automatosfinitosdeterministicosAula 4   linguagens regularese automatosfinitosdeterministicos
Aula 4 linguagens regularese automatosfinitosdeterministicoswab030
 
07 propriedades e reconhecimento das linguagens livres do contexto
07   propriedades e reconhecimento das linguagens livres do contexto07   propriedades e reconhecimento das linguagens livres do contexto
07 propriedades e reconhecimento das linguagens livres do contextoComputação Depressão
 
04 propriedades das linguagens regulares
04   propriedades das linguagens regulares04   propriedades das linguagens regulares
04 propriedades das linguagens regularesComputação Depressão
 
Aula 2 - PIE - LFA - (2018.2) CCO 6 NA
Aula 2 - PIE - LFA - (2018.2) CCO 6 NAAula 2 - PIE - LFA - (2018.2) CCO 6 NA
Aula 2 - PIE - LFA - (2018.2) CCO 6 NACloves da Rocha
 
Cronograma da Disciplina Aspectos Teóricos da Computação
Cronograma da Disciplina Aspectos Teóricos da ComputaçãoCronograma da Disciplina Aspectos Teóricos da Computação
Cronograma da Disciplina Aspectos Teóricos da Computaçãowab030
 

Similar a 03 linguagens regulares (9)

09 hierarquia de classes e linguagens e conclusoes
09   hierarquia de classes e linguagens e conclusoes09   hierarquia de classes e linguagens e conclusoes
09 hierarquia de classes e linguagens e conclusoes
 
08 linguagens recursivamente enumeraveis e sensiveis ao contexto
08   linguagens recursivamente enumeraveis e sensiveis ao contexto08   linguagens recursivamente enumeraveis e sensiveis ao contexto
08 linguagens recursivamente enumeraveis e sensiveis ao contexto
 
Aula 1 - Apresentação da disciplina e metodologia de trabalho. aspectos teori...
Aula 1 - Apresentação da disciplina e metodologia de trabalho. aspectos teori...Aula 1 - Apresentação da disciplina e metodologia de trabalho. aspectos teori...
Aula 1 - Apresentação da disciplina e metodologia de trabalho. aspectos teori...
 
Aula 4 linguagens regularese automatosfinitosdeterministicos
Aula 4   linguagens regularese automatosfinitosdeterministicosAula 4   linguagens regularese automatosfinitosdeterministicos
Aula 4 linguagens regularese automatosfinitosdeterministicos
 
07 propriedades e reconhecimento das linguagens livres do contexto
07   propriedades e reconhecimento das linguagens livres do contexto07   propriedades e reconhecimento das linguagens livres do contexto
07 propriedades e reconhecimento das linguagens livres do contexto
 
04 propriedades das linguagens regulares
04   propriedades das linguagens regulares04   propriedades das linguagens regulares
04 propriedades das linguagens regulares
 
Aula 2 - PIE - LFA - (2018.2) CCO 6 NA
Aula 2 - PIE - LFA - (2018.2) CCO 6 NAAula 2 - PIE - LFA - (2018.2) CCO 6 NA
Aula 2 - PIE - LFA - (2018.2) CCO 6 NA
 
Cronograma da Disciplina Aspectos Teóricos da Computação
Cronograma da Disciplina Aspectos Teóricos da ComputaçãoCronograma da Disciplina Aspectos Teóricos da Computação
Cronograma da Disciplina Aspectos Teóricos da Computação
 
02 linguagens e gramaticas
02   linguagens e gramaticas02   linguagens e gramaticas
02 linguagens e gramaticas
 

Más de Computação Depressão

Sd08 (si) sistemas de arquivos distribuídos
Sd08 (si)   sistemas de arquivos distribuídosSd08 (si)   sistemas de arquivos distribuídos
Sd08 (si) sistemas de arquivos distribuídosComputação Depressão
 
Sd02 (si) gerenciamento de entrada e saída
Sd02 (si)   gerenciamento de entrada e saídaSd02 (si)   gerenciamento de entrada e saída
Sd02 (si) gerenciamento de entrada e saídaComputação Depressão
 

Más de Computação Depressão (20)

Sd08 (si) sistemas de arquivos distribuídos
Sd08 (si)   sistemas de arquivos distribuídosSd08 (si)   sistemas de arquivos distribuídos
Sd08 (si) sistemas de arquivos distribuídos
 
Sd06 (si) exclusão mútua
Sd06 (si)   exclusão mútuaSd06 (si)   exclusão mútua
Sd06 (si) exclusão mútua
 
Sd05 (si) relógios e sincronização
Sd05 (si)   relógios e sincronizaçãoSd05 (si)   relógios e sincronização
Sd05 (si) relógios e sincronização
 
Sd04 (si) comunicação em sd
Sd04 (si)   comunicação em sdSd04 (si)   comunicação em sd
Sd04 (si) comunicação em sd
 
Sd03 (si) conceitos básicos de sd
Sd03 (si)   conceitos básicos de sdSd03 (si)   conceitos básicos de sd
Sd03 (si) conceitos básicos de sd
 
Sd02 (si) gerenciamento de entrada e saída
Sd02 (si)   gerenciamento de entrada e saídaSd02 (si)   gerenciamento de entrada e saída
Sd02 (si) gerenciamento de entrada e saída
 
Sd01 (si) sistemas de arquivos
Sd01 (si)   sistemas de arquivosSd01 (si)   sistemas de arquivos
Sd01 (si) sistemas de arquivos
 
Sd07 (si) eleição
Sd07 (si)   eleiçãoSd07 (si)   eleição
Sd07 (si) eleição
 
Ufbamat2013
Ufbamat2013Ufbamat2013
Ufbamat2013
 
Ufbaingles2013
Ufbaingles2013Ufbaingles2013
Ufbaingles2013
 
Ufbagab mat 2013
Ufbagab mat 2013Ufbagab mat 2013
Ufbagab mat 2013
 
Ufbagab ingles2013
Ufbagab ingles2013Ufbagab ingles2013
Ufbagab ingles2013
 
Ufbagab fis 2013
Ufbagab fis 2013Ufbagab fis 2013
Ufbagab fis 2013
 
Ufbafisqui2013
Ufbafisqui2013Ufbafisqui2013
Ufbafisqui2013
 
Ufbagab qui 2013
Ufbagab qui 2013Ufbagab qui 2013
Ufbagab qui 2013
 
Questesdetecnologia ano2002
Questesdetecnologia ano2002Questesdetecnologia ano2002
Questesdetecnologia ano2002
 
Questesdematemtica ano2003
Questesdematemtica ano2003Questesdematemtica ano2003
Questesdematemtica ano2003
 
Questesdematemtica ano2002
Questesdematemtica ano2002Questesdematemtica ano2002
Questesdematemtica ano2002
 
Questesdefundamentos ano2003
Questesdefundamentos ano2003Questesdefundamentos ano2003
Questesdefundamentos ano2003
 
Questesdefundamentos ano2002
Questesdefundamentos ano2002Questesdefundamentos ano2002
Questesdefundamentos ano2002
 

03 linguagens regulares

  • 1. Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1
  • 2. Linguagens Formais e Autômatos P. Blauth Menezes 1 Introdução e Conceitos Básicos 2 Linguagens e Gramáticas 3 Linguagens Regulares 4 Propriedades das Linguagens Regulares 5 Autômato Finito com Saída 6 Linguagens Livres do Contexto 7 Propriedades e Reconhecimento das Linguagens Livres do Contexto 8 Linguagens Recursivamente Enumeráveis e Sensíveis ao Contexto 9 Hierarquia de Classes e Linguagens e Conclusões Linguagens Formais e Autômatos - P. Blauth Menezes 2
  • 3. 3 – Linguagens Regulares 3.1 Sistema de Estados Finitos 3.2 Composição Seqüencial, Concorrente e Não-Determinista 3.3 Autômato Finito 3.4 Autômato Finito Não-Determinístico 3.5 Autômato Finito com Movimentos Vazios 3.6 Expressão Regular 3.7 Gramática Regular Linguagens Formais e Autômatos - P. Blauth Menezes 3
  • 4. 3 – Linguagens Regulares Linguagens Formais e Autômatos - P. Blauth Menezes 4
  • 5. 3 Linguagens Regulares ◆ Linguagens Regulares ou Tipo 3 - formalismos • Autômato Finito ∗ formalismo operacional ou reconhecedor ∗ basicamente, um sistema de estados finitos • Expressão Regular ∗ formalismo denotacional ou gerador ∗ conjuntos (linguagens) básicos + concatenação e união • Gramática Regular ∗ formalismo axiomático ou gerador ∗ gramática com restrições da forma das regras de produção Linguagens Formais e Autômatos - P. Blauth Menezes 5
  • 6. 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 ◆ Fortes limitações de expressividade • exemplo: duplo balanceamento não é regular. • linguagens de programação em geral: não-regulares Linguagens Formais e Autômatos - P. Blauth Menezes 6
  • 7. Complexidade de algoritmos - autômatos finitos • classe de algoritmos mais eficientes (tempo de processamento) ∗ supondo determinada condição • qualquer autômato finito é igualmente eficiente • qualquer solução é ótima ∗ a menos de eventual redundância de estados • redundância de estados ∗ (não influi no tempo) ∗ pode ser facilmente eliminada: Autômato Finito Mínimo Linguagens Formais e Autômatos - P. Blauth Menezes 7
  • 8. Importantes propriedades - podem ser usadas para • construir novas linguagens regulares ∗ a partir de linguagens regulares conhecidas ∗ (definindo uma álgebra) • provar propriedades • construir algoritmos ◆ Se um problema tiver uma solução regular • considerar preferencialmente a qualquer outra não-regular ∗ propriedades da Classe ∗ eficiência e simplicidade dos algoritmos Linguagens Formais e Autômatos - P. Blauth Menezes 8
  • 9. 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 Linguagens Formais e Autômatos - P. Blauth Menezes 9
  • 10. Capítulos subseqüentes • minimização de autômatos finitos • propriedades da Classe • algumas importantes aplicações Linguagens Formais e Autômatos - P. Blauth Menezes 10
  • 11. 3 – Linguagens Regulares 3.1 Sistema de Estados Finitos 3.2 Composição Seqüencial, Concorrente e Não-Determinista 3.3 Autômato Finito 3.4 Autômato Finito Não-Determinístico 3.5 Autômato Finito com Movimentos Vazios 3.6 Expressão Regular 3.7 Gramática Regular Linguagens Formais e Autômatos - P. Blauth Menezes 11
  • 12. 3.1 Sistema de Estados Finitos ◆ Sistema de Estados Finitos • modelo matemático de sistema com entradas e saídas discretas • número finito e predefinido 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 Linguagens Formais e Autômatos - P. Blauth Menezes 12
  • 13. Motivacional • associados a diversos tipos de sistemas naturais e construídos Exp: Elevador Não memoriza as requisições anteriores • Estado: sumaria "andar corrente" e "direção de movimento" • Entrada: requisições pendentes Exp: Analisador Léxico, Processador de Texto • Estado: memoriza a estrutura do prefixo da palavra em análise • Entrada: texto Linguagens Formais e Autômatos - P. Blauth Menezes 13
  • 14. Restrição • nem todos os sistemas de estados finitos • são adequados para serem estudados por esta abordagem Exp: Cérebro humano • Neurônio: número finito de bits • Cérebro: cerca de 235 células ∗ abordagem pouco eficiente ∗ explosão de estados Linguagens Formais e Autômatos - P. Blauth Menezes 14
  • 15. Exp: Computador • processadores e memórias: sistema de estados finitos • estudo da computabilidade ∗ exige uma memória sem limite predefinido • Máquina de Turing ∗ mais adequado ao estudo da computabilidade • computabilidade e solucionabilidade de problemas ∗ apenas introduzido ∗ questões tratadas na Teoria da Computação Linguagens Formais e Autômatos - P. Blauth Menezes 15
  • 16. 3 – Linguagens Regulares 3.1 Sistema de Estados Finitos 3.2 Composição Seqüencial, Concorrente e Não-Determinista 3.3 Autômato Finito 3.4 Autômato Finito Não-Determinístico 3.5 Autômato Finito com Movimentos Vazios 3.6 Expressão Regular 3.7 Gramática Regular Linguagens Formais e Autômatos - P. Blauth Menezes 16
  • 17. 3.2 Composição Seqüencial, Concorrente e Não-Determinista ◆ Construção composicional de sistema • construído a partir de sistemas conhecidos ∗ e assim sucessivamente ∗ até chegar ao nível mais elementar (como uma ação atômica) ◆ Composição • Seqüencial • Concorrente • Não-Determinista Linguagens Formais e Autômatos - P. Blauth Menezes 17
  • 18. Seqüencial • execução da próxima componente • depende da terminação da componente anterior ◆ Concorrente • componentes independentes ∗ ordem em que são executadas não é importante • portanto, podem ser processadas ao mesmo tempo Linguagens Formais e Autômatos - P. Blauth Menezes 18
  • 19. Não-Determinista • próxima componente: escolha entre diversas alternativas • em oposição à determinista ∗ para as mesmas condições ∗ próxima componente é sempre a mesma • não-determinismo pode ser ∗ interno: sistema escolhe aleatoriamente ∗ externo: escolha externa ao sistema ◆ Sistemas reais • as três formas de composição são comuns Linguagens Formais e Autômatos - P. Blauth Menezes 19
  • 20. Exp: Banco Seqüencial • fila: próximo cliente depende do atendimento do anterior • pagamento de uma conta depende do fornecimento de um valor Concorrente • diversos caixas atendem independentemente diversos clientes • clientes nos caixas: ações independentemente dos clientes na fila Não-determinista • dois ou mais caixas disponíveis ao mesmo tempo ∗ próximo cliente pode escolher o caixa • caminhar de um indivíduo: perna esquerda ou direita Linguagens Formais e Autômatos - P. Blauth Menezes 20
  • 21. Linguagens Formais • seqüencial e não-determinimo: especialmente importantes ◆ Semântica do não-determinismo adotada • a usual para Linguagens Formais, Teoria da Computação... ∗ não-determinismo interno ∗ objetivo: determinar a capacidade de reconhecer linguagens e de solucionar problemas • difere da adotada no estudo dos Modelos para Concorrência ∗ exemplo: Sistemas Operacionais ∗ pode causar confusão com a semântica da concorrência Linguagens Formais e Autômatos - P. Blauth Menezes 21
  • 22. 3 – Linguagens Regulares 3.1 Sistema de Estados Finitos 3.2 Composição Seqüencial, Concorrente e Não-Determinista 3.3 Autômato Finito 3.4 Autômato Finito Não-Determinístico 3.5 Autômato Finito com Movimentos Vazios 3.6 Expressão Regular 3.7 Gramática Regular Linguagens Formais e Autômatos - P. Blauth Menezes 22
  • 23. 3.3 Autômato Finito ◆ Autômato Finito: sistema de estados finitos • número finito e predefinido de estados • modelo computacional comum em diversos estudos teórico-formais ∗ Linguagens Formais ∗ Compiladores ∗ Semântica Formal ∗ Modelos para Concorrência Linguagens Formais e Autômatos - P. Blauth Menezes 23
  • 24. Formalismo operacional/reconhecedor - pode ser • determinístico ∗ dependendo do estado corrente e do símbolo lido ∗ pode assumir um único estado • não-determinístico ∗ dependendo do estado corrente e do símbolo lido ∗ pode assumir um conjunto de estados alternativos • com movimentos vazios ∗ dependendo do estado corrente e sem ler qualquer símbolo ∗ pode assumir um conjunto de estados (portanto é não- determinístico) Linguagens Formais e Autômatos - P. Blauth Menezes 24
  • 25. Movimento vazio • pode ser visto como transições encapsuladas ∗ excetuando-se por uma eventual mudança de estado ∗ nada mais pode ser observado • análogo à encapsulação das linguagens orientadas a objetos ◆ Três tipos de autômatos: equivalentes • em termos de poder computacional Linguagens Formais e Autômatos - P. Blauth Menezes 25
  • 26. Autômato finito (determinístico): máquina constituída por • 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 Linguagens Formais e Autômatos - P. Blauth Menezes 26
  • 27. 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 Linguagens Formais e Autômatos - P. Blauth Menezes 27
  • 28. Unidade de controle • número finito e predefinido de estados ∗ origem do termo controle finito • 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 a a b c c b a a controle Linguagens Formais e Autômatos - P. Blauth Menezes 28
  • 29. Programa: função parcial • dependendo do estado corrente e do símbolo lido • determina o novo estado do autômato Linguagens Formais e Autômatos - P. Blauth Menezes 29
  • 30. Def: Autômato Finito (Determinístico) ou AFD M = (Σ, Q, δ, q0, F) • Σ é um alfabeto (de símbolos) de entrada • Q é um conjunto de estados possíveis do autômato (finito) • δ é uma (função) programa ou função de transição (função parcial) δ: Q × Σ → Q ∗ transição do autômato: δ(p, a) = q • q 0 é um elemento distinguido de Q: estado inicial • F é um subconjunto de Q: conjunto de estados finais Linguagens Formais e Autômatos - P. Blauth Menezes 30
  • 31. Autômato finito como um diagrama: δ(p, a) = q a p q estado anterior símbolo lido novo estado Linguagens Formais e Autômatos - P. Blauth Menezes 31
  • 32. Estados iniciais e finais q0 qf ◆ Transições paralelas: δ(q, a) = p e δ(q, b) = p a a,b p q p q b Linguagens Formais e Autômatos - P. Blauth Menezes 32
  • 33. Função programa como uma tabela de dupla entrada δ(p, a) = q δ a … p q … q … … Linguagens Formais e Autômatos - P. Blauth Menezes 33
  • 34. 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 Linguagens Formais e Autômatos - P. Blauth Menezes 34
  • 35. Exp: 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 }) δ1 a b q0 q1 q2 q1 qf q2 q2 q1 qf qf qf qf Linguagens Formais e Autômatos - P. Blauth Menezes 35
  • 36. a b q0 b q1 q2 a a b qf a,b • q 1: "símbolo anterior é a" • q 2: "símbolo anterior é b" • qual a informação memorizada por q0 e qf • após identificar aa ou bb ∗ q f (final): varre o sufixo da entrada - terminar o processamento Linguagens Formais e Autômatos - P. Blauth Menezes 36
  • 37. a b q0 b q1 q2 a a b qf a,b a b b a q0 q1 q2 qf qf Linguagens Formais e Autômatos - P. Blauth Menezes 37
  • 38. Obs: Autômato Finito Sempre Pára 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) Linguagens Formais e Autômatos - P. Blauth Menezes 38
  • 39. Obs: Autômato Finito × Grafo Finito Direto Qual a diferença entre um autômato finito e um grafo finito direto? Qualquer autômato finito pode ser visto como um grafo finito direto • podem existir arcos paralelos (mesmos nodos origem e destino) • dois ou mais arcos podem ser identificados com a mesma etiqueta (símbolo do alfabeto) • existe um nodo distinguido: estado inicial • existe um conjunto de nodos distinguidos: estados finais Usual considerar um autômato finito como grafo finito direto especial • herda resultados da Teoria dos Grafos Linguagens Formais e Autômatos - P. Blauth Menezes 39
  • 40. Definição formal do comportamento de um autômato finito • dar semântica à sintaxe • necessário estender a função programa • argumento: estado e palavra Linguagens Formais e Autômatos - P. Blauth Menezes 40
  • 41. Def: Função Programa Estendida, Computação M = (Σ, Q, δ, q0, F) autômato finito determinístico δ*: Q × Σ* → Q é δ: 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ímbolo 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 Linguagens Formais e Autômatos - P. Blauth Menezes 41
  • 42. Exp: Função Programa Estendida a b q0 b q1 q2 a a b qf a,b • δ*(q0, abaa) = função estendida sobre abaa • δ*(δ(q0, a), baa) = processa abaa • δ*(q1, baa) = função estendida sobre baa • δ*(δ(q1, b), aa) = processa baa • δ*(q2, aa) = função estendida sobre aa • δ*(δ(q2, a), a) = processa aa • δ*(q1, a) = função estendida sobre a • δ*(δ(q1, a), ε) = processa a • δ*(qf, ε) = qf função estendida sobre ε: fim da indução; ACEITA Linguagens Formais e Autômatos - P. Blauth Menezes 42
  • 43. Def: Linguagem Aceita, Linguagem Rejeitada M = (Σ, Q, δ, q0, F) autômato finito determinístico. Linguagem 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 } ◆ Supondo que Σ* é o conjunto universo • ACEITA(M) ∩ REJEITA(M) = ∅ • ACEITA(M) ∪ REJEITA(M) = Σ* • ~ACEITA(M) = REJEITA(M) • ~REJEITA(M) = ACEITA(M) Linguagens Formais e Autômatos - P. Blauth Menezes 43
  • 44. Cada autômato finito M sobre Σ • induz uma partição de Σ* em duas classes de equivalência • e se um dos dois conjuntos for vazio? Σ* ACEITA(M) REJEITA(M) Linguagens Formais e Autômatos - P. Blauth Menezes 44
  • 45. Diferentes autômatos finitos podem aceitar uma mesma linguagem Def: Autômatos Finitos Equivalentes M1 e M2 são Autômatos Finitos Equivalentes se e somente se ACEITA(M1) = ACEITA(M2) Def: Linguagem Regular, Linguagem Tipo 3 L é uma Linguagem Regular ou Linguagem Tipo 3 • existe pelo menos um autômato finito determinístico que aceita L Linguagens Formais e Autômatos - P. Blauth Menezes 45
  • 46. Exp: …Autômato Finito: Vazia, Todas as Palavras Linguagens sobre o alfabeto { a, b } L2 = ∅     e     L3 = Σ* M2 M3 q0 q0 a,b a,b Linguagens Formais e Autômatos - P. Blauth Menezes 46
  • 47. Exp: Autômato Finito: Vazia, Todas as Palavras L2 = ∅     e     L3 = Σ* δ2 a b                 δ3 a b q0 q0 q0 q0 q0 q0 • diferença entre δ2 e δ3? • o que, exatamente, diferencia M2 de M3? Linguagens Formais e Autômatos - P. Blauth Menezes 47
  • 48. Exp: 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 } b q0 q1 b a a a a b q2 q3 b Como seria para aceitar um número ímpar de cada símbolo? Linguagens Formais e Autômatos - P. Blauth Menezes 48
  • 49. Obs: Função Programa × Função Programa Estendida Objetivando simplificar a notação • δ e a sua correspondente extensão δ* • podem ser ambas denotadas por δ Obs: Computações × Caminhos de um Grafo • conjunto de arcos: computações possíveis • subconjunto de arcos ∗ com origem no estado inicial ∗ destino em algum estado final ∗ linguagem aceita Linguagens Formais e Autômatos - P. Blauth Menezes 49
  • 50. Obs: …Computações × Caminhos de um Grafo M caminhos M Computações(M) 1 ε 1 = a d d a { ε, a, b, c, d, ab, bc, abc} 2 5 2 ab 5 ε ε b b abc bc 3 3 ACEITA (M) c ε c = {ε , d, abc} 4 4 ε Linguagens Formais e Autômatos - P. Blauth Menezes 50
  • 51. 3 – Linguagens Regulares 3.1 Sistema de Estados Finitos 3.2 Composição Seqüencial, Concorrente e Não-Determinista 3.3 Autômato Finito 3.4 Autômato Finito Não-Determinístico 3.5 Autômato Finito com Movimentos Vazios 3.6 Expressão Regular 3.7 Gramática Regular Linguagens Formais e Autômatos - P. Blauth Menezes 51
  • 52. 3.4 Autômato Finito Não-Determinístico Linguagens Formais e Autômatos - P. Blauth Menezes 52
  • 53. Não-determinismo • importante generalização dos modelos de máquinas • fundamental no estudo ∗ Modelos para Concorrência ∗ Teoria da Computação ∗ Linguagens Formais, … ◆ Semântica de não-determinismo adotada • usual no estudo das Linguagens Formais • objetiva determinar a capacidade de ∗ reconhecer linguagens ∗ solucionar problemas • pode causar alguma confusão com semântica da concorrência Linguagens Formais e Autômatos - P. Blauth Menezes 53
  • 54. Nem sempre não-determinismo aumenta o poder • reconhecimento de linguagens de uma classe de autômatos ∗ qualquer autômato finito não-determinístico pode ser simulado por um autômato finito determinístico ◆ Não-determinismo no programa, é uma função parcial dependendo do estado corrente e do símbolo lido, determina um conjunto de 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 Linguagens Formais e Autômatos - P. Blauth Menezes 54
  • 55. Def: Autômato Finito Não-Determinístico (AFN) 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 } • q 0 é um elemento distinguido de Q: estado inicial • F é um subconjunto de Q: conjunto de estados finais Linguagens Formais e Autômatos - P. Blauth Menezes 55
  • 56. Autômato como diagrama δ(p, a) = { q1, q2, …, qn } estado anterior p a a a símbolo lido conjunto de q1 q2 qn novos estados Linguagens Formais e Autômatos - P. Blauth Menezes 56
  • 57. Computação de um autômato finito não- determinístico • 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 ◆ Argumentos: computação/função programa estendida • conjunto finito de estados e uma palavra Linguagens Formais e Autômatos - P. Blauth Menezes 57
  • 58. Def: Função Programa Estendida, Computação M = (Σ, Q, δ, q0, F) autômato finito não-determinístico δ*: 2Q × Σ* → 2Q indutivamente definida • δ*(P, ε) = P • δ*(P, aw) = δ*(∪q∈P δ(q, a), w) ◆ Transição estendida (a um conjunto de estados) δ*({ q1, q2,…, qn }, a) = δ(q1, a) ∪ δ(q2, a) ∪…∪ δ(qn, a) Linguagens Formais e Autômatos - P. Blauth Menezes 58
  • 59. Parada 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) Linguagens Formais e Autômatos - P. Blauth Menezes 59
  • 60. Def: Linguagem Aceita, Linguagem Rejeitada Seja M = (Σ, Q, δ, q0, F) um autômato finito não-determinístico Linguagem 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 } Linguagens Formais e Autômatos - P. Blauth Menezes 60
  • 61. Exp: Autômato Finito Não-Determinístico: aa ou bb como subpalavra L5 = { w  w possui aa ou bb como subpalavra } Autômato finito não-determinístico: M5 = ({ a, b }, { q0, q1, q2, qf }, δ5, q0, { qf }) q0 a,b a b q1 q2 a b qf a,b Linguagens Formais e Autômatos - P. Blauth Menezes 61
  • 62. q0 a,b a b q1 q2 a b qf a,b Linguagens Formais e Autômatos - P. Blauth Menezes 62
  • 63. q0 a,b a b q1 q2 a b qf a,b • 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 Linguagens Formais e Autômatos - P. Blauth Menezes 63
  • 64. q0 a,b a b q1 q2 a b qf a,b δ5 a b q 0 { q0,q1 } { q0,q2 } q 1 { qf } - q2 - { qf } qf { qf } { qf } Linguagens Formais e Autômatos - P. Blauth Menezes 64
  • 65. Exp: AFN: 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 a a q0 q1 q2 qf a,b Linguagens Formais e Autômatos - P. Blauth Menezes 65
  • 66. 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 AFN Classe dos Autômatos Finitos Determinísticos é equivalente à Classe dos Autômatos Finitos Não-Determinísticos Linguagens Formais e Autômatos - P. Blauth Menezes 66
  • 67. Prova: (por indução) Mostrar que • a partir de um AFN M qualquer • construir um AFD MD que realiza as mesmas computações • MD simula M AFN → AFD • estados de MD simulam combinações de estados alternativos de M • prova da simulação: por indução AFD → AFN • não necessita ser mostrado: decorre trivialmente das definições Linguagens Formais e Autômatos - P. Blauth Menezes 67
  • 68. M = (Σ, Q, δ, q0, F) um AFN qualquer. AFD construído MD = (Σ, QD, δD, 〈q0〉, FD) • QD - todas as combinações, sem repetições, de estados de Q ∗ notação 〈q1q 2…qn〉 ∗ ordem não distingue combinações: 〈quq v 〉 = 〈qv q u〉 ∗ imagem de todos os estados alternativos de M • δD: QD × Σ → QD δD(〈q1…qn〉, a) = 〈p1…pm〉 sse δ*({ q1, …, qn }, a) = { p1, …, pm } • 〈q0〉 - estado inicial • FD - conjunto de estados 〈q1q 2…qn〉 pertencentes a QD ∗ alguma componente qi pertence a F, para i em { 1, 2, …, n } Linguagens Formais e Autômatos - P. Blauth Menezes 68
  • 69. AFD MD simula as computações do AFN M ??? • indução no tamanho da palavra • mostrar que δD*(〈q0〉, w) = 〈q1…qu〉 sse δ*({ q0 }, w) = { q1, …, qu } Base de indução.  w  = 0. Portanto w = ε: δD*(〈q0〉, ε) = 〈q0〉 se e somente se δ*({ q0 }, ε) = { q0 } • verdadeiro, por definição de computação Linguagens Formais e Autômatos - P. Blauth Menezes 69
  • 70. Hipótese de indução.  w  = n e n ≥ 1. Suponha que: δD*(〈q0〉, w) = 〈q1…qu〉 sse δ*({ q0 }, w) = { q1, …, qu } Passo de Indução.  wa  = n + 1 e n ≥ 1 δD*(〈q0〉, wa) = 〈p1…pv 〉 sse δ*({ q0 }, wa) = { p1, …, pv } • equivale (hipótese de indução) δD(〈q1…qu〉, a) = 〈p1…pv 〉 sse δ*({ q1, …, qu }, a) = { p1, …, pv } • verdadeiro, por definição de δD Logo, MD simula M para qualquer entrada w pertencente a Σ* Linguagens Formais e Autômatos - P. Blauth Menezes 70
  • 71. Portanto, linguagem aceita por AFN • é Linguagem Regular ou Tipo 3 Obs: Determinismo × Não-Determinismo Muitas vezes é mais fácil desenvolver um AFN do que um AFD • exemplo { w  o quinto símbolo da direita para a esquerda de w é a } • solução determinista: não é trivial; número grande de estados • solução não-determinista: bem simples; poucos estados Alternativa para construir um AFD • desenvolver inicialmente AFN • aplicar o algoritmo apresentado na prova do teorema Linguagens Formais e Autômatos - P. Blauth Menezes 71
  • 72. Exp: AFN → AFD M6 = ({ a, b }, { q0, q1, q2, qf }, δ6, q0, { qf }) a a a q0 q1 q2 qf a,b M6D = ({ a, b }, QD, δ6D, 〈q0〉, FD) • QD = { 〈q0〉, 〈q1〉, 〈q2〉, 〈qf〉, 〈q0q 1〉, 〈q0q 2〉, …, 〈q0q 1q 2q f〉 } • FD = { 〈qf〉, 〈q0q f〉, 〈q1q f〉, …, 〈q0q 1q 2q f〉 } Linguagens Formais e Autômatos - P. Blauth Menezes 72
  • 73. AFN a a a q0 q1 q2 qf a,b AFD δ6D a b 〈q0〉 〈q0q 1〉 〈q0〉 〈q0q 1〉 〈q0q 1q 2〉 〈q0〉 〈q0q 1q 2〉 〈q0q 1q 2q f〉 〈q0〉 〈q0q 1q 2q f〉 〈q0q 1q 2q f〉 〈q0〉 Linguagens Formais e Autômatos - P. Blauth Menezes 73
  • 74. δ6D a b p 0 = 〈q0〉 〈q0q 1〉 〈q0〉 p 1 = 〈q0q 1〉 〈q0q 1q 2〉 〈q0〉 p 2 = 〈q0q 1q 2〉 〈q0q 1q 2q f〉 〈q0〉 p f = 〈q0q 1q 2q f〉 〈q0q 1q 2q f〉 〈q0〉 b b b a a a p0 p1 p2 pf b a Linguagens Formais e Autômatos - P. Blauth Menezes 74
  • 75. 3 – Linguagens Regulares 3.1 Sistema de Estados Finitos 3.2 Composição Seqüencial, Concorrente e Não-Determinista 3.3 Autômato Finito 3.4 Autômato Finito Não-Determinístico 3.5 Autômato Finito com Movimentos Vazios 3.6 Expressão Regular 3.7 Gramática Regular Linguagens Formais e Autômatos - P. Blauth Menezes 75
  • 76. 3.5 Autômato Finito com Movimentos Vazios ◆ 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 Linguagens Formais e Autômatos - P. Blauth Menezes 76
  • 77. 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 aAFNε pode ser simulado por um AFD Linguagens Formais e Autômatos - P. Blauth Menezes 77
  • 78. Def: Autômato Finito com Movimentos Vazios - AFNε M = (Σ, Q, δ, q0, F) • Σ - alfabeto (de símbolos) de entrada • Q - conjunto de estados possíveis • δ - (função) programa ou função de transição (função parcial) δ: Q × (Σ ∪ { ε }) → 2Q ∗ movimento vazio ou transição vazia δ(p, ε) = { q1, q2, …, qn } • q 0 - elemento distinguido de Q: estado inicial • F - subconjunto de Q: conjunto de estados finais Linguagens Formais e Autômatos - P. Blauth Menezes 78
  • 79. Autômato como diagrama δ(q, ε) = { p0 } δ(q, a1) = { p1 } … δ(q, an) = { pn } q ε an a1 p0 p1 pn Linguagens Formais e Autômatos - P. Blauth Menezes 79
  • 80. Computação de um AFNε • análoga à de um AFN ◆ Processamento de uma transição vazia • não-determinístico • assume simultaneamente os estados destino e origem • origem de um movimento vazio: caminho alternativo Linguagens Formais e Autômatos - P. Blauth Menezes 80
  • 81. Exp: AFNε: a’s antecedem b’s M7 = ({ a, b }, { q0, qf }, δ7, q0, { qf }) δ7 a b ε q 0 { q0 } - { qf } qf - { qf } ε q0 qf a b Linguagens Formais e Autômatos - P. Blauth Menezes 81
  • 82. Antes de definir computação • computação de transições vazias a partir de ∗ um estado ∗ um conjunto finito de estados Linguagens Formais e Autômatos - P. Blauth Menezes 82
  • 83. Def: Computação Vazia M = (Σ, Q, δ, q0, F) Computação Vazia ou Função Fecho Vazio (um estado) δε: Q → 2Q • indutivamente definida ∗ δε(q) = { q }, se δ(q, ε) é indefinida ∗ δε(q) = { q } ∪ δ(q, ε) ∪ (∪p∈δ(q,ε) δε(p)), caso contrário Computação Vazia ou Função Fecho Vazio (conjunto de estados) δε*: 2Q → 2Q • tal que δε*(P) = ∪q∈P δε(q) Linguagens Formais e Autômatos - P. Blauth Menezes 83
  • 84. Por simplicidade, δε e δε* • ambas denotadas por δε Exp: Computação Vazia ε q0 qf a b • δε(q0) = { q0, qf } • δε(qf) = { qf } • δε({ q0, qf }) = { q0, qf } Linguagens Formais e Autômatos - P. Blauth Menezes 84
  • 85. Computação de um AFNε para uma entrada w • sucessiva aplicação da função programa • para cada símbolo de w (da esquerda para a direita) • cada passo de aplicação intercalado com computações vazias • até ocorrer uma condição de parada ◆ Assim, antes de processar a próxima transição • determinar ∗ todos os demais estados atingíveis ∗ exclusivamente por movimentos vazios Linguagens Formais e Autômatos - P. Blauth Menezes 85
  • 86. Def: Função Programa Estendida, Computação M = (Σ, Q, δ, q0, F) AFNε δ*: 2Q × Σ* → 2Q indutivamente definida • δ*(P, ε) = δε(P) • δ*(P, wa) = δε(R) onde R = { r  r ∈ δ(s, a) e s ∈ δ*(P, w) } ◆ Parada do processamento, Ling. Aceita/Rejeitada • análoga à do autômato finito não-determinístico Linguagens Formais e Autômatos - P. Blauth Menezes 86
  • 87. Exp: Computação Vazia, Computação 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 }) a q1 ε ε b b q0 q2 q3 qf ε c a,b,c c c q4 q5 q6 Linguagens Formais e Autômatos - P. Blauth Menezes 87
  • 88. a q1 ε ε b b q0 q2 q3 qf ε c a,b,c c c q4 q5 q6 δ*({ q0 }, abb) = δε({ r  r ∈ δ(s, b) e s ∈ δ*({ q0 }, ab) }) (1) δ*({ q0 }, ab) = δε({ r  r ∈ δ(s, b) e s ∈ δ*({ q0 }, a) }) (2) δ*({ q0 }, a) = δε({ r  r ∈ δ(s, a) e s ∈ δ*({ q0 }, ε) }) (3) Como: δ*({ q0 }, ε) } = δε({ q0 }) = { q0, q1, q2, q4 } considerado em (3) δ*({ q0 }, a) = { q0, q1, q2, q4, qf } considerado em (2) δ*({ q0 }, ab) = { q0, q1, q2, q3, q4 } considerado em (1) Resulta na computação: δ*({ q0 }, abb) = { q0, q1, q2, q3, q4, qf } Linguagens Formais e Autômatos - P. Blauth Menezes 88
  • 89. Teorema: Equivalência entre AFN e AFNε Classe dos Autômatos Finitos com Movimentos Vazios é equivalente à Classe dos Autômatos Finitos Não-Determinísticos Prova: (por indução) Mostrar que • a partir de um AFNε M qualquer • construir um AFN MN que realiza as mesmas computações • MN simula M AFNε → AFN • construção de uma função programa sem movimentos vazios • conjunto de estados destino de cada transição não-vazia ∗ ampliado com os demais estados possíveis de serem atingidos exclusivamente por transições vazias Linguagens Formais e Autômatos - P. Blauth Menezes 89
  • 90. M = (Σ, Q, δ, q0, F) um AFNε qualquer. AFN construído MN = (Σ, Q, δN, q0, FN) • δN: Q × Σ → 2Q é tal que δN(q, a) = δ*({ q }, a) • FN é o conjunto de todos os estados q pertencentes a Q δε(q) ∩ F ≠ ∅ ∗ estados que atingem estados finais via computações vazias Demonstração que, de fato, o AFN MN simula o AFNε M • indução no tamanho da palavra • exercício Linguagens Formais e Autômatos - P. Blauth Menezes 90
  • 91. Portanto, linguagem aceita por AFNε • é Linguagem Regular ou Tipo 3 Linguagens Formais e Autômatos - P. Blauth Menezes 91
  • 92. Exp: Construção de um AFN a partir de um AFNε AFNε - M9 = ({ a, b }, { q0, q1, q2 }, δ9, q0, { q2 }) δ9 a b ε q 0 { q0 } - { q1 } q1 -{ q1 } { q2 } q 2 { q2 } - - ε ε q0 q1 q2 a b a Linguagens Formais e Autômatos - P. Blauth Menezes 92
  • 93. ε ε q0 q1 q2 a b a M9N = ({ a, b }, { q0, q1, q2 }, δ9N q0, FN) a,b a,b a,b q0 q1 q2 a b a Linguagens Formais e Autômatos - P. Blauth Menezes 93
  • 94. ε ε q0 q1 q2 a b a FN = { q0, q1, q2 } • δε(q0) = { q0, q1, q2 } • δε(q1) = { q1, q2 } • δε(q2) = { q2 } Linguagens Formais e Autômatos - P. Blauth Menezes 94
  • 95. ε ε q0 q1 q2 a b a Na construção de δ9N • δ9*({ q0 }, ε) = { q0, q1, q2 } • δ9*({ q1 }, ε) = { q1, q2 } • δ9*({ q2 }, ε) = { q2 } Linguagens Formais e Autômatos - P. Blauth Menezes 95
  • 96. ε ε q0 q1 q2 a b a Assim, δ9N é tal que δ9N(q0, a) = δ9*({ q0 }, a) = δε({ r  r ∈ δ(s, a) e s ∈ δ*({ q0 }, ε) }) = { q0, q1, q2 } δ9N(q0, b) = δ9*({ q0 }, b) = δε({ r  r ∈ δ(s, b) e s ∈ δ*({ q0 }, ε) }) = { q1, q2 } δ9N(q1, a) = δ9*({ q1 }, a) = δε({ r  r ∈ δ(s, a) e s ∈ δ*({ q1 }, ε) }) = { q2 } Linguagens Formais e Autômatos - P. Blauth Menezes 96
  • 97. ε ε q0 q1 q2 a b a • δ9N(q1, b) = δ9*({ q1 }, b) = δε({ r  r ∈ δ(s, b) e s ∈ δ*({ q1 }, ε) }) = { q1, q2 } • δ9N(q2, a) = δ9*({ q2 }, a) = δε({ r  r ∈ δ(s, a) e s ∈ δ*({ q2 }, ε) }) = { q2 } • δ9N(q2, b) = δ9*({ q2 }, b) = δε({ r  r ∈ δ(s, b) e s ∈ δ*({ q2 }, ε) }) é indefinida Linguagens Formais e Autômatos - P. Blauth Menezes 97
  • 98. 3 – Linguagens Regulares 3.1 Sistema de Estados Finitos 3.2 Composição Seqüencial, Concorrente e Não-Determinista 3.3 Autômato Finito 3.4 Autômato Finito Não-Determinístico 3.5 Autômato Finito com Movimentos Vazios 3.6 Expressão Regular 3.7 Gramática Regular Linguagens Formais e Autômatos - P. Blauth Menezes 98
  • 99. 3.6 Expressão Regular ◆ Toda linguagem regular pode ser descrita por uma • Expressão Regular ◆ Formalismo denotacional (gerador) ◆ Definida a partir de • conjuntos (linguagens) básicos • concatenação e união ◆ Adequadas para a comunicação • humano × humano • humano × máquina Linguagens Formais e Autômatos - P. Blauth Menezes 99
  • 100. Def: Expressão Regular (ER) Base de Indução • ∅ é ER ∗ denota a linguagem vazia: ∅ • ε é ER ∗ denota a linguagem { ε } • x é ER (para qualquer x ∈ Σ) ∗ denota a linguagem { x } Linguagens Formais e Autômatos - P. Blauth Menezes 100
  • 101. Def: …Expressão Regular (ER) Passo de Indução: se r e s são ER e denotam as ling. R e S, então • União. (r + s) é ER ∗ denota a linguagem R ∪ S • Concatenação. (rs) é ER ∗ denota a linguagem R S = { uv  u ∈ R e v ∈ S } • Concatenação Sucessiva. (r*) é ER ∗ denota a linguagem R* Linguagens Formais e Autômatos - P. Blauth Menezes 101
  • 102. Def: Linguagem Gerada por uma ER Se r é ER, a correspondente linguagem denotada é dita • Linguagem Gerada por r L(r) ou GERA(r) ◆ Omissão de parênteses em uma ER é usual • concatenação sucessiva: precedência sobre concatenação e união • concatenação: precedência sobre união Linguagens Formais e Autômatos - P. Blauth Menezes 102
  • 103. Exp: Expressão Regular ER Linguagem Gerada ??? aa ba* (a + b)* (a + b)*aa(a + b)* a*ba*ba* (a + b)*(aa + bb) (a + ε)(b + ba)* Linguagens Formais e Autômatos - P. Blauth Menezes 103
  • 104. Exp: …Expressão Regular ER Linguagem Gerada aa somente a palavra aa ba* todas as palavras que iniciam por b, seguido por zero ou mais a (a + b)* todas as palavras sobre { a, b } (a + b)*aa(a + b)* todas as palavras contendo aa como subpalavra a*ba*ba* todas as palavras contendo exatamente dois b (a + b)*(aa + bb) todas as palavras que terminam com aa ou bb (a + ε)(b + ba)* todas as palavras que não possuem dois a consecutivos Linguagens Formais e Autômatos - P. Blauth Menezes 104
  • 105. Exp: …Expressão Regular Linguagem gerada pela ER (a + b)*(aa + bb) • a e b denotam { a } e { b }, respectivamente • a + b denota { a } ∪ { b } = { a, b } • (a + b)* denota { a, b }* • aa e bb denotam { a } { a } = { aa } e { b } { b } = { bb }, respectivamente • (aa + bb) denota { aa } ∪ { bb } = { aa, bb } • (a + b)*(aa + bb) denota { a, b }* { aa, bb } Portanto, GERA( (a + b)*(aa + bb) ) é { aa, bb, aaa, abb, baa, bbb, aaaa, aabb, abaa, abbb, baaa, babb, bbaa, bbbb,… } Linguagens Formais e Autômatos - P. Blauth Menezes 105
  • 106. Teorema: Expressão Regular → Linguagem Regular Se r é ER, então GERA(r) é linguagem regular Prova: (por indução) Uma linguagem é regular sse é possível construir um • AFD, AFN ou AFNε que reconheça a linguagem É necessário mostrar que • dada uma ER r qualquer • é possível construir um autômato finito M tal que ACEITA(M) = GERA(r) Demonstração: indução no número de operadores Linguagens Formais e Autômatos - P. Blauth Menezes 106
  • 107. Base de indução. r ER com zero operadores • r=∅ ∗ Autômato??? • r=ε ∗ Autômato??? • r = x (x ∈ Σ) ∗ Autômato??? Linguagens Formais e Autômatos - P. Blauth Menezes 107
  • 108. Base de indução. r ER com zero operadores • r = ∅. Autômato: M1 = (∅, { q0 }, δ1, q0, ∅) q0 • r = ε. Autômato: M2 = (∅, { qf }, δ2, qf, { qf }) qf • r = x (x ∈ Σ). Autômato: M3 = ({ x }, { q0, qf }, δ3, q0, { qf }) x q0 qf Linguagens Formais e Autômatos - P. Blauth Menezes 108
  • 109. Hipótese de Indução. r ER com até n > 0 operadores • suponha que é possível definir um AF que aceita GERA(r) Passo de Indução. r ER com n + 1 operadores • r pode ser representada por (r1 e r2 possuem conjuntamente no máximo n operadores) ∗ r = r1 + r2 ∗ r = r1r2 ∗ r = r1* • por hipótese de indução, existem M1 = (Σ1, Q1, δ1, q01, { qf1 }) e M2 = (Σ2, Q2, δ2, q02, { qf2 }) ACEITA(M1) = GERA(r1) e ACEITA(M2) = GERA(r2) Linguagens Formais e Autômatos - P. Blauth Menezes 109
  • 110. r = r1 + r2 • Autômato??? r = r1r2 • Autômato??? r = r1* • Autômato??? Linguagens Formais e Autômatos - P. Blauth Menezes 110
  • 111. • sem perda de generalidade: ∗ M1 e M2 possuem exatamente um estado final (exercícios) ∗ estados dos autômatos: conjunto disjuntos (se não forem?) r = r1 + r2. Autômato M = (Σ1 ∪ Σ2, Q1 ∪ Q2 ∪ { q0, qf }, δ, q0, { qf }) ε M1 ε q01 qf1 q0 qf ε M2 ε q02 qf2 Linguagens Formais e Autômatos - P. Blauth Menezes 111
  • 112. r = r1r2. Autômato M = (Σ1 ∪ Σ2, Q1 ∪ Q2, δ, q01, { qf2 }) M1 ε M2 q01 qf1 q02 qf2 r = r1*. Autômato (suponha q0 ∉ Q1, qf ∉ Q1) • M = (Σ1, Q1 ∪ { q0, qf }, δ, q0, { qf }) ε ε M1 ε q0 q01 qf1 qf ε Linguagens Formais e Autômatos - P. Blauth Menezes 112
  • 113. Exercício: no caso r = r1 + r2 • não introduzir os estados q0 e qf • identificar ("unificar") os estados iniciais/finais de M1/M2 ??? ε M1 ε q01 qf1 q0 qf ε M2 ε q02 qf2 Linguagens Formais e Autômatos - P. Blauth Menezes 113
  • 114. Exercício: no caso r = r1 * • não introduzir o estado qf • manter qf1 como o estado final • transição vazia de q0 para qf1 ??? ε ε M1 ε q0 q01 qf1 qf ε Linguagens Formais e Autômatos - P. Blauth Menezes 114
  • 115. Exp: AFNε a partir de a*(aa + bb) ER AFNε a a b b a* ε ε a ε ε aa a ε a Linguagens Formais e Autômatos - P. Blauth Menezes 115
  • 116. ER AFNε bb b ε b (aa + bb) a ε a ε ε ε ε b ε b Linguagens Formais e Autômatos - P. Blauth Menezes 116
  • 117. • Autômato resultante: a*(aa + bb) a ε a ε ε ε ε a ε ε ε ε ε b ε b Linguagens Formais e Autômatos - P. Blauth Menezes 117
  • 118. Teorema: Linguagem Regular → Expressão Regular Se L é linguagem regular, então existe uma ER r tal que GERA(r) = L O teorema não será provado Linguagens Formais e Autômatos - P. Blauth Menezes 118
  • 119. 3 – Linguagens Regulares 3.1 Sistema de Estados Finitos 3.2 Composição Seqüencial, Concorrente e Não-Determinista 3.3 Autômato Finito 3.4 Autômato Finito Não-Determinístico 3.5 Autômato Finito com Movimentos Vazios 3.6 Expressão Regular 3.7 Gramática Regular Linguagens Formais e Autômatos - P. Blauth Menezes 119
  • 120. 3.7 Gramática Regular ◆ Formalismo Gramáticas • permite definir tanto linguagens regulares como não-regulares ◆ Gramática Regular • restrições nas regras de produção • existe mais de uma forma de restringir as regras de produção ∗ Gramáticas Lineares Linguagens Formais e Autômatos - P. Blauth Menezes 120
  • 121. Def: Gramáticas Lineares G = (V, T, P, S) Gramática Linear à Direita (GLD) A → wB ou A→w Gramática Linear à Esquerda (GLE) A → Bw ou A→w Gramática Linear Unitária à Direita (GLUD) • como na gramática linear à direita. Adicionalmente w≤1 Gramática Linear Unitária à Esquerda (GLUE) • como na gramática linear à esquerda. Adicionalmente w≤1 Linguagens Formais e Autômatos - P. Blauth Menezes 121
  • 122. Lado direito de uma produção • no máximo uma variável ∗ sempre antecede (linear à esquerda) ∗ ou sucede (linear à direita) ∗ qualquer subpalavra (eventualmente vazia) de terminais ◆ Exercício • gramática simultaneamente nas quatro formas lineares? Linguagens Formais e Autômatos - P. Blauth Menezes 122
  • 123. Teorema: Equivalência das Gramáticas Lineares Seja L uma linguagem. Então: • L é gerada por uma GLD sse • L é gerada por uma GLE sse • L é gerada por uma GLUD sse • L é gerada por uma GLUE ◆ Diversas formas das gramáticas lineares • formalismos equivalentes • demonstração do teorema: exercício Def: Gramática Regular (GR) G é uma gramática linear Linguagens Formais e Autômatos - P. Blauth Menezes 123
  • 124. Def: Linguagem Gerada G = (V, T, P, S) gramática L(G) ou GERA(G) é tal que L(G) = { w ∈ T*  S ⇒+ w } Exp: Gramática Regular: a(ba)* ??? Linguagens Formais e Autômatos - P. Blauth Menezes 124
  • 125. Exp: Gramática Regular: a(ba)* Linear à Direita. G = ({ S, A }, { a, b }, P, S) • S → aA • A → baA  ε Linear à Esquerda. G = ({ S }, { a, b }, P, S) • S → Sba  a Linear Unitária à Direita. G = ({ S, A, B }, { a, b }, P, S) • S → aA • A → bB  ε • B → aA Linear Unitária à Esquerda. G = ({ S, A }, { a, b }, P, S) • S → Aa  a • A → Sb Linguagens Formais e Autômatos - P. Blauth Menezes 125
  • 126. Exp: Gramática Regular: (a + b)*(aa + bb) Linear à Direita. G = ({ S, A }, { a, b }, P, S), e P é tal que • S → aS  bS  A • A → aa  bb Linear à Esquerda. G = ({ S, A }, { a, b }, P, S), e P é tal que • S → Aaa  Abb • A → Aa  Ab  ε Linguagens Formais e Autômatos - P. Blauth Menezes 126
  • 127. Obs: Gramática Linear à Esquerda e Linear à Direita Suponha  w  ≥ 1 Produções simultaneamente do tipo • A → wB (direita) e • A → Bw (esquerda) correspondente linguagem gerada • poderá não ser regular • não é uma gramática regular É possível desenvolver uma gramática, com produções lineares à direita e à esquerda, que gera (exercício) { anbn  n ∈ N } Linguagens Formais e Autômatos - P. Blauth Menezes 127
  • 128. Teorema: Gramática Regular → Linguagem Regular Se L é gerada por uma gramática regular, então L é linguagem regular Prova: (por indução) Mostrar que • dado uma GLUD G qualquer • é possível construir um AFNε M tq ACEITA(M) = GERA(G) M simula as derivações de G • demonstração de que ACEITA(M) = GERA(r) • indução no número de derivações Linguagens Formais e Autômatos - P. Blauth Menezes 128
  • 129. Suponha G = (V, T, P, S) uma GLUD. Seja o AFNε M = (Σ, Q, δ, q0, F) • Σ=T • Q = V ∪ { qf } (suponha qf ∉ V) • F = { qf } • q0 = S Tipo da Produção Transição Gerada A→ε δ(A, ε) = qf A→a δ(A, a) = qf A→B δ(A, ε) = B A → aB δ(A, a) = B Linguagens Formais e Autômatos - P. Blauth Menezes 129
  • 130. M simula as derivações de G ACEITA(M) = GERA(G) Base de indução. S ⇒1 α. Quatro casos • α=ε existe S → ε Logo, δ(S, ε) = qf • α=a existe S → a Logo, δ(S, a) = qf • α=A existe S → A Logo, δ(S, ε) = A • α = aA existe S → aA Logo, δ(S, a) = A Hipótese de indução. S ⇒n α, n > 1. Dois casos • α=w então δ*(S, w) = qf (1) • α = wA então δ*(S, w) = A (2) Passo de Indução. S ⇒n+1 α. Então (2) é a única hipótese que importa S ⇒n wA ⇒1 α Linguagens Formais e Autômatos - P. Blauth Menezes 130
  • 131. Quatro casos: • α = wε = w. Existe A → ε. Logo δ*(S, wε) = δ(δ*(S, w), ε) = δ(A, ε) = qf • α = wb. Existe A → b. Logo δ*(S, wb) = δ(δ*(S, w), b) = δ(A, b) = qf • α = wB. Existe A → B. Logo δ*(S, wε) = δ(δ*(S, w), ε) = δ(A, ε) = B • α = wbB. Existe A → bB. Logo δ*(S, wb) = δ(δ*(S, w), b) = δ(A, b) = B Linguagens Formais e Autômatos - P. Blauth Menezes 131
  • 132. Exp: Construção de um AFNε a partir de uma GR G = ({ S, A, B }, { a, b }, P, S) • S → aA • A → bB  ε • B → aA M = ({ a, b }, { S, A, B, qf }, δ, S, { qf }) a ε S A qf b a B Linguagens Formais e Autômatos - P. Blauth Menezes 132
  • 133. Produção Transição S → aA δ(S, a) = A A → bB δ(A, b) = B A→ε δ(A, ε) = qf B → aA δ(B, a) = A a ε S A qf b a B Linguagens Formais e Autômatos - P. Blauth Menezes 133
  • 134. Teorema: Linguagem Regular → Gramática Regular Se L é linguagem regular, então existe G, gramática regular que gera L Prova: (por indução) L é linguagem regular • existe um AFD M = (Σ, Q, δ, q0, F) tal que ACEITA(M) = L Construição de uma GLUD G GERA(G) = ACEITA(M) • derivação simula a função programa estendida Linguagens Formais e Autômatos - P. Blauth Menezes 134
  • 135. Suponha um AFD M = (Σ, Q, δ, q0, F) tal que ACEITA(M) = L Seja a gramática regular G = (V, T, P, S) • V=Q∪{S} (suponha S ∉ Q) • T=Σ • suponha qi, qk ∈ Q, qf ∈ F e a ∈ Σ Transição Produção - S → q0 - qf → ε δ(qi, a) = qk q i → aqk Linguagens Formais e Autômatos - P. Blauth Menezes 135
  • 136. GERA(G) = ACEITA(M)? Indução no tamanho da palavra (w ∈ Σ*) Base de Indução.  w  = 0 • por definição, S → q0 é produção • se ε ∈ ACEITA(M), então ∗ q 0 é estado final ∗ q 0 → ε é produção S ⇒ q0 ⇒ ε Hipótese de Indução.  w  = n (n ≥ 1) e δ*(q0, w) = q. Dois casos • q não é final. Suponha S ⇒n wq (única hipótese que importa) • q é final. Suponha S ⇒n wq ⇒ w Linguagens Formais e Autômatos - P. Blauth Menezes 136
  • 137. Passo de Indução.  wa  = n + 1 e δ*(q0, wa) = p. Então δ(δ*(q0, w), a) = δ(q, a) = p • p não é final ∗ S ⇒n wq ⇒1 wap • p é final ∗ S ⇒n wq ⇒1 wap ⇒1 wa Linguagens Formais e Autômatos - P. Blauth Menezes 137
  • 138. Exp: Construção de uma GR a partir de um AFD M = ({ a, b, c }, { q0, q1, q2 }, δ, q0, { q0, q1, q2 }) b c q0 q1 q2 a b c G = ({ q0, q1, q2, S }, { a, b, c }, P, S) Linguagens Formais e Autômatos - P. Blauth Menezes 138
  • 139. Transição Produção - S → q0 - q0 → ε - q1 → ε - q2 → ε δ(q0, a) = q0 q 0 → aq0 δ(q0, b) = q1 q 0 → bq1 δ(q1, b) = q1 q 1 → bq1 δ(q1, c) = q2 q 1 → cq2 δ(q2, c) = q2 q 2 → cq2 b c q0 q1 q2 a b c Linguagens Formais e Autômatos - P. Blauth Menezes 139
  • 140. Linguagens Formais e Autômatos P. Blauth Menezes 1 Introdução e Conceitos Básicos 2 Linguagens e Gramáticas 3 Linguagens Regulares 4 Propriedades das Linguagens Regulares 5 Autômato Finito com Saída 6 Linguagens Livres do Contexto 7 Propriedades e Reconhecimento das Linguagens Livres do Contexto 8 Linguagens Recursivamente Enumeráveis e Sensíveis ao Contexto 9 Hierarquia de Classes e Linguagens e Conclusões Linguagens Formais e Autômatos - P. Blauth Menezes 140