1




Disciplina de Linguagens Formais

    Prof. Carlos A. P. Campani

        2 de maio de 2006
2




Copyright c 2005 Carlos A. P. Campani.
´
E garantida a permiss˜o para copiar, distribuir e/ou
                       a
modificar este documento sob os termos da Licen¸a de
                                                  c
Documenta¸ao Livre GNU (GNU Free Documentation
            c˜
License), Vers˜o 1.2 ou qualquer vers˜o posterior
               a                     a
publicada pela Free Software Foundation; sem Se¸oes
                                                  c˜
Invariantes, Textos de Capa Frontal, e sem Textos de
Quarta Capa. Uma c´pia da licen¸a ´ inclu´ na se¸ao
                      o           c e      ıda       c˜
intitulada “GNU Free Documentation License”.
veja: http://www.ic.unicamp.br/~norton/fdl.html.
3




Objetivos
 • Formalizar o conceito de linguagem;
 • Apresentar uma classifica¸ao de linguagens baseada
                           c˜
   nesta formaliza¸ao;
                  c˜
 • Fornecer ferramentas para implementar compiladores;
 • Relacionar a hierarquia de linguagens com o conceito
   de computabilidade.
4




S´ mula da Disciplina
 u
1. Introdu¸ao ` Teoria de Linguagens Formais;
          c˜ a
   • Alfabetos, Senten¸as e Linguagens;
                      c
   • Gram´ticas e Reconhecedores;
         a
   • Tipos de Gram´ticas/Linguagens (Hierarquia de
                  a
     Chomsky);
5




2. Gram´ticas Regulares e Autˆmatos Finitos;
       a                     o
   • Defini¸ao de Gram´tica Regular (GR);
          c˜         a
   • Defini¸ao de Autˆmato Finito;
          c˜        o
   • Autˆmato Finito N˜o-Determin´
        o             a          ıstico;
   • Rela¸ao entre Autˆmato Finito e GR;
         c˜           o
   • Minimiza¸ao de Autˆmato Finito;
             c˜        o
   • Express˜es Regulares;
            o
   • Bombeamento para Linguagens Regulares;
   • M´quinas de Moore e Mealy;
      a
6


3. Gram´ticas Livres de Contexto e Autˆmatos de
         a                            o
   Pilha;
   • Defini¸ao de GLC;
          c˜
     ´
   • Arvores de Deriva¸ao e Ambig¨idade;
                      c˜         u
   • Transforma¸oes em GLC: Elimina¸˜o de S´
                 c˜                 ca      ımbolos
     In´teis; Transforma¸ao em uma GLC ε-Livre;
       u                c˜
     Remo¸ao de Produ¸oes Simples; Fatora¸˜o;
           c˜          c˜                ca
     Elimina¸ao de Recurs˜o ` Esquerda;
             c˜           a a
   • Formas Canˆnicas: Forma Normal de Chomsky;
               o
     Forma Normal de Greibach;
   • Autˆmatos de Pilha (PDA);
        o
   • Rela¸ao entre PDA e GLC;
         c˜
7




4. Reconhecedor – Algoritmo CYK;
5. Linguagens Tipo 0 e M´quinas de Turing;
                        a
6. Linguagens Sens´
                  ıveis ao Contexto e Autˆmatos de
                                         o
   Fita Limitada;
7. Hierarquia de Chomsky (revisitada).
8




Bibliografia
 • Introduction to Automata Theory, Languages, and
   Computation, Hopcroft e Ullman;
 • Linguagens Formais e Autˆmatos, Paulo Blauth
                           o
   Menezes.
9




Links

(Lˆminas)
  a
http://www.ufpel.tche.br/~campani/lingformal.pdf
(Lˆminas para impress˜o)
  a                  a
http://www.ufpel.tche.br/~campani/lingformal4.ps.gz
1          ¸˜
    INTRODUCAO                                                10


     1    Introdu¸˜o
                 ca
      • Uma linguagem ´ um meio de comunica¸˜o utilizado
                        e                   ca
        por elementos de uma determinada comunidade.
        Formada por:
         – Conjunto de palavras;
         – Conjunto de regras gramaticais;
      • Uma linguagem ´ formal quando pode ser
                        e
        representada atrav´s de um sistema com sustenta¸˜o
                          e                            ca
        matem´tica. Formada por:
               a
         – Sintaxe (estrutura) – foco da nossa disciplina;
         – Semˆntica (significado) – n˜o interessa para n´s.
              a                      a                  o
1          ¸˜
    INTRODUCAO                                                  11


      • Alfabeto (ou vocabul´rio) ´ um conjunto finito de
                             a      e
        s´
         ımbolos. Ex: d´ıgitos, letras, etc.

                            {a, b, c, . . . , z}

                                 {0, 1}

      • Senten¸a (ou palavra, ou string) sobre um alfabeto ´
               c                                            e
        qualquer seq¨ˆncia finita de s´
                     ue               ımbolos do alfabeto.
        Ex: Seja o alfabeto V = {0, 1}, s˜o senten¸as v´lidas
                                         a        c    a
        001, 1010, etc.
      • O tamanho (ou comprimento) de uma senten¸a ´c e
        dado pelo n´mero de s´
                    u          ımbolos que a comp˜e. Ex:
                                                  o
        V = {a, b, c}, senten¸a w = ab, tamanho |w| = 2;
                             c
1          ¸˜
    INTRODUCAO                                                   12




      • A senten¸a que n˜o cont´m s´
                  c     a      e   ımbolos (tamanho zero)
        ´ chamada de senten¸a vazia, sendo denotada por ε
        e                   c
        (|ε| = 0);
      • Seja V um alfabeto. Representamos por:
         – V ∗ – conjunto de todas as senten¸as compostas de
                                            c
           s´
            ımbolos de V incluindo a senten¸a vazia;
                                            c
         – V + = V ∗ − {ε};
        Exemplo: V = {0, 1},
        V ∗ = {ε, 0, 1, 00, 01, 10, 11, 000, 001, 010, . . .},
        V + = {0, 1, 00, 01, 10, 11, 000, 001, 010, . . .}.
1          ¸˜
    INTRODUCAO                                                 13




     Linguagem ´ qualquer conjunto de senten¸as sobre um
               e                            c
     alfabeto.
     ou
     Uma linguagem L sobre um alfabeto V ´ tal que L ⊆ V ∗ .
                                         e
1          ¸˜
    INTRODUCAO                                             14


      • Tipos de linguagens: finitas, vazias e infinitas;
      • Representa¸ao:
                  c˜
         – Listando as palavras (s´ finita);
                                  o
         – Descri¸ao alg´brica. Ex: {an bn cn |n ≥ 1}.
                 c˜     e
           Nota¸ao:
               c˜
                               n vezes
                              aaa · · · a = an ;
         – Definindo um algoritmo que determina (sim ou
           n˜o) se uma senten¸a pertence a uma linguagem
            a                c
           (Reconhecimento). Ex: autˆmato finito;
                                     o
         – Definindo um mecanismo que gera todas as
           senten¸as da linguagem em alguma ordem
                  c
           (Gera¸˜o). Ex: gram´tica.
                 ca             a
1          ¸˜
    INTRODUCAO                                               15




      • Uma gram´tica serve para definir qual o subconjunto
                   a
        de senten¸as que faz parte de uma determinada
                 c
        linguagem. Ela ´ um dispositivo formal para
                       e
        especificar uma linguagem potencialmente infinita de
        uma forma finita;
1          ¸˜
    INTRODUCAO                                           16



      • Nota¸˜o Formal de Gram´tica
            ca                a
        Uma gram´tica G ´ definida por uma qu´drupla
                a       e                   a

                          G = (N, T, P, S)

        onde:
        N conjunto finito de n˜o-terminais;
                             a
        T conjunto finito de terminais;
        P conjunto finito de regras de produ¸ao;
                                           c˜
        S s´
           ımbolo inicial da gram´tica.
                                 a
        Observa¸oes: N T = ∅, V = N
               c˜                            T, S ∈ N,
        P = {α → β|α ∈ V + ∧ β ∈ V ∗ }.
1          ¸˜
    INTRODUCAO                                                17



        Exemplo: gera n´meros inteiros
                       u

                          G = (N, T, P, I)

                             N = {I, D}
                         T = {0, 1, 2, . . . , 9}
          P = {I → D, I → DI, D → 0, D → 1, . . . , D → 9}

        ou

                  P : I → D|DI, D → 0|1|2| · · · |9

        Exerc´ıcio: Reescrever tentando evitar n´meros tipo
                                                u
        0015.
1          ¸˜
    INTRODUCAO                                            18




      • Conven¸oes:
              c˜
        S´
         ımbolos n˜o-terminais N = {A, B, C, . . . T };
                  a
        S´
         ımbolos terminais T = {a, b, c, . . . t};
        S´
         ımbolo terminal ou n˜o-terminal
                                  a
           N T = {U, V, . . . Z};
        Seq¨ˆncias de terminais T ∗ = {u, v, . . . z};
           ue
        Seq¨ˆncias de n˜o-terminais e terminais
           ue          a
          (N T )∗ = {α, β, γ, . . .}.
1          ¸˜
    INTRODUCAO                                               19




      • Deriva¸˜o (⇒) ´ uma opera¸ao de substitui¸ao
               ca      e           c˜             c˜
        efetuada de acordo com as regras de produ¸˜o da
                                                 ca
        gram´tica.
             a
        Formalmente: γαδ ⇒ γβδ se α → β ∈ P e γ, δ ∈ V ∗ .
        Exemplo: G = ({S, A, B}, {0, 1}, {S → AB, A →
        0|AB, B → 1|1B}, S), e

            S ⇒ AB ⇒ ABB ⇒ 0BB ⇒ 01B ⇒ 011B .
1          ¸˜
    INTRODUCAO                                          20




      • Uma seq¨ˆncia de deriva¸oes com zero ou mais
                ue             c˜
        passos (⇒∗ ):
        Formalmente: α1 ⇒∗ αm se
        α1 ⇒ α2 , α2 ⇒ α3 , . . . , αm−1 ⇒ αm ,
        α1 , α2 , . . . , αm ∈ V ∗ .
      • Garantindo pelo menos uma substitui¸ao (⇒+ ):
                                           c˜
        Formalmente: α1 ⇒+ αm se α1 ⇒ α2 , α2 ⇒∗ αm ,
        α1 , α2 , . . . , αm ∈ V ∗ .
1          ¸˜
    INTRODUCAO                                              21




      • Uma senten¸a de uma linguagem ´ uma seq¨ˆncia
                     c                    e         ue
        formada por terminais, obtida a partir do s´
                                                   ımbolo
        inicial da gram´tica desta linguagem, atrav´s de
                       a                           e
        deriva¸oes sucessivas.
               c˜
        Formalmente: S ⇒+ u.
      • Uma forma sentencial ´ uma seq¨ˆncia qualquer,
                                e        ue
        composta de terminais e n˜o-terminais, obtida a
                                   a
        partir do s´
                   ımbolo inicial da gram´tica atrav´s de
                                         a          e
        deriva¸oes sucessivas.
              c˜
        Formalmente: S ⇒∗ α.
1          ¸˜
    INTRODUCAO                                                22




      • A linguagem gerada por uma gram´tica
                                           a
        G = (N, T, P, S) ´ o conjunto de todas as senten¸as
                         e                               c
        da linguagem obtidas da gram´tica por deriva¸oes
                                      a               c˜
        sucessivas.
        Formalmente: L(G) = {w|w ∈ T ∗ ∧ S ⇒∗ w}.
1          ¸˜
    INTRODUCAO                                                 23




        Ex: G = ({S}, {0, 1}, P, S) com
        P = {S → 0S1, S → 01}. Assim,
        S ⇒ 0S1 ⇒ 00S11 ⇒ 03 S13 ⇒ · · · que ´ igual a 0n 1n
                                              e
        para n ≥ 1. Logo, L(G) = {0n 1n |n ≥ 1}.
        Nota¸˜o:
            ca
                            n vezes
                           aaa · · · a = an .
1          ¸˜
    INTRODUCAO                                               24




        Exerc´
             ıcio: Seja a seguinte gram´tica:
                                       a

                       G = ({S, A, B}, {0, 1}, P, S)

        P = {S → ASBB|BSAA|0, A → 01|01A, B → 10|10B}
        Obtenha as deriva¸oes para as seguintes senten¸as:
                         c˜                           c
         1. 0101010;
         2. 101000101010101.
1          ¸˜
    INTRODUCAO                                                        25



      • Tipos de Gram´ticas – segundo a hierarquia de
                      a
        Chomsky existem quatro tipos:
        Tipo 0 ou Irrestritas P = {α → β|α ∈ V + , β ∈ V ∗ };
        Tipo 1 ou Sens´ ıvel ao Contexto Se α → β ∈ P
          ent˜o |α| ≤ |β|.
             a
           Outra forma:
           P = {α1 Aα2 → α1 βα2 |α1 , α2 ∈ V ∗ , β ∈ V + , A ∈ N };
        Tipo 2 ou Livre de Contexto
          P = {α → β|α ∈ N ∧ β = ε};
        Tipo 3 ou Regular A → aB ou A → a, ou seja,
          P = {A → aX|A ∈ N, a ∈ T, X ∈ N ∪ {ε}}.
1          ¸˜
    INTRODUCAO                                                26



      • Gram´ticas lineares:
            a
        Gram´tica linear ` direita Se todas as produ¸oes
             a           a                          c˜
          s˜o da forma A → wB ou A → w, com w ∈ T ∗ ;
           a
        Gram´tica linear ` esquerda Se todas as
             a            a
          produ¸oes s˜o da forma A → Bw ou A → w;
               c˜    a
        Gram´tica linear unit´ria ` direita linear `
              a                a  a                a
          direita com |w| ≤ 1;
        Gram´tica linear unit´ria ` esquerda linear `
             a                a   a                 a
          esquerda com |w| ≤ 1.
      • Teorema: As quatro defini¸oes de gram´ticas lineares
                                c˜          a
        s˜o equivalentes.
         a
1          ¸˜
    INTRODUCAO                                               27




      • Defini¸˜o alternativa de gram´tica regular:
             ca                     a
        Uma gram´tica regular ´ qualquer gram´tica linear.
                a             e              a
1          ¸˜
    INTRODUCAO                                        28




                          Regulares

                    Livres de Contexto

                         ´
                     Sensiveis ao Contexto
                                 Tipo 0


            Tipo 3 ⊂ Tipo 2 ⊂ Tipo 1 ⊂ Tipo 0 ⊂ T ∗
1          ¸˜
    INTRODUCAO                                         29




      • Ex:
                    G = ({S, A, B}, {a, b}, P, S)
         P = {S → aB|bA, A → a|aS|bAA, B → b|bS|aBB}
         1. Tipo da gram´tica?
                        a
         2. L(G)?
1          ¸˜
    INTRODUCAO                                                  30




      • Respostas:
         1. Livre de contexto;
         2. L(G) ´ o conjunto de todas as palavras em T ∗ que
                 e
            tem o mesmo n´mero de a’s e b’s.
                          u
1          ¸˜
    INTRODUCAO                                               31


      • Linguagens classificadas segundo as gram´ticas em:
                                               a
         1. Recursivamente enumer´veis ou RE
                                    a
            (gram´tica Tipo 0) – conjuntos recursivamente
                 a
            enumer´veis est˜o relacionado com a m´quina de
                   a       a                       a
            Turing, fun¸˜es parciais recursivas e
                       co
            computabilidade;
         2. Linguagem sens´ ao contexto ou LSC
                           ıvel
            (gram´tica Tipo 1);
                 a
         3. Linguagem livre de contexto ou LLC
            (gram´tica Tipo 2);
                 a
         4. Linguagem Regular ou LR
            (gram´tica Tipo 3).
                 a
1          ¸˜
    INTRODUCAO                                                 32


      • Vamos extender as defini¸oes das gram´ticas Tipo 1
                                  c˜            a
        e 2 para permitir produ¸˜es do tipo S → ε. Isto s´ ´
                                 co                      oe
        poss´ se S n˜o aparece em lado direito de
             ıvel      a
        nenhuma produ¸˜o. Assim, S → ε somente ser´
                        ca                           a
        utilizada para originar a senten¸a vazia;
                                        c

                        L(G ) = L(G)     {ε}

      • Para introduzir S → ε em gram´tica que viola a
                                        a
        condi¸˜o anterior, devemos transforma-la em uma
             ca
        equivalente que obede¸a a restri¸ao;
                              c         c˜
      • Gram´ticas equivalentes s˜o aquelas que geram a
            a                    a
        mesma linguagem;
1          ¸˜
    INTRODUCAO                                                  33




      • Para transformar incluiremos um novo s´  ımbolo
        n˜o-terminal (S ) que passar´ a ser o novo s´
          a                           a              ımbolo
        inicial. Em seguida, incluiremos em P todas as
        regras que tenham o s´ ımbolo S no lado esquerdo,
        substituindo este por S , e incluindo ainda uma regra
        S → ε;
        Ex1: G = ({S, A}, {a}, P, S) com
        P = {S → aA, A → a|aA}. Obtemos
        G = ({S, A}, {a}, P , S) com
        P = {S → aA|ε, A → a|aA};
1          ¸˜
    INTRODUCAO                              34




        Ex2: G = ({S, A}, {a}, P, S) com
        P = {S → aA, A → a|aS}. Obtemos
        G = ({S , S, A}, {a}, P , S ) com
        P = {S → aA|ε, S → aA, A → a|aS};
1          ¸˜
    INTRODUCAO                                                 35




     Exerc´
          ıcios:
      1. Construa uma gram´tica G tal que:
                          a
        (a) L(G) = {an bm |n ≥ 0 ∧ m ≥ 1};
        (b) L(G) = {ai bj ci |i ≥ 0 ∧ j ≥ 1}.
      2. Construa uma gram´tica regular G tal que:
                          a

          L(G) = {w|w ∈ {0, 1}+ e n˜o tem 1 s consecutivos}
                                   a

      3. Construa uma gram´tica livre de contexto G tal que:
                          a
         L(G) = {w|w ∈
         {0, 1, 2}+ e todos os zeros sejam consecutivos}
1          ¸˜
    INTRODUCAO                                                  36




      4. Seja G definida por:

                   S → aS|bB, B → cB|cC, C → cS|c

        Pede-se:
        (a) determine L(G);
       (b) construa G tal que L(G ) = L(G) {ε};
        (c) verifique se as senten¸as abaixo pertencem a L(G):
                                 c
           • abccc;
           • bccabcc;
           • abccbbc.
1          ¸˜
    INTRODUCAO                                                 37




      5. Construa uma GLC G tal que L(G) seja o conjunto
         de express˜es aritm´ticas v´lidas. Os terminais s˜o
                   o         e      a                      a
         identificadores (id), parˆnteses (“(” e “)”), e os
                                 e
         operadores +, ∗, e − un´rio.
                                  a
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                      38


     2    Gram´ticas Regulares e
               a
          Autˆmato Finito
             o
       • O autˆmato finito (AF) ´ uma m´quina abstrata que
              o                  e       a
         reconhece linguagens regulares;
       • Modelo matem´tico com entradas e sa´
                         a                     ıdas. Se ´
                                                        e
         fornecido ao AF uma seq¨ˆncia de s´
                                  ue         ımbolos como
         entrada, ele responder´ se esta seq¨ˆncia pertence `
                               a            ue              a
         linguagem ou n˜o;
                         a
       • O AF pode assumir um n´mero finito de estados;
                               u
       • Um estado resume os estados anteriores pelos quais
         passou e os s´
                      ımbolos que j´ foram lidos na entrada.
                                   a
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO              39




       • Defini¸˜o formal de autˆmato finito
              ca               o
         Um autˆmato finito M sobre um alfabeto Σ ´ um
                o                                e
         sistema (K, Σ, δ, q0 , F ) onde:
         K – conjunto finito, n˜o vazio, de estados;
                              a
         Σ – alfabeto finito de entrada;
         δ – fun¸ao de transi¸ao de estados,
                c˜           c˜

                            δ :K ×Σ       {ε} → K ;

         q0 ∈ K estado inicial;
         F ⊂ K conjunto de estados finais.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                    40


                                Fita de entrada

                            0     1    0     0    1   0   1
                 Cabeçote




                                           Controle
                                            Finito



     δ(q, a) = p para q, p ∈ K e a ∈ Σ, significando que
     estando no estado q e lendo o s´ımbolo a na fita de
     entrada podemos mudar para o estado p avan¸ando o
                                                   c
     cabe¸ote uma posi¸ao.
          c              c˜
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                    41



       • Diagrama de Transi¸˜o
                           ca
         – Outra maneira de representar um autˆmato finito;
                                              o
         – Grafo direcionado e rotulado;
         – Os v´rtices representam os estados, desenhados
               e
           como c´
                 ırculos;
         – As arestas representam as transi¸oes entre dois
                                           c˜
           estados, sendo o r´tulo o s´
                             o        ımbolo reconhecido na
           entrada;
         – O estado inicial ´ marcado com uma seta;
                            e
         – Os estados finais s˜o indicados por c´
                             a                 ırculos
           duplos.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                              42




     Ex:

                                      a
                                         

                                a             b
                           q0
                         @ABC
                         GFED          q1
                                    / GFED
                                      @ABC            q2
                                                  / G?=
                                                    @ABC
                                                     89:;
                                                     FED


     M = ({q0 , q1 , q2 }, {a, b}, δ, q0 , {q2 }), e δ(q0 , a) = q1 ,
     δ(q1 , a) = q1 , δ(q1 , b) = q2 . Logo, T (M ) = {an b|n ≥ 1}.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                  43




       • Tabela de Transi¸ao de Estados
                         c˜
         – Uma terceira forma de representar um AF;
         – Tabela indicando na vertical os estados, e na
           horizontal os s´
                          ımbolos do alfabeto. No
           cruzamento est˜o as transi¸oes poss´
                           a          c˜       ıveis;
         – O estado inicial ´ indicado por uma seta, e os
                            e
           estados finais por asteriscos.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO              44




     Ex1:
                            δ    a    b
                          → q0   q1   -
                           q1    q1   q2
                           *q2   -    -
     Exerc´
          ıcio:
      1. Descreva formalmente o AF;
      2. Desenhe o diagrama de transi¸˜o equivalente.
                                     ca
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                                    45




     Ex2: AF que reconhece senten¸as em {0, 1}∗ as quais n˜o
                                   c                      a
     cont´m dois ou mais 1’s consecutivos.
         e

                                  0
                                      
 1
                                          + GFED
                                   q0
                               / GFED k
                                 @ABC
                                  ?=
                                  89:;        q1
                                            @ABC
                                             ?=
                                             89:;
                                       0


     M = (K, Σ, δ, q0 , F ), K = {q0 , q1 }, Σ = {0, 1},
     F = {q0 , q1 }, com δ(q0 , 0) = q0 , δ(q0 , 1) = q1 , δ(q1 , 0) = q0 .
     Exerc´
          ıcio: Apresente a tabela de transi¸ao.
                                            c˜
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO   46




     Tabela:
                           δ     0    1
                         → ∗q0   q0   q1
                          *q1    q0   -
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                     47




     Ex3: Identificadores de linguagens de programa¸˜o
                                                  ca
     S → L|LR, R → L|D|LR|DR, L → a|b|c · · · |z, D →
     0|1|2| · · · |9

                                  a|b|···|z|0|1|···|9
                             a|b|···|z
                                              

                           q0
                         GFED
                         @ABC              q1
                                       / G?=
                                         @ABC
                                          89:;
                                          FED


     Exerc´
          ıcios:
      1. Inteiros com ou sem sinal;
      2. Reais (uma casa ap´s a v´
                           o     ırgula) com sinal opcional.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                       48


                a        ca             ınio K × Σ∗ :
       • Extens˜o da fun¸˜o δ para o dom´
            ˆ
         1. δ(q, ε) = q;
            ˆ            ˆ
         2. δ(q, ua) = δ(δ(q, u), a) para u ∈ Σ∗ e a ∈ Σ;
         ˆ
       • δ(q, u) = p significa que M , iniciando no estado q e
         tendo a seq¨ˆncia u na fita de entrada, entrar´ no
                     ue                                 a
         estado p, ap´s o cabe¸ote mover-se para a direita |u|
                      o        c
         c´lulas;
          e
                     c     e                  ˆ
       • Uma senten¸a u ´ aceita por M se δ(q0 , u) = p para
         algum p ∈ F , ou seja:
                     ˆ
         T (M ) = {u|δ(q0 , u) = p ∧ p ∈ F };
       • Qualquer conjunto de senten¸as aceito por um AF ´
                                      c                  e
         dito ser regular (linguagem regular ).
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO              49


         Exemplo: M = (K, Σ, δ, q0 , F ), Σ = {0, 1},
         K = {q0 , q1 , q2 , q3 }, F = {q0 }.


                             δ(q0 , 0) = q2
                             δ(q1 , 0) = q3
                             δ(q2 , 0) = q0
                             δ(q3 , 0) = q1
                             δ(q0 , 1) = q1
                             δ(q1 , 1) = q0
                             δ(q2 , 1) = q3
                             δ(q3 , 1) = q2
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO   50




                                 1
                                    + GFED
                              q0
                           @ABC
                           GFED k
                             ?=
                             89:;      q1
                                      @ABC
                                T 1
                                         T
                           0   0       0 0
                                 1    
                                    + GFED
                            q2
                           @ABC
                           GFED k      q3
                                      @ABC
                                   1
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                             51



                                  δ      0    1
                               → ∗q0     q2   q1
                                 q1      q3   q0
                                 q2      q0   q3
                                 q3      q1   q2
         Reconhecimento de 110101:
         (q0 , 110101) ⇒ (q1 , 10101) ⇒ (q0 , 0101) ⇒ (q2 , 101) ⇒
         (q3 , 01) ⇒ (q1 , 1) ⇒ (q0 , ε). Assim, 110101 ∈ T (M ).
         Reconhecimento de 1011:
         (q0 , 1011) ⇒ (q1 , 011) ⇒ (q3 , 11) ⇒ (q2 , 1) ⇒ (q3 , ε).
         Assim, 1011 ∈ T (M ).
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                 52




         T (M ) = {w|w ∈
         {0, 1}∗ e w cont´m um n´mero par de 0 s e 1 s}.
                         e      u
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                   53




       • Autˆmato Finito N˜o-Determin´
            o             a          ıstico (AFND)
         Um autˆmato finito n˜o-determin´stico ´ um sistema
                 o                a    ı      e
         (K, Σ, δ, q0 , F ) onde:
         K conjunto finito, n˜o vazio, de estados;
                            a
         Σ alfabeto de entrada;
         δ : K × Σ → Partes(K) fun¸ao de transi¸ao (n˜o
                                  c˜           c˜    a
             determin´
                     ıstico);
         q0 ∈ K estado inicial;
         F ⊂ K conjunto de estados finais.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                           54




       • Diferen¸a entre AF e o AFND: δ(q, a) ´ um conjunto
                c                               e
         de estados (possivelmente vazio) ao inv´s de um
                                                 e
         unico estado;
         ´
       • Assim, δ(q, a) = {p1 , p2 , . . . , pk } significa que M
         estando no estado q e tendo a na posi¸˜o do cabe¸ote
                                                        ca       c
         na fita de entrada, move uma c´lula para a direita e
                                                 e
         escolhe qualquer estado entre p1 , p2 , . . . , pk como
         pr´ximo estado.
           o
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                        55




                                ınio K × Σ∗ :
       • Extendendo δ para o dom´
            ˆ
         1. δ(q, ε) = {q};
            ˆ
         2. δ(q, ua) =      ˆ        δ(p, a) para todo u ∈ Σ∗ e
                          p∈δ(q,u)
            a ∈ Σ;
       • Uma senten¸a u ´ aceita por M se existe um estado
                    c      e
                     ˆ
         p ∈ F e p ∈ δ(q0 , u);
                         ˆ
       • T (M ) = {u|p ∈ δ(q0 , u) ∧ p ∈ F }.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                  56




     Ex: AFND que aceita o conjunto de todas as senten¸as
                                                       c
     bin´rias que cont´m dois 0’s ou 1’s consecutivos.
        a             e

                                                  0|1
                                                       

                                            0
                                       q
                                     GFED
                                     @ABC
                                       3
                                                    q4
                                                / G?=
                                                  @ABC
                                                   89:;
                                                   FED
                     0|1        0 }}
                                    }}
                                 }
                            }}}}
                          q0 e
                       / GFED
                         @ABC
                              ee
                                ee                0|1
                                  ee
                                1 ee                   

                                            1
                                       q1
                                     GFED
                                     @ABC           q2
                                                / G?=
                                                  @ABC
                                                   89:;
                                                   FED
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                           57


     M = ({q0 , q1 , q2 , q3 , q4 }, {0, 1}, δ, q0 , {q2 , q4 }) e
                              δ(q0 , 0) = {q0 , q3 }
                              δ(q1 , 0) = ∅
                              δ(q2 , 0) = {q2 }
                              δ(q3 , 0) = {q4 }
                              δ(q4 , 0) = {q4 }
                              δ(q0 , 1) = {q0 , q1 }
                              δ(q1 , 1) = {q2 }
                              δ(q2 , 1) = {q2 }
                              δ(q3 , 1) = ∅
                              δ(q4 , 1) = {q4 }
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                    58




       • Teorema: Se L ´ um conjunto aceito por um AFND,
                        e
         ent˜o existe um autˆmato finito determin´
            a               o                   ıstico
         (AFD) que aceita L.
         (Ou seja, o n˜o determinismo n˜o acrescenta nada –
                      a                  a
         a n˜o ser praticidade – ao AF).
            a
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                                59



       • Seja M = (K, Σ, δ, q0 , F ) um AFND que aceita L.
         Definimos o AFD M = (K , Σ, δ , q0 , F ) tal que:
         – Os estados de M s˜o constituidos por todos os
                             a
           subconjuntos do conjunto de estados de M :
           K = Partes(K) e K = 2K ;
         – Nota¸ao: estados de M s˜o [q1 q2 q3 · · · qi ], onde
                   c˜                     a
           q1 , q2 , q3 , . . . , qi ∈ K;
         – Ex: Se K = {q0 , q1 } ent˜o K = {∅, [q0 ], [q1 ], [q0 q1 ]};
                                    a
         – F ´ o conjunto de todos os estados de K contendo
             e
           um estado de F ;
         – q0 = [q0 ];
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                                        60




         – Definimos δ ([q1 q2 q3 · · · qi ], a) = [p1 p2 p3 · · · pj ] se e
           somente se δ({q1 , q2 , . . . , qi }, a) = {p1 , p2 , . . . , pj } =
           δ(q1 , a) ∪ δ(q2 , a) ∪ · · · ∪ δ(qi , a).
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                           61




       • Prova: T (M ) = T (M ). Por indu¸˜o sobre o
                                                  ca
         tamanho da palavra de entrada w. Devemos mostrar
               ˆ
         que δ ([q0 ], w) = [p1 · · · pi ] se e somente se
         ˆ
         δ(q0 , w) = {p1 , . . . , pi }.
                                               a ˆ
         1. Base: |w| = 0, w = ε. Ent˜o, δ ([q0 ], ε) = [q0 ] se e
                           ˆ
            somente se δ(q0 , ε) = {q0 }, que ´ verdadeiro por
                                                   e
            defini¸ao;
                 c˜
         2. Hip´tese: |w| = n, n ≥ 1.
                o
                    ˆ
            Supor δ ([q0 ], w) = [p1 · · · pi ] se e somente se
            ˆ
            δ(q0 , w) = {p1 , . . . , pi };
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                             62


         3. Passo: |wa| = n + 1, n ≥ 1:
                              ˆ
                              δ ([q0 ], wa) = [q1 · · · qj ]

            se e somente se
                              ˆ
                              δ(q0 , wa) = {q1 , . . . , qj }

            que equivale a dizer que
                          ˆ
                          δ ([p1 · · · pi ], a) = [q1 · · · qj ]

            se e somente se
                       ˆ
                       δ({p1 , . . . , pi }, a) = {q1 , . . . , qj }

            que ´ verdade por defini¸ao.
                e                  c˜
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                          63




     Exemplo: Dado o AFND M = ({q0 , q1 }, {0, 1}, δ, q0 , {q1 })
     e
                 δ(q0 , 0) = {q0 , q1 } δ(q0 , 1) = {q1 }
                  δ(q1 , 0) = ∅ δ(q1 , 1) = {q0 , q1 } .
     Construir o AFD M equivalente.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                      64




                    M = (K , {0, 1}, δ , [q0 ], F )

                      K = {[q0 ], [q1 ], [q0 q1 ], ∅}
                          F = {[q1 ], [q0 q1 ]}

             δ(q0 , 0) = {q0 , q1 } ⇒ δ ([q0 ], 0) = [q0 q1 ]
                δ(q0 , 1) = {q1 } ⇒ δ ([q0 ], 1) = [q1 ]
                    δ(q1 , 0) = ∅ ⇒ δ ([q1 ], 0) = ∅
             δ(q1 , 1) = {q0 , q1 } ⇒ δ ([q1 ], 1) = [q0 q1 ]
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                                     65




     δ({q0 , q1 }, 0) = δ(q0 , 0) ∪ δ(q1 , 0) = ⇒ δ ([q0 q1 ], 0) = [q0 q1 ]
                 = {q0 , q1 } ∪ ∅ = {q0 , q1 }
     δ({q0 , q1 }, 1) = δ(q0 , 1) ∪ δ(q1 , 1) = ⇒ δ ([q0 q1 ], 1) = [q0 q1 ]
             = {q1 } ∪ {q0 , q1 } = {q0 , q1 }
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO              66



     Tabela do AFND:
                          δ         0          1
                        → q0     q0 , q 1     q1
                         ∗q1        ∅       q0 , q 1
     Tabela do AFD equivalente:

                         δ           0          1
                       → [q0 ]   [q0 q1 ]     [q1 ]
                        ∗[q1 ]       ∅       [q0 q1 ]
                       ∗[q0 q1 ] [q0 q1 ] [q0 q1 ]
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                   67




       • Rela¸˜o entre AF e GR
             ca
       • Teorema: Se G = (N, T, P, S) ´ uma GR (Tipo 3)
                                      e
         ent˜o existe um AF M = (K, T, δ, S, F ) tal que
            a
         T (M ) = L(G).
       • Seja M um AFND:
         – os estados de M s˜o as vari´veis de G, mais um
                             a        a
           estado adicional A, A ∈ N . Assim, K = N ∪ {A};
         – estado inicial de M ´ S;
                               e
         – se P tem produ¸ao S → ε ent˜o F = {S, A}, caso
                          c˜          a
           contr´rio F = {A};
                a
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO         68




         – transi¸oes de M :
                 c˜
           1. δ(B, a) = A para cada B → a ∈ P ;
           2. δ(B, a) = C para cada B → aC ∈ P ;
           3. δ(A, a) = ∅ para todo a ∈ T .
       • Provar que T (M ) = L(G).
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO            69



     Exemplo: G = ({S, B}, {0, 1}, P, S), e

                    P : S → 0B, B → 0B|1S|0

     Construir um AF que aceite L(G):

                 M = ({S, B, A}, {0, 1}, δ, S, {A})

                    δ(S, 0) = {B} ⇐ S → 0B
                       δ(S, 1) = ∅
                 δ(B, 0) = {B, A} ⇐ B → 0B|0
                    δ(B, 1) = {S} ⇐ B → 1S
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                    70


     Convertendo para um AFD:

                    M = (K , {0, 1}, δ , [S], F )

          K = {∅, [S], [A], [B], [AS], [AB], [BS], [ABS]}
                  F = {[A], [AS], [AB], [ABS]}
                δ ([S], 0) = [B] δ ([B], 0) = [AB]
                  δ ([S], 1) = ∅ δ ([B], 1) = [S]
        δ ([AB], 0) = δ(A, 0) ∪ δ(B, 0) = ∅ ∪ {A, B} = [AB]
          δ ([AB], 1) = δ(A, 1) ∪ δ(B, 1) = ∅ ∪ {S} = [S]
                       δ (∅, 0) = δ (∅, 1) = ∅
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO    71




     Eliminando os estados inacess´
                                  ıveis:

                       K = {[S], [B], [AB]}

                           F = {[AB]}
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                       72



       • Teorema: Se M = (K, T, δ, q0 , F ) ´ um AF ent˜o
                                            e          a
         existe uma gram´tica do Tipo 3, G = (N, T, P, S), tal
                        a
         que L(G) = T (M ).
       • Para obter G:
          – N = K;
          – S = q0 ;
          – Produ¸oes:
                 c˜
           1. B → aC para toda a transi¸˜o δ(B, a) = C;
                                        ca
           2. B → a para toda a transi¸˜o δ(B, a) = C,
                                      ca
              quando C ∈ F ;
          – Se ε ∈ T (M ) ent˜o L(G) = T (M );
                             a
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                      73




         – Se q0 ∈ F ent˜o ε ∈ T (M ), e L(G) = T (M ) − {ε}.
                        a
           Neste caso, construir uma L(G ) = L(G) ∪ {ε};
       • Provar L(G) = T (M ).
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO            74



     Exemplo: Contruir G = (K , {0, 1}, P , [S]),
     K = {[S], [B], [AB]}, a partir de M do exemplo
     anterior:
                   [S] → 0[B] δ ([S], 0) = [B]
                 [B] → 0[AB] δ ([B], 0) = [AB]
                      [B] → 0 [AB] ∈ F
               [AB] → 0[AB] δ ([AB], 0) = [AB]
                      [AB] → 0 [AB] ∈ F
                   [B] → 1[S] δ ([B], 1) = [S]
                 [AB] → 1[S] δ ([AB], 1) = [S]
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO     75




       • Minimiza¸˜o de AF.
                 ca
         Um AF M ´ m´nimo se:
                 e ı
         1. n˜o possui estados inacess´
             a                        ıveis;
         2. n˜o possui estados mortos;
             a
         3. n˜o possui estados equivalentes.
             a
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                         76




       • Constru¸˜o do AF m´
                ca         ınimo:
         1. retirar de K os estados inacess´veis, ou seja, todo
                                           ı
            estado q ∈ K para o qual n˜o exista senten¸a w tal
                                       a                 c
                 ˆ
            que δ(q0 , w) = q;
         2. retirar de K os estados mortos, ou seja, todo estado
            que n˜o sendo estado final e que n˜o conduz a
                  a                           a
            nenhum estado final durante o reconhecimento;
         3. construir todas as poss´
                                   ıveis classes de equivalˆncia
                                                           e
            de estados;
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                             77




         4. construir M = (K , Σ, δ , q0 , F ) conforme segue:
           – K ´ o conjunto das classes de equivalˆncia
                 e                                    e
             obtidas;
           – q0 ´ a classe de equivalˆncia que cont´m q0 ;
                e                      e             e
           – F ´ o conjunto de todas as classes de
                 e
             equivalˆncia que cont´m pelo menos um estado
                      e              e
             de F ;
           – δ ´ o conjunto de transi¸oes tais que
                e                        c˜
             δ ([p], a) = [q] para toda a transi¸˜o δ(p1 , a) = q1 ,
                                                ca
             onde p1 ∈ [p] e q1 ∈ [q].
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                             78




       • Constru¸˜o das Classes de Equivalˆncia:
                ca                        e
         Um conjunto de estados q1 , q2 , . . . , qj est´ em uma
                                                            a
         mesma classe de equivalˆncia se todas as transi¸˜es
                                         e                        co
         poss´
             ıveis a partir de cada estado conduz o autˆmato     o
         aos estados qi , qi+1 , . . . , qn , estando estes ultimos
                                                             ´
         todos em uma mesma classe de equivalˆncia.       e
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                        79




       • Algoritmo:
         1. Criar um estado ∅ para representar as transi¸oes
                                                        c˜
            indefinidas;
         2. Dividir K em duas classes de equivalˆncia iniciais,
                                                e
            uma contendo os estados finais e a outra todos os
            demais estados de K;
         3. Dividir sucessivamente as classes obtidas, at´ que
                                                         e
            nenhuma nova classe possa ser obtida.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO   80




     Exemplo:

                           δ    a    b
                         → q0   q1   q5
                           q1   -    q2
                          ∗q2   q3   q2
                          ∗q3   q3   q3
                           q4   q4   q1
                           q5   q5   q5
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO      81




     Aplicando:
      1. estados inacess´
                        ıveis: q4 ;
      2. estado morto: q5 ;
                                 δ    a    b
                               → q0   q1   ∅
                                q1    ∅    q2
                                ∗q2   q3   q2
                                ∗q3   q3   q3
                                 ∅    ∅    ∅
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                                82


      3. classes de equivalˆncia:
                           e

              {q2 , q3 }                  {q0 , q1 , ∅}
                                                      tt
                                                        tt
                                                          tt
                                                            tt
                                                              t
                                            {q0 , ∅}              {q1 }
                                            t
                                         ttt
                                      ttt
                                    tt
                            {q0 }               {∅}


              {q2 , q3 }    {q0 }               {∅}               {q1 }


                 [0]         [1]                [2]                [3]
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO       83




      4. autˆmato sem classes de equivalˆncia:
            o                           e
                             δ     a     b
                            ∗[0]   [0]   [0]
                           → [1] [3]     [2]
                             [2]   [2]   [2]
                             [3]   [2]   [0]
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO    84




      5. AF m´
             ınimo:
                            δ     a     b
                           ∗[0]   [0]   [0]
                          → [1] [3]      -
                            [3]    -    [0]
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO             85




     Exerc´
          ıcios:
      1. Minimize o seguinte AF:
                                    a
                                       + GFED
                                q0
                              GFED k
                              @ABC        q1
                                         @ABC
                                        a
                               b                 b
                                                
                                q2 e
                              GFED
                              @ABC
                               ?=
                               89:;             q3
                                              GFED
                                              @ABC
                                               ?=
                                               89:;
                                    e
                                    e       }
                                            }
                                        eea}
                                       b }
                                 a       }e        b
                                    }}}} eee 
                                     ~
                                  q4
                              2 GFED
                                @ABC
                                 ?=
                                 89:;           q5
                                            / GFED
                                              @ABC
                                        b
                          a
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                            86




      2. Minimize o seguinte AF:
                                        
                                          q0
                                        GFED
                                        @ABC

                                        a
                                               
                                             q1 e
                                           GFED
                                           @ABC
                                         }        ee
                                   b }}}            eea
                                   }}                 ee
                                  }                     ee
                             }}
                             ~                b
                    b
                        2
                           q2 f
                          GFED o
                          @ABC                             q
                                                         GFED
                                                         @ABC
                                                          ?=
                                                          89:;
                                                           3 l
                                                                  a
                                       b
                                                   a }}
                                                        }}
                                                     }
                                                   }}
                                 a
                                                }}
                                             q4
                                           GFED
                                           @ABC
                                            ?=
                                            89:;
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                   87




       • Express˜es Regulares – s˜o esquemas para
                 o                a
         representar linguagens regulares;
       • Sintaxe:
         1. Todos os s´
                      ımbolos do alfabeto s˜o ER;
                                           a
         2. Se R1 e R2 s˜o ER, ent˜o (R1 |R2 ) ´ uma ER
                        a         a            e
            (uni˜o);
                a
         3. Se R1 e R2 s˜o ER, ent˜o (R1 R2 ) ´ uma ER
                        a         a           e
            (concatena¸ao);
                      c˜
         4. Se R1 ´ ER, ent˜o (R1 )∗ ´ uma ER (repeti¸ao).
                  e        a         e               c˜
                       +
         Observa¸oes: R1 = R1 (R1 )∗ e R1 = R1 |ε.
                c˜                      ?
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                           88



       • Exemplos:
         – (a)∗ = a∗ = {ε, a, aa, aaa, . . .};
         – a+ = {a, aa, aaa, . . .};
         – (a|b)∗ = {ε, a, b, aa, ab, ba, bb, aaa, . . .};
         – a|b∗ = {ε, a, b, bb, bbb, . . .};
         – a(a|b)∗ = {a, aa, ab, aaa, aab, aba, abb, aaaa, . . .};
         – (a(a|b))∗ = {ε, aa, ab, aaaa, abaa, aaab, . . .};
         – Identificadores: l(l|d)∗ = {l, ll, ld, lll, . . .};
         – Inteiro com sinal: (+|−)d+ ;
         – Inteiro com/sem sinal: ((+|−)d+ )|d+ .
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                89




       • Bombeamento para Linguagens Regulares (Pumping
         Lemma) – serve para provar que uma dada
         linguagem ´ regular;
                   e
       • Para provar que sim: AF, GR, ER;
       • Para provar que n˜o: bombeamento;
                          a
       • Prova por redu¸˜o ao absurdo;
                       ca

       • Seja M = (K, Σ, δ, q0 , F ) e K = n;
       • Considere uma entrada w tal que |w| ≥ n;
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                     90




       • Assim, o caminho no diagrama de transi¸oes deve
                                               c˜
         passar por um conjunto de estados Q ⊂ K mais de
         uma vez (la¸o);
                    c
                                         
                         q0            HIJK
                                        Q                qi
                       GFED /o /o /o / ONML /o /o /o / GFED
                       @ABC                            @ABC
                                                        ?=
                                                        89:;
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                       91




       • Lema: Seja L uma linguagem regular. Ent˜o, existe
                                                     a
         uma constante n tal que se z ´ uma palavra de L, e
                                        e
         |z| ≥ n, nos podemos dizer que z = uvw de tal forma
         que |uv| ≤ n, |v| ≥ 1 e, para todo i ≥ 0, uv i w est´
                                                             a
         em L.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                      92


       • Aplica¸˜o do bombeamento (aplicado como um
               ca
         “jogo” contra um “advers´rio”):
                                 a
         1. Selecione uma linguagem L que desejamos provar
            que n˜o ´ regular;
                  a e
         2. O “advers´rio” escolhe um n, a constante do Lema.
                     a
            Uma vez escolhido o n ele n˜o pode muda-lo;
                                       a
         3. Selecione uma string z ∈ L. Sua escolha depende
            do n escolhido no passo anterior;
         4. O “advers´rio” quebra z nas partes u,v, e w, tal
                      a
            que |uv| ≤ n e |v| ≥ 1;
         5. Vocˆ encontra a contradi¸ao mostrando que para
                e                    c˜
            qualquer u, v, e w escolhido pelo “advers´rio”,
                                                      a
            existe um i para o qual uv i w n˜o est´ em L.
                                            a     a
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                        93




                    n2
       • Ex: L = {a |n ≥ 1} n˜o ´ regular.
                             a e
                                  2
         Solu¸˜o: Suponha z = an , z ∈ L e L ´ regular. Seja
             ca                                   e
         z = uvw, onde 1 ≤ |v| ≤ n e uv i w ∈ L para todo i.
         Em particular, seja i = 2. Ent˜o,
                                         a
         n2  |uv 2 w| ≤ n2 + n, j´ que |uv 2 w| = |uvw| + |v|,
                                  a
         |uvw| = n2 . Logo, n2  |uv 2 w| ≤ n2 + n  (n + 1)2 .
         Ou seja, o tamanho de uv 2 w fica entre n2 e (n + 1)2 e
         n˜o pode ser um quadrado perfeito. Assim, uv 2 w ∈ L
          a
         e L n˜o ´ regular.
              a e
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO      94




       • Exerc´
              ıcio: Prove por bombeamento que
         L = {an bn |n ≥ 0} n˜o ´ regular.
                             a e
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                        95




         Solu¸˜o: Suponha z = an bn , z ∈ L e L ´ regular.
             ca                                   e
         Escolho uv = an , w = bn . Observe que uv i w ∈ L para
         i  1, j´ que, neste caso, teriamos am bn para m  n.
                 a
         Logo, por redu¸˜o ao absurdo, L n˜o ´ regular.
                         ca                  a e
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                 96


       • AF com Sa´ (Moore e Mealy) – n˜o se restringe a
                     ıda                     a
         aceita/rejeita, produz uma string de sa´
                                                ıda;
       • M´quina de Mealy – sa´ associada `s transi¸˜es;
          a                   ıda         a        co

                        M = (K, Σ, δ, q0 , F, ∆)

         Onde:
         K conjunto finito de estados;
         Σ alfabeto finito de entrada;
         δ : K × Σ → K × ∆∗ fun¸ao de transi¸ao;
                               c˜           c˜
         q0 ∈ K estado inicial;
         F ⊂ K conjunto de estados finais;
         ∆ alfabeto finito de sa´
                               ıda;
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                     97




       • δ(q, a) = (p, w), com p, q ∈ K, a ∈ Σ, e w ∈ ∆∗ ,
         significa que o AF, estando no estado q e tendo a na
         fita de entrada, muda para o estado p e escreve a
         string w na fita de sa´ıda.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                      98




         Exemplo: Seja Σ = {x} e ∆ = {a, b}. M ´ uma
                                                e
         m´quina de Mealy que reconhece uma palavra
           a
         w,|w| ≥ 1, tal que w = x+ e produz uma seq¨ˆncia
                                                   ue
         v = (ab)+ , em que |v| = 2|w|.
         Solu¸˜o:
             ca
                         
                           q0
                         @ABC
                         GFED                q1
                                         / G?=
                                           @ABC
                                            89:;
                                            FED
                                                   l
                                                       (x,ab)
                                (x,ab)


         Observa¸ao: arestas s˜o rotuladas com um par (x, y),
                 c˜            a
         onde x ´ o s´
                e    ımbolo lido e y ´ a string produzida na
                                     e
         sa´
           ıda.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO               99



       • M´quina de Moore – sa´ associada aos estados;
          a                   ıda

                       M = (K, Σ, δ, q0 , F, ∆, δS )

         Onde:
         K conjunto finito de estados;
         Σ alfabeto finito de entrada;
         δ : K × Σ → K fun¸ao de transi¸ao;
                          c˜           c˜
         q0 ∈ K estado inicial;
         F ⊂ K conjunto de estados finais;
         ∆ alfabeto finito de sa´
                               ıda;
         δS : K → ∆∗ fun¸ao (total) de sa´
                        c˜               ıda;
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                         100




         Exemplo: o mesmo anterior
         (xxx · · · x ⇒ ababab · · · ab).
         Solu¸˜o:
             ca
                                                           x
                                                              

                         @ABC
                         GFED
                            q0 ,a       / GFED
                                          @ABC
                                           ?=
                                           89:;
                                           q1 ,b       / ONML
                                                         HIJK
                                                          @ABC
                                                          GFED
                                                          q2 ,ab
                                    x              x


         Observa¸ao: os v´rtices s˜o rotulados com um par
                  c˜       e      a
         (x, y), onde x ´ o nome do estado e y ´ a sa´
                        e                      e     ıda
         produzida pelo estado.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                     101




       • Equivalˆncia das M´quinas de Moore e Mealy
                e          a
         – Excetuando-se a string vazia, os dois modelos de
           m´quina s˜o equivalentes;
            a       a
         – A m´quina de Moore sempre gera pelo menos a
               a
           palavra associada ao estado inicial, n˜o podendo
                                                 a
           assim gerar a senten¸a vazia;
                               c
         – Prova de equivalˆncia por simula¸ao m´tua (exceto
                           e               c˜   u
           a senten¸a vazia);
                   c
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                                102




         – Teorema: A m´quina de Mealy simula a m´quina
                       a                         a
           de Moore.
            Prova: Suponha MO = (K, Σ, δMO , q0 , F, ∆, δS ) uma
            m´quina de Moore. Seja:
             a

                        ME = (K ∪ {qe }, Σ, δME , qe , F, ∆)

            uma m´quina de Mealy, onde δME ´ definido como
                   a                       e
            segue:
           1. δME (qe , a) = (δMO (q0 , a), δS (q0 )δS (δMO (q0 , a)));
           2. δME (q, a) = (δMO (q, a), δS (δMO (q, a))).
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                      103




                                          a1
                               ONML
                               HIJK
                                q0 ,u0          / ONML
                                                  HIJK
                                                   q1 ,u1
                                     V
                                 a0

                                     
                                       qe e
                                     GFED
                                     @ABC
                                             ee
                                               ee(a1 ,u0 u1 )
                            (a0 ,u0 u0 )          ee
                                                   ee
                                       q0
                                     GFED
                                     @ABC                q1
                                                      / GFED
                                                        @ABC
                                           T (a1 ,u1 )
                                    (a0 ,u0 )
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                      104




         – Observe que o estado qe introduzido ´ referenciado
                                                e
           apenas na primeira transi¸ao executada. Seu
                                     c˜
           objetivo ´ garantir a gera¸ao da sa´ referente ao
                    e                c˜       ıda
           estado inicial q0 de MO;
         – Provar por indu¸ao.
                          c˜
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                105




         – Teorema: A m´quina de Moore simula a m´quina
                       a                         a
           de Mealy;
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                    106



     Exerc´
          ıcios:
      1. Construa um AF M que aceite:
        (a) todas as senten¸as em {0, 1}+ que apresentem
                           c
            cada “1” seguido imediatamente de dois zeros;
        (b) todas as senten¸as em {a, b}∗ de modo que todo
                           c
            “a” apare¸a entre dois “b”;
                      c
        (c) todas as senten¸as de {a, b}+ de modo que o
                           c
            ultimo s´
            ´       ımbolo seja “b” e o n´mero de s´
                                          u        ımbolos
            “a” seja par.
      2. Construa a gram´tica regular equivalente a cada um
                        a
         dos autˆmatos do exerc´ anterior.
                o              ıcio
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                  107




      3. Defina a express˜o regular que representa valores
                        a
         “redondos” em reais (Ex: R$1,00 ou R$200,00 ou
         R$1.000.000,00 ou R$3.000,00).
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO               108




      4. Seja a seguinte gram´tica regular:
                             a

                       S → 0S|1S|0A|0C|1B
                       A → 0A|0
                       B → 1B|1
                       C → 0A|0

         Pede-se:
        (a) o AFND M tal que T (M ) = L(G);
        (b) o AFD M tal que T (M ) = T (M );
        (c) M tal que T (M ) = T (M ) e M seja m´
                                                ınimo.
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO   109



      5. Seja G definida por:

                           S → aB|aD
                           B → bB|bC
                           C → cC|cD
                           D → d
                           E → aB|a

         Pede-se:
        (a) o AF M tal que T (M ) = L(G);
        (b) Determine T (M );
        (c) Minimize M .
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                      110




      6. Seja T (M ) = {abn cm d|0 ≤ n ≤ 2 ∧ m ≥ 1}. Pede-se:
        (a) construa M ;
        (b) construa G tal que L(G) = T (M ).
      7. Construa o AF e a gram´tica regular equivalentes a
                               a
         cada uma das ER a seguir:
        (a) a(b|ca)d∗ (a|b)+ ;
        (b) (a(b|ca)∗ (b|c)a∗ )+ .
2       ´                     ˆ
    GRAMATICAS REGULARES E AUTOMATO FINITO                         111




      8. Projete uma m´quina de Moore que recebendo um
                        a
         valor em reais (ex: R$10.000,00) converta para
         d´lares (suponha rela¸ao 1-1 entre dolar e real – logo,
          o                   c˜
         US$10,000.00).
      9. O mesmo que o exerc´ anterior, usando m´quina
                            ıcio                a
         de Mealy.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA         112


     3    Gram´tica Livre de Contexto e
               a
          Autˆmato de Pilha
             o
       • As GLC tem grande importˆncia pois atrav´s delas
                                    a              e
         podemos definir a maioria das estruturas de
         linguagens de programa¸ao;
                               c˜
       • As linguagens livres de contexto representam um
         conjunto mais amplo de linguagens que o das
         linguagens regulares;
       • O autˆmato de pilha (PDA) ´ um autˆmato mais
              o                    e       o
         “poderoso” que o AF;
       • AF    PDA (PDA simula AF e AF n˜o simula PDA);
                                        a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA              113




       • Exten¸˜o da defini¸˜o de GLC para permitir
              ca          ca
         produ¸˜es na forma A → ε (chamadas ε-produ¸˜es);
              co                                   co
       • Nova defini¸˜o: P = {A → β|A ∈ N ∧ β ∈ (N ∪ T )∗ };
                   ca
       • Uma GLC ´ ε-livre quando n˜o possui ε-produ¸oes
                     e                 a                c˜
         ou quando possui apenas S → ε, onde S ´ o s´
                                                  e    ımbolo
         inicial da gram´tica, e S n˜o aparece do lado direito
                        a           a
         de nenhuma regra de produ¸ao;
                                     c˜
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA         114




         ´
       • Arvores de Deriva¸˜o para GLC’s – s˜o
                           ca                 a
         representa¸oes gr´ficas para as deriva¸oes da GLC
                   c˜     a                   c˜
         (formam uma estrutura hier´rquica);
                                    a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                     115



       • Seja G = (N, T, P, S) uma GLC. Uma ´rvore ´ uma
                                            a      e
         a
         ´rvore de deriva¸˜o para G se:
                         ca
         1. todo nodo tem um r´tulo que ´ um s´
                              o         e     ımbolo de V ;
         2. o r´tulo da raiz ´ S;
               o             e
         3. se um nodo A tem um ou mais descendentes, ent˜o
                                                         a
            A ´ um elemento de N ;
               e
         4. se A1 , A2 , . . . , An s˜o descendentes diretos de A, da
                                     a
            esquerda para a direita, ent˜o    a
            A → A1 A2 · · · An ∈ P ;
         5. se D ´ a unica sub-´rvore da raiz e tem r´tulo ε,
                 e ´           a                     o
            ent˜o S → ε ∈ P .
               a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                   116


       • Exemplo: G = ({S, A}, {a, b}, P, S),
         P = {S → a|aAS, A → SbA|SS|ba}. Deriva¸˜o:
                                               ca
         S ⇒ aAS ⇒ aSbAS ⇒ aabAS ⇒ aabbaS ⇒ aabbaa.
         ´
         Arvore de deriva¸˜o:
                         ca

                                   Sd
                                 
                                    d     dd
                                          dd
                                            d
                       a             Ac             Sb
                                        cc          b  bb
                                          cc             bb
                                             cc             bb
                           
                       S             b              Ab            a
                                                     bb
                                                     bb
                                                        bb
                                                          b
                       a             b                            a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA        117




       • Profundidade da ´rvore de deriva¸˜o ´ o
                         a               ca e
         comprimento do maior caminho entre a raiz e um
         nodo terminal. No exemplo anterior ´ 3;
                                            e
       • Limite de uma ´rvore de deriva¸˜o ´ a seq¨ˆncia
                          a               ca e       ue
         formada pela concatena¸˜o, da esquerda para a
                                  ca
         direita, das folhas da ´rvore de deriva¸˜o;
                                a               ca
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA              118


       • Deriva¸ao mais ` esquerda e mais ` direita – a ´rvore
               c˜        a                 a            a
         de deriva¸˜o ignora varia¸oes na ordem em que os
                  ca              c˜
         s´
          ımbolos s˜o substituidos na deriva¸˜o. Assim,
                   a                        ca

                   G = ({E}, {+, ∗, (, ), −, id}, P, E)

                P = {E → E + E|E ∗ E|(E)| − E|id}
         tomando a senten¸a −(id + id) podemos deriva-la das
                           c
         duas seguintes formas:
         1. E ⇒ −E ⇒ −(E) ⇒ −(E + E) ⇒ −(id + E) ⇒
            −(id + id);
         2. E ⇒ −E ⇒ −(E) ⇒ −(E + E) ⇒ −(E + id) ⇒
            −(id + id);
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                    119


         Ambas correspondem a mesma ´rvore de deriva¸˜o:
                                    a               ca

                                    Ed
                                ~         dd
                             ~~~            dd
                           ~~                 dd
                          ~
                      −                             Ec
                                                      cc
                                                         cc
                                                          cc
                                                           c
                                    (               Ec            )
                                                       cc
                                                       cc
                                                          cc
                                                            c
                                    E               +             E


                                    id                            id
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA            120




       • Deriva¸ao mais ` esquerda: s´
               c˜       a            ımbolo substituido ´
                                                        e
         sempre o n˜o-terminal mais ` esquerda na forma
                     a              a
         sentencial;
       • Deriva¸ao mais ` direita: s´
               c˜       a           ımbolo substituido ´
                                                       e
         sempre o n˜o-terminal mais ` direita na forma
                     a                a
         sentencial;
       • Nas duas deriva¸oes mostradas a pouco, a primeira ´
                        c˜                                 e
         mais ` esquerda e a segunda mais ` direita;
              a                           a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA             121




       • Exemplo: id + id ∗ id
         Deriva¸ao mais ` esquerda: E ⇒ E + E ⇒ id + E ⇒
               c˜       a
         id + E ∗ E ⇒ id + id ∗ E ⇒ id + id ∗ id
         Deriva¸ao mais ` direita: E ⇒ E + E ⇒
               c˜       a
         E + E ∗ E ⇒ E + E ∗ id ⇒ E + id ∗ id ⇒ id + id ∗ id
         Observa¸ao: se w ∈ L(G) e G ´ uma GLC, ent˜o w
                 c˜                    e              a
         tem pelo menos uma ´rvore de deriva¸ao e,
                             a                c˜
         correspondendo a esta ´rvore existe uma s´ deriva¸˜o
                               a                  o       ca
         mais ` esquerda e uma s´ deriva¸ao mais ` direita.
              a                  o       c˜       a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                                         122



       • Uma GLC ´ amb´gua se para a mesma senten¸a
                    e    ı                       c
         existe mais de uma ´rvore de deriva¸˜o;
                            a               ca
         Exemplo: id + id ∗ id

                         Ea                                                     E
                     Ñ        aa                                              Ñ aaa
                   ÑÑ           aa                                         ÑÑ
                                                                             Ñ     aa
                 ÑÑ               aa                                     ÑÑ          aa
               ÑÑ                                                       Ñ
          E              +              Ea                             Ea       ∗       E
                                    Ñ       aa                       Ñ   aa
                                  ÑÑ          aa                   ÑÑ      aa
                                ÑÑ              aa               ÑÑ          aa
                              ÑÑ                               ÑÑ
          id             E              ∗            E    E          +       E        id


                         id                          id   id                 id
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA        123




       • Uma linguagem inerentemente amb´gua ´ aquele em
                                         ı   e
         que todas as GLC que a geram s˜o amb´
                                       a     ıguas.
         Exemplo: L = {an bn cm dm |n ≥ 1 ∧ m ≥
         1} {an bm cm dn |n ≥ 1 ∧ m ≥ 1}
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA          124




         Representada pela seguinte gram´tica:
                                        a

                G = ({S, X, Y, Z, W }, {a, b, c, d}, P, S)

                           S → XY |Z
                           X → ab|aXb
                           Y   → cd|cXd
                           Z → aW d|aZd
                          W → bc|bW c
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                                                 125




         Exemplo de deriva¸ao: abcd
                          c˜

                                          SV                                       S
                                      Ö    VV
                                   ÖÖÖ       VV
                                 ÖÖ            VV
                                Ö
                        X                       YU                                 ZV
                       ÖÖ                               UU                    ÖÖ       VV
                     ÖÖ                                   UU                ÖÖ           VV
                                                            UU                             VV
                  ÖÖÖ                                                    ÖÖÖ
              a             b                       c            d   a         WV               d
                                                                              ÖÖ       VV
                                                                             Ö           VV
                                                                           ÖÖ              VV
                                                                         ÖÖ
                                                                     b                          c
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA          126




       • Transforma¸oes de GLC – tem o objetivo de
                     c˜
         simplifica¸˜o e prepara¸˜o para aplica¸˜es
                   ca            ca           co
         posteriores. Observa¸˜o: a gram´tica transformada
                              ca          a
         deve ser equivalente ` original.
                              a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA             127




       • Elimina¸˜o de s´
                ca      ımbolos in´teis
                                  u
         Um s´ımbolo ´ in´til se ele n˜o aparece na deriva¸ao
                     e u              a                   c˜
         de nenhuma senten¸a.
                            c
         est´ril n˜o gera nenhuma seq¨ˆncia de terminais
            e     a                   ue
            pertencente a uma senten¸a;
                                    c
         inalcan¸´vel n˜o aparece em nenhuma forma
                 ca      a
            sentencial da gram´tica.
                              a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA              128




       • Determina¸˜o do conjunto de s´
                  ca                  ımbolos f´rteis:
                                               e
         1. Construir o conjunto N0 = ∅ e fazer i = 1;
         2. Repetir
          (a) Ni = {A|A → α ∈ P ∧ α ∈ (Ni−1 ∪ T )∗ };
          (b) i = i + 1;
            at´ que Ni = Ni−1 ;
              e
         3. Ni ´ o conjunto de s´
               e                ımbolos f´rteis.
                                         e
       • Observa¸ao: se o s´
                c˜           ımbolo inicial n˜o fizer parte dos
                                             a
         s´
          ımbolos f´rteis, ent˜o a linguagem gerada pela
                   e          a
         gram´tica ´ vazia.
             a      e
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA            129



       • Exemplo: G = ({S, A, B, C, D}, {a, b, c, d}, P, S),
         P = {S → aA, A → a|bB, B → b|dD, C → cC|c, D →
         dD}. Solu¸˜o:
                  ca
         1. N0 = ∅;
         2. N1 = {A, B, C};
         3. N2 = {S, A, B, C};
         4. N3 = {S, A, B, C} = N2 .
         Conjunto dos s´
                       ımbolos f´rteis: {S, A, B, C}.
                                e
         Gram´tica simplificada:
             a
         G = ({S, A, B, C}, {a, b, c}, P , S),
         P = {S → aA, A → a|bB, B → b, C → cC|c}.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA             130




       • Determina¸˜o do conjunto de s´
                  ca                  ımbolos alcan¸aveis:
                                                   c´
         1. Construir o conjunto V0 = {S} (S=s´
                                              ımbolo inicial)
            e fazer i = 1;
         2. Repetir
          (a) Vi = {X|∃A → αXβ ∈ P ∧ A ∈ Vi−1 ∧ α, β ∈
              (N ∪ T )∗ ∧ X ∈ V } Vi−1 ;
          (b) i = i + 1;
            at´ que Vi = Vi−1 ;
              e
         3. Vi ´ o conjunto de s´
               e                ımbolos alcan¸´veis.
                                             ca
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA           131


       • Exemplo: G do exemplo anterior.
         G = ({S, A, B, C}, {a, b, c}, P , S),
         P = {S → aA, A → a|bB, B → b, C → cC|c}.
         Solu¸˜o:
             ca
         1. V0 = {S};
         2. V1 = {a, A}      V0 = {S, a, A};
         3. V2 = {a, b, B}     V1 = {S, a, A, b, B};
         4. V3 = {b}    V2 = {S, a, A, b, B} = V2 .
         Conjunto de s´
                      ımbolos alcan¸aveis: {S, A, B, a, b}.
                                   c´
         Gram´tica simplificada:
             a
         G = ({S, A, B}, {a, b}, P , S),
         P = {S → aA, A → a|bB, B → b}.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                132



       • Transforma¸ao de GLC qualquer em GLC ε-livre:
                   c˜
         1. Reunir em um conjunto os n˜o-terminais que
                                       a
            derivam direta ou indiretamente a senten¸a vazia:
                                                    c
            Ne = {A|A ∈ N ∧ A ⇒+ ε};
         2. Construir o conjunto de regras P como segue:
          (a) incluir em P todas as regras de P , com excess˜o a
              daquelas da forma A → ε;
          (b) para cada ocorrˆncia de um s´
                                e            ımbolo Ne do lado
              direito de alguma regra de P , incluir em P mais
              uma regra, substituindo este s´ ımbolo por ε. Isto
              ´, para cada regra de P tipo A → αBβ, B ∈ Ne
              e
              e α, β ∈ V ∗ , incluir em P a regra A → αβ;
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA            133




         3. Se S ∈ Ne , adicionar a P as regras S → S e
            S → ε, incluindo este novo n˜o-terminal S em
                                          a
            N = N ∪ {S }. Caso contr´rio, trocar os nomes de
                                       a
            S por S e de N por N ;
         4. A nova gram´tica ser´ definida por:
                         a       a
            G = (N , T, P , S ).
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA        134




       • Exemplos:
         1. P : S → aB, B → bB|ε. Solu¸˜o: Ne = {B} e
                                      ca
            P : S → aB|a, B → bB|b;
         2. P : S → bDCe, D → dD|ε, C → cC|ε. Solu¸ao:
                                                  c˜
            Ne = {D, C} e
            P : S → bDCe|bCe|bDe|be, D → dD|d, C → cC|c;
         3. P : S → aS|ε. Solu¸˜o: Ne = {S} e
                              ca
            P : S → S|ε, S → aS|a.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA              135


       • Remo¸˜o de Produ¸˜es Simples – produ¸˜es simples
               ca          co                co
         s˜o produ¸˜es na forma A → B, onde A, B ∈ N :
          a       co
         1. Transformar a GLC em GLC ε-livre, se necess´rio;
                                                       a
         2. Para todo n˜o-terminal de N , construir um
                       a
            conjunto com os n˜o-terminais que ele pode derivar
                             a
            em zero ou mais passos. Isto ´, ∀A ∈ N , construir
                                         e
            NA = {B|A ⇒∗ B};
         3. Se B → α ∈ P e n˜o ´ produ¸˜o simples, adicione a
                            a e       ca
            P as produ¸oes A → α para todo A tal que
                      c˜
            B ∈ NA ;
         4. a GLC equivalente sem produ¸oes simples ´
                                       c˜           e
            G = (N, T, P , S).
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA         136




       • Exemplos:
         1. P : S → bS|A, A → aA|a. Solu¸˜o: NS = {S, A},
                                        ca
            NA = {A}, e P : S → bS|aA|a, A → aA|a;
         2. P : S → aSb|A, A → aA|B, B → bBc|bc. Solu¸˜o:
                                                     ca
            NS = {S, A, B}, NA = {A, B}, NB = {B}, e
            P : S → aSb|aA|bBc|bc, A → aA|bBc|bc,
            B → bBc|bc.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                137


       • Fatora¸ao de GLC
               c˜
         Uma GLC est´ fatorada se ela ´ determin´
                       a                e           ıstica, isto
         ´, n˜o possui produ¸˜es cujo lado direito inicie com o
         e a                co
         mesmo conjunto de s´ımbolos ou com s´ ımbolos que
         gerem seq¨ˆncias que iniciem com o mesmo conjunto
                   ue
         de s´
             ımbolos. Por exemplo, uma gram´tica fatorada
                                              a
         n˜o poderia apresentar as seguintes regras:
          a

                             A → aB|aC ,

         pois ambas inicial com o terminal a.
         Outro exemplo de gram´tica n˜o-fatorada ´:
                              a      a           e

                     S → A|B     A → ac B → ab .
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA               138



       • Para fatorar:
         1. as produ¸˜es que apresentam n˜o-determinismo
                     co                  a
            direto, da forma A → αβ|αγ ser˜o substituidas por
                                          a

                                 A → αA
                                A   → β|γ

            sendo A um novo n˜o-terminal;
                             a
         2. o n˜o-determinismo indireto ´ retirado fazendo, nas
               a                         e
            regras de produ¸ao, as deriva¸˜es necess´rias para
                            c˜           co         a
            torna-lo um n˜o-determinismo direto, resolvido com
                          a
            o passo anterior.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA          139




         Exemplos:
         1. P : S → aA|aB, A → aA|a, B → b. Solu¸ao:
                                                c˜
            P : S → aS , S → A|B, A → aA , A → A|ε, B → b;
         2. P : S → Ab|ab|baA, A → aab|b. Solu¸ao:
                                              c˜
            (n˜o-determinismo indireto)
              a
            P : S → aabb|bb|ab|baA, A → aab|b e
            P : S → aS |bS , S → abb|b, S → b|aA, A → aab|b.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA         140




       • Fatora¸ao ´ importante pois na implementa¸˜o de
                 c˜ e                               ca
         um compilador, o mesmo deve seguir uma gram´tica
                                                        a
         que n˜o apresente n˜o-determinismo pois, caso
               a             a
         contr´rio, no processo de reconhecimento haveria
               a
         “retornos” (backtracking) que acabam reduzindo a
         eficiˆncia do algoritmo de reconhecimento.
             e
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA         141




       • Teorema: Toda LLC sem ε pode ser definida por
         uma gram´tica que n˜o cont´m s´
                   a         a      e   ımbolos in´teis,
                                                  u
         ε-produ¸˜es, nem produ¸˜es simples.
                co             co
       • Prova: Conseq¨ˆncia dos algoritmos apresentados.
                      ue
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA               142




       • Elimina¸˜o da Recurs˜o ` Esquerda
                ca           a a
         Um n˜o-terminal A ´ recursivo se A ⇒+ αAβ,
               a               e
         α, β ∈ V ∗ . Se α = ε, ent˜o A ´ recursivo ` esquerda.
                                   a    e           a
         Se β = ε, ´ recursivo ` direita. A recursividade pode
                     e           a
         ser direta ou indireta.
         Uma gram´tica ´ recursiva ` esquerda se possui pelo
                     a     e         a
         menos um n˜o-terminal recursivo ` esquerda. Se
                       a                    a
         possui pelo menos um n˜o-terminal recursivo `
                                 a                   a
         direita, ela ´ chamada recursiva ` direita.
                      e                   a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA        143




       • A importˆncia da recursividade ` esquerda ´ que
                   a                     a          e
         alguns tipos de compiladores podem executar o
         processo de reconhecimento como chamadas de
         rotinas (procedimentos ou fun¸˜es). Assim, uma
                                      co
         gram´tica recursiva ` esquerda, tal como por
              a              a
         exemplo A → Aa|a, acaba gerando um la¸o infinito
                                                 c
         A ⇒ Aa ⇒ Aaa ⇒ Aaaa ⇒ · · · e o processo de
         reconhecimento n˜o finaliza nunca.
                           a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                       144




       • Algoritmo:
         1. recurs˜es diretas: substituir cada regra
                  o
            A → Aα1 |Aα2 | · · · |Aαn |β1 |β2 | · · · |βm , onde nenhum
            βi come¸a por A, por:
                    c

                           A → β1 A |β2 A | · · · |βm A
                          A    → α1 A |α2 A | · · · |αn A |ε
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                    145


         2. recurs˜es indiretas:
                  o
          (a) ordene os n˜o-terminais de G em uma ordem
                                 a
              qualquer (A1 , A2 , . . . , An );
          (b)
              para i de 1 at´ n fa¸ae     c
              para j de 1 at´ (i − 1) fa¸a
                                    e          c
              troque Ai → Aj γ por Ai → δ1 γ|δ2 γ| · · · |δk γ, onde
              δ1 , δ2 , . . . , δk s˜o os lados direitos das
                                    a
              Aj -produ¸˜es (ou seja, Aj → δ1 | · · · |δk );
                              co
              fim para
              elimine as recurs˜es diretas das Ai -produ¸oes;
                                       o                     c˜
              fim para.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA            146




       • Exemplo: P : S → Aa, A → Sb|cA|a. Solu¸˜o:
                                               ca
         (A1 = S, A2 = A), n = 2, e
         1. i = 1 (n˜o faz j pois o la¸o ´ de 1 at´ 0);
                    a                 c e         e
            Eliminando as recurs˜es diretas das S-produ¸˜es:
                                o                      co
            n˜o faz nada (pois n˜o tem);
             a                  a
         2. i = 2 e j = 1:
            Trocar produ¸oes tipo A → Sγ:
                        c˜
            P : S → Aa, A → Aab|cA|a;
            Eliminar as recurs˜es diretas das A-produ¸oes:
                              o                      c˜
            P : S → Aa, A → cAA |aA , A → abA |ε.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA         147




       • Exerc´ıcio: Elimine a recurs˜o ` esquerda da GLC
                                     a a
         P : S → Aa|b, A → Bb|a, B → Sb|b.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA            148




       • Forma Normal de Chomsky (FNC)
         A FNC ´ uma forma canˆnica. Uma GLC est´ na
                e                 o                    a
         FNC se ela ´ ε-livre e apresenta todas as produ¸oes
                    e                                    c˜
         da forma
                       A → BC     ou A → a ,
         onde A, B, C ∈ N e a ∈ T .
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA          149




       • Teorema: Toda LLC ε-livre pode ser gerada por uma
         GLC na FNC.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA             150




         Para converter uma GLC G = (N, T, P, S) ε-livre
         para a FNC:
         1. obter G = (N , T, P , S) a partir de G, removendo
            de G as produ¸oes simples, de modo que
                         c˜
            L(G ) = L(G);
         2. nas regras de G em que o lado direito apresenta
            mais de um termo, substituir cada terminal a ∈ T
            por um novo n˜o-terminal Aa , incluindo para cada
                          a
            destes novos n˜o-terminais uma nova regra Aa → a,
                          a
            resultando em G = (N , T, P , S);
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                  151



         3. substituir cada regra do tipo

                          A → B1 B2 · · · Bm ,   m≥3

            onde A, B1 , . . . Bm s˜o n˜o-terminais, pelo conjunto
                                   a a
            de regras:

                                  A → B 1 B1
                                 B1 → B 2 B2
                                    .
                                    .
                                    .
                              Bm−2 → Bm−1 Bm

            onde B1 , B2 , . . . , Bm−2 s˜o novos n˜o-terminais;
                                         a         a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA    152




         4. a gram´tica na FNC ´ G = (N , T, P , S).
                  a            e
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA   153



       • Exemplo: Obtenha a FNC.

                         P : S → A|ABA
                            A → aA|a
                            B → bB|b

         Solu¸˜o:
             ca
         1.

                          P : S → aA|a|ABA
                              A → aA|a
                              B → bB|b
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA   154




         2.

                         P : S → Aa A|a|ABA
                              A → Aa A|a
                              B → Ab B|b
                             Aa → a
                             Ab → b
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA   155




         3.

                          P   : S → Aa A|a|AB
                              B   → BA
                               A → Aa A|a
                              B → Ab B|b
                              Aa → a
                              Ab → b
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA          156




       • Forma Normal de Greibach (FNG)
         A FNG ´ tamb´m uma forma canˆnica. Uma GLC
                  e    e                   o
         est´ na FNG se ela ´ ε-livre e apresenta todas as
            a               e
         produ¸˜es na forma:
               co

                                A → aα ,

         onde A ∈ N , a ∈ T , e α ∈ N ∗ .
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA          157




       • Teorema: Toda LLC ε-livre pode ser gerada por uma
         GLC na FNG.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA             158


       • Algoritmo:
         1. achar G = (N , T, P , S) tal que L(G ) = L(G) e G
            est´ na FNC;
               a
         2. ordenar os n˜o-terminais de G em uma ordem
                        a
            qualquer N = (A1 , A2 , . . . , Am );
         3. modificar as regras de P de modo que, se
            Ai → Aj γ ∈ P , ent˜o j  i;
                               a
         4. a gram´tica obtida no passo anterior, G ,
                    a
            apresentar´ todas as regras de Am com o lado
                        a
            direito iniciando por terminal. Por substitui¸˜es
                                                         co
            sucessivas dos primeiros termos das regras Ai
            anteriores, coloca-se estas tamb´m na mesma
                                            e
            forma;
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA             159




         5. se no item 3 tiverem sido inclu´ıdos novos
            n˜o-terminais Bi (para retirar recurs˜es `
             a                                    o a
            esquerda), fazer tamb´m para as regras
                                 e
            correspondentes a estes, as devidas substitui¸oes
                                                         c˜
            dos primeiros termos (que ser˜o sempre terminais
                                          a
            ou Ai );
         6. A G   est´ na FNG.
                     a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA        160




       • Exemplo: Obtenha a FNG.

                          P : S → AS|a
                                A → SA|b

         Solu¸˜o:
             ca
         1. G j´ est´ na FNC;
               a    a
         2. Renomear os n˜o-terminais: S = A1 e A = A2 ;
                         a

                            P : A1 → A2 A1 |a
                                 A2 → A1 A2 |b
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA           161




         3. se Ai → Aj γ ∈ P , ent˜o j  i. A unica regra a
                                  a           ´
            modificar ´:
                     e
                                A2 → A1 A2 .
            Substituindo A1 nesta regra:

                            A2 → A2 A1 A2 |aA2 |b .
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                162




            Retirando a recurs˜o ` esquerda de
                              a a
                         A        A   α1       β1        β2

                         A2 → A2 A1 A2 | aA2 | b ,

            obteremos:

                      P : A1 → A2 A1 |a
                             A        β1   A        β2        A

                          A2     → aA2 B2 | b                 B2
                             A        α1   A

                          B2     → A1 A2 B2 |ε
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA    163




            Retirando o ε por substitui¸oes:
                                       c˜

                       P : A1 → A2 A1 |a
                            A2 → aA2 B2 |bB2 |aA2 |b
                            B2 → A1 A2 B2 |A1 A2
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                  164




         4. Fazendo as substitui¸oes finais para tornar todos os
                                 c˜
            lados direitos na forma A → aα, A ∈ N , a ∈ T e
            α ∈ N ∗:

                P   : A1 → aA2 B2 A1 |bB2 A1 |aA2 A1 |bA1 |a
                     A2 → aA2 B2 |bB2 |aA2 |b
                     B2 → aA2 B2 A1 A2 B2 |bB2 A1 A2 B2 |
                              aA2 A1 A2 B2 |bA1 A2 B2 |aA2 B2 |
                              aA2 B2 A1 A2 |bB2 A1 A2 |aA2 A1 A2 |
                              bA1 A2 |aA2
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA             165




       • Gram´tica de Operadores – ´ uma GLC que n˜o
               a                      e                a
         possui produ¸oes A → αBCβ, onde A, B, C ∈ N , e
                       c˜
         α, β ∈ V ∗ . Ou seja, uma GLC em que n˜o aparecem
                                                 a
         dois n˜o-terminais juntos em um lado direito. Ex:
               a
         P : E → E + E|E − E|E ∗ E|id. Importˆncia:
                                                 a
         express˜es aritm´ticas de linguagens de programa¸˜o.
                 o         e                             ca
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA   166




       • Autˆmato de Pilha
            o
         – M´quina abstrata que reconhece as LLC;
            a
         – Chamado tamb´m de “Push-down Automata”
                       e
           (PDA);
         – Consiste de:
            ∗ controle finito;
            ∗ fita de entrada;
            ∗ pilha.
         – Caracter´
                   ıstica: ser n˜o-determin´
                                a          ıstico.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                167




                             Fita de entrada

                         0     1    0     0    1   0   1
              Cabeçote



                                                            Z
                                        Controle
                                         Finito             Y
                                                            X
                                                           Pilha
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA          168




       • Movimentos do PDA:
         1. Um s´ımbolo ´ lido e o cabe¸ote avan¸a para o
                        e              c        c
            pr´ximo s´
              o      ımbolo;
         2. “ε-move” – movimento vazio, no qual o cabe¸ote
                                                       c
            n˜o se move, n˜o importando qual ´ o s´
             a            a                  e    ımbolo
            que est´ sendo apontado na fita de entrada.
                   a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA            169




       • Linguagem Aceita por um PDA
         Dois tipos de reconhecimento:
         1. pilha vazia;
         2. estado final.
         Observa¸oes:
                c˜
         – No reconhecimento por pilha vazia o conjunto de
           estados finais ´ irrelevante;
                         e
         – Os dois tipos s˜o equivalentes (resultam na mesma
                          a
           classe de linguagens);
         – Classe reconhecida: LLC.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA          170


       • Defini¸˜o Formal de PDA
              ca

                       M = (K, Σ, Γ, δ, q0 , z0 , F )

         Onde:
         K conjunto finito de estados;
         Σ alfabeto finito de entrada;
         Γ alfabeto finito da pilha;
         δ : K × (Σ ∪ {ε}) × Γ → Partes(K × Γ∗ ) fun¸˜o de
                                                    ca
             transi¸ao (mapeamentos);
                   c˜
         q0 ∈ K estado inicial;
         z0 ∈ Γ s´
                 ımbolo inicial da pilha;
         F ⊆ K conjunto finito de estados finais.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                           171




       • Tipos de mapeamentos:
         1. δ(q, a, z) = {(p1 , γ1 ), (p2 , γ2 ), . . . , (pm , γm )}, onde
            q, p1 , . . . , pm ∈ K, a ∈ Σ, z ∈ Γ, e γ1 , . . . , γm ∈ Γ∗ .
            Significado:
            – M est´ no estado p, com a na entrada e z no
                    a
              topo da pilha;
            – M pode mudar para o estado pi , 1 ≤ i ≤ m,
              substituindo z por γi no topo da pilha;
            – M avan¸a o cabe¸ote para o pr´ximo s´
                      c        c             o       ımbolo.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                      172




         2. δ(q, ε, z) = {(p1 , γ1 ), (p2 , γ2 ), . . . , (pm , γm )}.
            Significado:
            – M est´ no estado p, com z no topo da pilha;
                    a
            – n˜o interessa o que est´ na fita de entrada;
               a                     a
            – M passa ao estado pi , 1 ≤ i ≤ m, trocando z por
              γi no topo da pilha;
            – o cabe¸ote n˜o se move (movimento vazio);
                     c     a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA              173




       • Dependendo de |γ| temos as seguintes poss´
                                                  ıveis a¸˜es
                                                         co
         do PDA em rela¸˜o ` pilha:
                       ca a
         1. |γ| ≥ 2 – troca o s´
                               ımbolo no topo da pilha e
            empilha outros (a pilha cresce);
         2. |γ| = 1 – troca o s´
                               ımbolo no topo (pilha permanece
            com o mesmo tamanho);
         3. |γ| = 0 (γ = ε) – desempilha o s´
                                            ımbolo do topo (a
            pilha decresce de tamanho).
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA             174




       • Conven¸ao: costuma-se representar a pilha na
                c˜
         horizontal, com o topo da pilha sendo aquele s´
                                                       ımbolo
         que est´ mais ` esquerda.
                a      a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                175




       • Um autˆmato de pilha ´ determin´
               o              e         ıstico se:
         1. para qualquer q ∈ K, z ∈ Γ e a ∈ Σ ∪ {ε}, δ(q, a, z)
            nunca cont´m mais de um elemento;
                      e
         2. para cada q ∈ K e z ∈ Γ, sempre que δ(q, ε, z) = ∅
            ent˜o δ(q, a, z) = ∅ para todo a ∈ Σ.
               a
         Observa¸ao: o segundo item impede que ocorra a
                 c˜
         escolha entre um movimento envolvendo um s´ımbolo
         na entrada e um “ε-move”.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                      176


       • Exemplo: PDA que aceita, por pilha vazia,
                         L = {wcwR |w ∈ {0, 1}∗ } ,
         onde wR ´ a seq¨encia reversa de w.
                 e      u

              M = ({q1 , q2 }, {0, 1, c}, {z0 , z, u}, δ, q1 , z0 , ∅)
            δ(q1 , 0, z0 ) = {(q1 , zz0 )} δ(q1 , 0, z) = {(q1 , zz)}
            δ(q1 , 0, u) = {(q1 , zu)} δ(q1 , c, z0 ) = {(q2 , z0 )}
              δ(q1 , c, z) = {(q2 , z)} δ(q1 , c, u) = {(q2 , u)}
              δ(q2 , 0, z) = {(q2 , ε)} δ(q2 , ε, z0 ) = {(q2 , ε)}
            δ(q1 , 1, z0 ) = {(q1 , uz0 )} δ(q1 , 1, z) = {(q1 , uz)}
             δ(q1 , 1, u) = {(q1 , uu)} δ(q2 , 1, u) = {(q2 , ε)}
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA            177




       • Chama-se configura¸˜o de um PDA a um par (q, γ)
                            ca
         onde q ∈ K e γ ∈ Γ∗ , significando que o PDA est´ no
                                                        a
         estado q, com γ armazenado na pilha;
       • passagem de uma configura¸˜o para outra:
                                 ca

                         a : (q, zγ)   M   (p, βγ) ,

         onde: a ∈ Σ ∪ {ε}, γ, β ∈ Γ∗ , z ∈ Γ, e
         (p, β) ∈ δ(q, a, z);
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                          178




       • Extendendo para seq¨ˆncias:
                            ue
                                                  ∗
                    a1 a2 · · · an : (q1 , γ1 )   M   (qn+1 , γn+1 ) ,

         onde: a1 , a2 , . . . , an ∈ Σ {ε}, q1 , q2 , . . . , qn+1 ∈ K,
         γ1 , γ2 , . . . , γn+1 ∈ Γ∗ , e ai : (qi , γi ) M (qi+1 , γi+1 ),
         para todo 1 ≤ i ≤ n;
                                      ∗
       • conven¸ao: ε : (q, γ)
               c˜                     M   (q, γ).
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA              179




       • A descri¸˜o instantˆnea de um PDA ´ formada pelo
                  ca         a                e
         seu estado atual, o conte´do da pilha e o restante da
                                  u
         seq¨ˆncia de entrada a ser lida. Representa a
             ue
         situa¸˜o do reconhecimento em um determinado
              ca
         instante;
       • Conven¸ao:
               c˜
                             (q, bc, xyzz0 ) ,
         significando que o autˆmato est´ no estado q, com bc
                               o         a
         restando na entrada (cabe¸ote esta sobre o s´
                                   c                 ımbolo
         b), e a pilha cont´m xyzz0 , com x no topo.
                           e
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                180


       • Exemplo: reconhecimento da senten¸a 01c10:
                                          c

                (q1 , 01c10, z0 )      (q1 , 1c10, zz0 )
                                       (q1 , c10, uzz0 )
                                       (q2 , 10, uzz0 )
                                       (q2 , 0, zz0 )
                                       (q2 , ε, z0 )
                                       (q2 , ε, ε) (pilha vazia)

         Produ¸˜es usadas: δ(q1 , 0, z0 ) = (q1 , zz0 ),
                 co
         δ(q1 , 1, z) = (q1 , uz), δ(q1 , c, u) = (q2 , u),
         δ(q2 , 1, u) = (q2 , ε), δ(q2 , 0, z) = (q2 , ε),
         δ(q2 , ε, z0 ) = (q2 , ε).
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                         181




       • Linguagem aceita por um PDA
         – T (M ) – linguagem aceita por estado final:
                                           ∗
              T (M ) = {w|w : (q0 , z0 )   M   (q, γ), γ ∈ Γ∗ , q ∈ F } ;

         – N (M ) – linguagem aceita por pilha vazia:
                                                ∗
                  N (M ) = {w|w : (q0 , z0 )    M   (q, ε), q ∈ K} .
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA             182




       • Exemplo: M , n˜o-determin´
                       a          ıstico, aceitando por pilha
         vazia
                    N (M ) = {wwR |w ∈ {0, 1}∗ } .
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                       183


         Solu¸˜o: M = ({q1 , q2 }, {0, 1}, {z0 , z, u}, δ, q1 , z0 , ∅)
             ca
                      δ(q1 , 0, z0 ) = {(q1 , zz0 )}
                      δ(q1 , 1, z0 ) = {(q1 , uz0 )}
                       δ(q1 , 0, z) = {(q1 , zz), (q2 , ε)}
                      δ(q1 , 0, u) = {(q1 , zu)}
                       δ(q1 , 1, z) = {(q1 , uz)}
                      δ(q1 , 1, u) = {(q1 , uu), (q2 , ε)}
                       δ(q2 , 0, z) = {(q2 , ε)}
                      δ(q2 , 1, u) = {(q2 , ε)}
                      δ(q1 , ε, z0 ) = {(q2 , ε)}
                      δ(q2 , ε, z0 ) = {(q2 , ε)}
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA      184




       • Reconhecimento de 001100:

                        0 : (q1 , z0 )   (q1 , zz0 )
                       0 : (q1 , zz0 )   (q1 , zzz0 )
                     1 : (q1 , zzz0 )    (q1 , uzzz0 )
                    1 : (q1 , uzzz0 )    (q2 , zzz0 )
                     0 : (q2 , zzz0 )    (q2 , zz0 )
                       0 : (q2 , zz0 )   (q2 , z0 )
                        ε : (q2 , z0 )   (q2 , ε)
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA            185




       • Esta linguagem n˜o poderia ser reconhecida por um
                           a
         PDA determin´ ıstico. Por que?
       • Diferente do que ocorre com os autˆmatos finitos, em
                                           o
         que AFD ≡ AFND, nos autˆmatos de pilha,
                                    o
         PDA determin´ ıstico ≡ PDA n˜o − determin´
                                      a            ıstico;
       • Isto particiona as LLC em LLC determin´   ısticas e
         n˜o-determin´
          a            ısticas (LLC determin´
                                            ısticas ⊂ LLC
         n˜o-determin´
          a            ısticas).
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                    186


       • Representa¸ao Gr´fica de PDA
                   c˜    a

                                     (a,x)→xx              (b,x)→ε
                         (a,z0 )→xz0
                                            
    (b,x)→ε
                                                                 

                      q0
                   GFED j
                   @ABC
                     89:;
                     ?=                q1
                                      / GFED
                                        @ABC                  q2
                                                           / GFED
                                                             @ABC

                                     (ε,z0 )→ε


         Conven¸ao: (a, w) → z, significando que a ∈ Σ est´
                c˜                                         a
         na entrada, w ∈ Γ est´ no topo da pilha e z ∈ Γ∗ ser´
                              a                              a
         empilhado (se z = ε ent˜o desempilha).
                                a

           δ(q0 , a, z0 ) = {(q1 , xz0 )} δ(q1 , a, x) = {(q1 , xx)}

              δ(q1 , b, x) = {(q2 , ε)} δ(q2 , b, x) = {(q2 , ε)}
                           δ(q2 , ε, z0 ) = {(q0 , ε)}
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA   187




         Linguagem reconhecida:

                       L(M ) = {an bn |n ≥ 0}
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA            188


       • Rela¸˜o entre PDA e LLC: GLC ⇒ PDA e
             ca
         PDA ⇒ GLC;
       • Teorema: Se L ´ uma LLC, ent˜o existe um PDA M
                        e            a
         tal que L = N (M );
       • Algoritmo para construir M :
         1. Colocar G = (N, T, P, S) na FNG. Assumimos que
            ε ∈ L(G);
         2. M = ({q1 }, T, N, δ, q1 , S, ∅). Para cada regra
            A → aγ ∈ P corresponde:

                              δ(q1 , a, A) ⊃ (q1 , γ) ;

       • Provar L(G) = N (M ).
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA             189



       • Exemplo: PDA para reconhecer a linguagem gerada
         pela seguinte gram´tica:
                           a

           G = ({S, A}, {a, b}, {S → aAA, A → bS|aS|a}, S)

         Solu¸˜o:
             ca

                    M = ({q1 }, {a, b}, {S, A}, δ, q1 , S, ∅)

                      δ(q1 , a, S) = {(q1 , AA)}
                      δ(q1 , b, A) = {(q1 , S)}
                      δ(q1 , a, A) = {(q1 , S), (q1 , ε)}
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA      190




       • Teorema: Se L ´ uma linguagem reconhecida por
                       e
         algum PDA ent˜o L ´ LLC;
                       a   e
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                                 191


       • Algoritmo para construir G: Seja
         M = (K, Σ, Γ, δ, q0 , z0 , ∅). Ent˜o, G = (N, Σ, P, S),
                                           a
         onde:
         N conjunto de objetos na forma [q, A, p], q, p ∈ K e
           A ∈ Γ, unido com {S};
         P obtido da seguinte forma:
           1. S → [q0 , z0 , q] para cada q ∈ K;
           2. [q, A, p] → a[q1 , B1 , q2 ][q2 , B2 , q3 ] · · · [qm , Bm , qm+1 ]
              para cada q, q1 , q2 , . . . , qm+1 ∈ K, onde p = qm+1 ,
              a ∈ Σ ∪ {ε}, A, B1 , B2 , . . . , Bm ∈ Γ, tal que
              δ(q, a, A) ⊃ (q1 , B1 B2 · · · Bm ). Se m = 0 ent˜o          a
              q1 = p, δ(q, a, A) ⊃ (p, ε) e a produ¸˜o ´       ca e
              [q, A, p] → a.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA             192




       • Exemplo: Seja
         M = ({q0 , q1 }, {0, 1}, {X, z0 }, δ, q0 , z0 , ∅) e

                          δ(q0 , 0, z0 ) = {(q0 , xz0 )}
                           δ(q0 , 0, x) = {(q0 , xx)}
                           δ(q0 , 1, x) = {(q1 , ε)}
                           δ(q1 , 1, x) = {(q1 , ε)}
                           δ(q1 , ε, x) = {(q1 , ε)}
                          δ(q1 , ε, z0 ) = {(q1 , ε)}

         Construir G = (N, T, P, S).
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                                                            193


     Solu¸ao:
         c˜

       N = {S, [q0 , x, q0 ], [q0 , x, q1 ], [q1 , x, q0 ], [q1 , x, q1 ], [q0 , z0 , q0 ], [q0 , z0 , q1 ],

                                           [q1 , z0 , q0 ], [q1 , z0 , q1 ]}
                                                   T = {0, 1}
     Produ¸oes:
          c˜
                             S → [q0 , z0 , q0 ]|[q0 , z0 , q1 ]     (pela regra 1)
     Pela regra 2:

                  [q0 , z0 , q0 ] → 0[q0 , x, q0 ][q0 , z0 , q0 ]|0[q0 , x, q1 ][q1 , z0 , q0 ]

     Ou seja,

           q              p            a      q1     B1      B2=               qm+1 =p
                  A
         z}|{ z}|{ z}|{               z}|{ z}|{ z}|{ z }| { z}|{                z}|{
        [ q0 , z0 , q0 ] → 0 [ q0 , x , q0 ][q0 , z0 ,                           q0    ]   para p = q0

                         q        a
                                  A                     q1     B1 B2 =Bm
                       z}|{ z}|{ z}|{                 z}|{ z}|{ z}|{
                    δ( q0 , 0 , z0 ) = {( q0 , x                        z0      )}    (m = 2)
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                                                    194




     Observe que repetimos o lado direito da regra para B2 = q0 e B2 = q1 :
               p=q0                 B2 =q0 B2 =q0                         B2 =q1 B2 =q1
               z}|{                  z}|{     z}|{                         z}|{      z}|{
       [q0 , z0 , q0 ] → 0[q0 , x, q0 ][ q0 , z0 , q0 ]|0[q0 , x, q1 ][ q1 , z0 , q0 ]

     Repetindo, agora para p = q1 (j´ que a regra exige ∀p ∈ K):
                                    a
                  p=q1                                qm+1 =p                              qm+1 =p
                  z}|{                                 z}|{                                 z}|{
         [q0 , z0 , q1 ] → 0[q0 , x, q0 ][q0 , z0 ,     q1    ]|0[q0 , x, q1 ][q1 , z0 ,     q1    ]
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                195




     Exemplificando para casos em que m = 0:
                    q         a           A        p       m=0
                δ( q0 , 1 , x ) = {( q1 , ε )}
               q    A             p           a

             [ q0 , x , q1 ] → 1                  (p = q1 = q1 )

     Outro caso (a = ε):
                    q         a           A        p       m=0
                δ( q1 , ε , x ) = {( q1 , ε )}
                          q           A       p        a
                        [ q1 , x , q1 ] → ε
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                       196


     Solu¸˜o completa:
         ca
                             S    →     [q0 , z0 , q0 ]|[q0 , z0 , q1 ]
                   [q0 , z0 , q0 ] →    0[q0 , x, q0 ][q0 , z0 , q0 ]
                                        |0[q0 , x, q1 ][q1 , z0 , q0 ]
                   [q0 , z0 , q1 ] → 0[q0 , x, q0 ][q0 , z0 , q1 ]
                                        |0[q0 , x, q1 ][q1 , z0 , q1 ]
                    [q0 , x, q0 ] → 0[q0 , x, q0 ][q0 , x, q0 ]
                                        |0[q0 , x, q1 ][q1 , x, q0 ]
                    [q0 , x, q1 ] → 0[q0 , x, q0 ][q0 , x, q1 ]
                                        |0[q0 , x, q1 ][q1 , x, q1 ]
                                        |1
                   [q1 , z0 , q1 ] → ε
                    [q1 , x, q1 ] → 1|ε
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                        197




     Observe que n˜o existem produ¸oes para os
                   a                         c˜
     n˜o-terminais [q1 , x, q0 ] e [q1 , z0 , q0 ]. Assim, simplificando:
      a

                            S → [q0 , z0 , q1 ]
                  [q0 , z0 , q1 ] → 0[q0 , x, q1 ][q1 , z0 , q1 ]
                  [q0 , x, q1 ] → 0[q0 , x, q1 ][q1 , x, q1 ]|1
                  [q1 , z0 , q1 ] → ε
                  [q1 , x, q1 ] → 1|ε
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA   198




       • Provar N (M ) = L(G).
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA           199




     Exerc´
          ıcios:
      1. Sejam G e G abaixo, representadas por seu conjunto
         de produ¸oes:
                 c˜

                       P : S → A2D|D2A|2
                          A → A1|B1|1
                          B → B1|B0
                          C → 0B|0
                          D → 0D|0
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA            200




                        P : S → A|B|AB
                            A → aB|bS|b
                            B → AB|Ba|cB
                            C → AS|AB|b

         Pede-se:
        (a) mostre a deriva¸˜o mais ` esquerda de 00211 para
                           ca       a
            G e a deriva¸˜o mais ` direita de bb para G ;
                        ca       a
        (b) monte as ´rvores de deriva¸ao destas duas
                      a               c˜
            deriva¸˜es;
                  co
        (c) retire todos os s´
                             ımbolos in´teis das duas
                                       u
            gram´ticas.
                  a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA      201




      2. Seja G = ({S}, {a, b}, {S → SaS|b}, S).
        (a) G ´ amb´ ua? (justifique);
              e    ıg¨
        (b) caso seja amb´ ua, existe alguma gram´tica
                          ıg¨                    a
            equivalente que n˜o seja amb´ ua?
                              a          ıg¨
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA              202


      3. Seja G = ({A, B, C, D}, {a, b, c}, P, A), e

                          P : A → ab|aBc|ε
                              B → CBa|Aa
                              C → Db|c
                             D → Bab|Da|ε

         Pede-se:
        (a) transformar em uma gram´tica equivalente ε-livre;
                                   a
        (b) elimine todas as recurs˜es ` esquerda da gram´tica
                                   o a                   a
            obtida no item anterior, se houver;
        (c) fatore a gram´tica obtida no item anterior, se
                         a
            necess´rio.
                  a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA       203




      4. Seja G = ({S, A, B, C}, {a, b, c}, P, S), onde

                            P : S → Aa
                                A → BC
                                B → Sb|ε
                                C → cC|ε

         Pede-se:
        (a) transforme G em ε-livre;
        (b) elimine as produ¸oes simples;
                            c˜
        (c) elimine as recurs˜es ` esquerda.
                             o a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA           204


      5. Transforme as GLC abaixo em equivalentes ε-livre e
         elimine as produ¸˜es simples:
                         co
                         P : E → TP
                             P → +T P |ε
                             T → FQ
                             Q → ∗F Q|ε
                             F → (E)|id

                        P : S → cSc|BA
                            A → aA|ε
                            B → bB|CA|ε
                            C → cCc|AS
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA   205



      6. Elimine as recurs˜es ` esquerda:
                          o a

                     P : E → E + T |E − T |T
                         T → T ∗ F |T /F |F
                         F → F ∗ ∗P |P
                         P → (E)|id

                        P : S → BaS|Da|ε
                            A → Sa|ε
                            B → SAa
                            D → Db|b
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA   206




      7. Fatore as seguintes GLC:

                        P : S → abC|abD
                           C → cC|cD|ba
                           D → dD|dC|ba

                        P : S → bcD|Bcd
                            B → bB|b
                            D → dD|d
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA   207




      8. Obtenha a FNC e a FNG:

                          P : S → aSb|cC
                            C → Dd|d
                            D → cC

      9. Obtenha a FNG:

                          P : S → AA|0
                             A → SS|1
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA               208




     10. Obtenha a FNC de
         G = ({S, T, L}, {a, b, +, −, ∗, /, [, ]}, P, S), onde:

                        P : S → T + S|T − S|T
                            T → L ∗ T |L/T |L
                             L → [S]|a|b
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                209




     11. Construa autˆmatos de pilha que reconhe¸am as
                       o                        c
         seguintes linguagens:
        (a) L = {w|w ∈
            {a, b}∗ tal que o n´mero de a seja o dobro do de b};
                               u
        (b) L = {w|w ∈
            {0, 1}∗ tal que o n´mero de 0 seja igual ao de 1}.
                               u
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                 210


     12. Uma estrutura de lista pode ser definida como:
        (a) λ ´ uma lista vazia;
              e
        (b) a (´tomo) ´ uma lista;
               a      e
        (c) se l1 , l2 , . . . , lk s˜o listas, para k ≥ 1, ent˜o
                                      a                        a
            (l1 , l2 , . . . , lk ) ´ uma lista.
                                    e
         Pede-se:
        (a) Defina uma GLC que gere estruturas de listas;
        (b) Desenhe uma ´rvore de deriva¸˜o para a senten¸a
                              a         ca               c
            ((a, a), λ, (a));
        (c) Construa um PDA que reconhe¸a listas;
                                       c
        (d) Escreva os movimentos que o PDA realiza para
            reconhecer a senten¸a acima.
                               c
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA              211


     13. Dada a gram´tica G = ({S, A, B}, {a, b, c}, P, S),
                    a
         onde:

                          P : S → aAA|Bc
                             A → aS|BS|a
                             B → b|bB

         Pede-se:
        (a) verifique se a senten¸a abaaaa pertence ` L(G)
                                c                  a
            atrav´s de deriva¸˜es mais ` esquerda;
                 e           co        a
        (b) construa um PDA correspondente a G;
        (c) mostre o reconhecimento da mesma senten¸ac
            abaaaa pelo PDA, atrav´s de descri¸ao instantˆnea.
                                  e           c˜         a
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA                       212




     14. Seja o PDA M = ({q0 , q1 }, {a, b}, {z0 , x}, δ, q0 , z0 , ∅),
         onde:

                          δ(q0 , b, z0 ) = {(q0 , xz0 )}
                          δ(q0 , b, x) = {(q0 , xx)}
                          δ(q0 , a, x) = {(q1 , x)}
                          δ(q0 , ε, z0 ) = {(q0 , ε)}
                          δ(q1 , b, x) = {(q1 , ε)}
                         δ(q1 , a, z0 ) = {(q0 , z0 )}
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA            213




         Pede-se:
        (a) construa uma GLC que gera a linguagem N (M );
        (b) mostre a seq¨ˆncia de descri¸˜es instantˆneas do
                        ue              co          a
            PDA ao reconhecer alguma senten¸a w de N (M )
                                              c
            com |w| ≥ 4.
3       ´                            ˆ
    GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA            214



     15. Seja G definida por:

                         P : S → 0AS|1BS|ε
                           A → 0AA|1
                           B → 1BB|0

         Pede-se:
        (a) construa o PDA equivalente a G;
        (b) mostre, atrav´s de descri¸˜es instantˆneas, o
                         e           co          a
            reconhecimento (ou n˜o) das seguintes senten¸as:
                                 a                        c
            i. 001011;
           ii. 111001.
4   ALGORITMO CYK                                           215




     4    Algoritmo CYK
      • Algoritmo reconhecedor de LLC proposto por Cocke,
        Younger e Kasami (1965);
      • Constru´ sobre uma GLC na FNC;
               ıdo
      • Gera bottom-up todas as ´rvores de deriva¸ao da
                                a                c˜
        entrada w em tempo O(|w|3 );
4   ALGORITMO CYK                                                   216




      • Algoritmo:
         1. Suponha G = (N, T, P, S), e w = a1 a2 a3 · · · an uma
            entrada a ser verificada. V (r, s), onde s ´ o n´mero
                                                      e      u
            de linha e r o n´mero de coluna, representa as
                            u
            c´lulas de uma matriz triangular ilustrada a seguir:
             e
4   ALGORITMO CYK                                   217




                          X
                          X    X
                          X    X    X
                     ↑    X    X    X    X
                          .
                          .    .
                               .    .
                                    .    .
                                         .
                     s    .    .    .    .
                    s=1   X    X    X    ···   X
                          a1   a2   a3   ···   an
                                    r→
4   ALGORITMO CYK                                              218




         2. Vari´veis que geram diretamente terminais
                a
            (A → a):
           para r de 1 at´ n fa¸a V (r, 1) = {A|A → ar ∈ P }
                         e     c
           fim para
4   ALGORITMO CYK                                              219


         3. Produ¸ao que gera duas vari´veis (A → BC):
                 c˜                    a
           para s de 2 at´ n
                           e
           fa¸a
             c
           para r de 1 at´ n − s + 1
                           e
           fa¸a
             c
           V (r, s) = ∅
           para k de 1 at´ s − 1
                           e
           fa¸a
             c
           V (r, s) = V (r, s) {A|A → BC ∈ P, B ∈ V (r, k) ∧
           C ∈ V (r + k, s − k)}
           fim para
           fim para
           fim para
4   ALGORITMO CYK                                             220




         4. Condi¸ao de aceita¸ao: se o s´
                 c˜            c˜         ımbolo inicial da
            gram´tica estiver no v´rtice V (1, n).
                a                 e
4   ALGORITMO CYK                                                 221




           Observa¸˜es: O limite da itera¸ao para r ´
                    co                      c˜          e
           (n − s + 1) pois a tabela ´ triangular; Os v´rtices
                                       e                  e
           V (r, k) e V (r + k, s − k) s˜o as ra´ da sub-´rvore
                                        a        ızes       a
           de deriva¸ao de V (r, s); Se uma c´lula for vazia
                      c˜                        e
           significa que ela n˜o gera nenhuma sub-´rvore.
                               a                      a
4   ALGORITMO CYK                                       222



      • Exemplo: G = ({S, A}, {a, b}, P, S), onde
        P = {S → AA|AS|b, A → SA|AS|a}, e a entrada ´
                                                    e
        w = abaab.
        A tabela resolvida ´ ilustrada a seguir:
                           e
                     S, A
                     S, A S, A
                     S, A    S    S, A
                     S, A    A      S    S, A
                      A      S      A     A        S
                      a      b      a      a       b
4   ALGORITMO CYK                                               223



        Solu¸˜o:
            ca
         1. s = 2, r = 1, k = 1: A → BC, B ∈ V (1, 1) e
            C ∈ V (2, 1). V (1, 2) = ∅ {S, A} = {S, A};
         2. s = 2, r = 2, k = 1: B ∈ V (2, 1) e C ∈ V (3, 1).
            V (2, 2) = ∅ {A} = {A};
         3. s = 2, r = 3, k = 1: B ∈ V (3, 1) e C ∈ V (4, 1).
            V (3, 2) = ∅ {S} = {S};
         4. s = 2, r = 4, k = 1: B ∈ V (4, 1) e C ∈ V (5, 1).
            V (4, 2) = ∅ {S, A} = {S, A};
         5. s = 3, r = 1, k = 1: B ∈ V (1, 1) e C ∈ V (2, 2).
            V (1, 3) = ∅ {S} = {S};
4   ALGORITMO CYK                                               224



         6. s = 3, r = 1, k = 2: B ∈ V (1, 2) e C ∈ V (3, 1).
            V (1, 3) = {S} {S, A} = {S, A};
         7. s = 3, r = 2, k = 1: B ∈ V (2, 1) e C ∈ V (3, 2).
            V (2, 3) = ∅ ∅ = ∅;
         8. s = 3, r = 2, k = 2: B ∈ V (2, 2) e C ∈ V (4, 1).
            V (2, 3) = ∅ {S} = {S};
         9. s = 3, r = 3, k = 1: B ∈ V (3, 1) e C ∈ V (4, 2).
            V (3, 3) = ∅ {S, A} = {S, A};
        10. s = 3, r = 3, k = 2: n˜o precisa.
                                  a
        11. s = 4, r = 1, k = 1: B ∈ V (1, 1) e C ∈ V (2, 3).
            V (1, 4) = ∅ {S, A} = {S, A};
4   ALGORITMO CYK                                               225




        12. s = 4, r = 1, k = 2, 3: n˜o precisa;
                                     a
        13. s = 4, r = 2, k = 1: B ∈ V (1, 1) e C ∈ V (2, 3).
            V (2, 4) = ∅ {S, A} = {S, A};
        14. s = 4, r = 2, k = 2, 3: n˜o precisa;
                                     a
        15. s = 5, r = 1, k = 1: B ∈ V (1, 1) e C ∈ V (2, 4).
            V (1, 5) = ∅ {S, A} = {S, A};
        16. s = 5, r = 1, k = 2, 3, 4: n˜o precisa.
                                        a
4   ALGORITMO CYK                                       226




      • Exerc´ıcio: Reconhe¸a usando o algoritmo CYK.
                           c
        P : S → AB|BC, A → BA|a, B → CC|b, C → AB|a
        e entrada w = baaba.
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                    227


     5     Linguagens Tipo 0 e M´quinas
                                a
           de Turing
       • As m´quinas de Turing (TM) foram propostas como
              a
         um modelo matem´tico para representar
                           a
         procedimentos algor´ıtmicos;
       • S˜o um formalismo para definir computabilidade –
          a
         conceito relacionado com os problemas que podem
         ser resolvidos de forma mecˆnica (algor´
                                    a           ıtmica);
       • Tese de Church: “a m´quina de Turing computa
                             a
         exatamente o conjunto das fun¸˜es que s˜o
                                      co         a
         ‘comput´veis’ em um sentido intuitivo e informal”;
                 a
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                    228




       • M´quinas de Turing s˜o simultaneamente:
          a                  a
          – mecanismos para reconhecer linguagens Tipo 0 ou
            linguagens recursivamente enumer´veis ou
                                             a
            conjuntos recursivamente enumer´veis;
                                            a
          – mecanismos para computar fun¸˜es parciais
                                        co
            recursivas;
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                  229




       • Os conjuntos recursivamente enumer´veis s˜o os
                                           a      a
         conjuntos mais amplos que podem ser reconhecidos
         (ou gerados) algoritmicamente;
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                      230




       • As fun¸oes computadas por TM s˜o chamadas de
               c˜                      a
         fun¸˜es parciais recursivas:
            co
         parciais a m´quina pode entrar em um
                     a
           “la¸o infinito”, significando que a fun¸˜o n˜o est´
              c                                 ca a       a
           definida para um determinado valor de entrada;
         recursivas por raz˜es hist´ricas, s˜o assim chamadas
                             o     o        a
            pois as fun¸oes computadas podem ser definidas
                       c˜
            por um formalismo recursivo;
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                          231




       • Modelo de M´quina de Turing
                    a
                     Fita de Trabalho/Entrada
                    a 1 a 2 a 3 ...   ai     ...   an B   B   ...

                                           cabeçote




                                           Controle
                                            Finito
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                        232




       • TM ´ formada por:
            e
         Fita de Trabalho/Entrada onde ´ inicialmente
                                             e
            posta a senten¸a a ser reconhecida; formada por
                          c
            c´lulas que podem armazenar um s´
             e                                 ımbolo; limitada
            ` esquerda e infinita ` direita;
            a                    a
         Cabe¸ote permite ler/escrever s´
             c                          ımbolos da/na fita;
         Controle Finito controla o cabe¸ote; representa o
                                        c
           “programa” sendo computado pela m´quina;
                                               a
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                      233


       • Movimentos de TM:
         1. trocar de estado;
         2. gravar um s´ımbolo na c´lula da fita sobre a qual
                                   e
            est´ o cabe¸ote;
               a       c
         3. redu¸ao do tamanho da string armazenada (basta
                 c˜
            escrever um “branco” sobre o s´ımbolo do extremo
            direito da string armazenada);
         4. amplia¸ao do tamanho da string armazenada (basta
                   c˜
            escrever um n˜o-branco na posi¸ao imediatamente `
                           a              c˜                a
            direita da string);
         5. mover o cabe¸ote uma c´lula para a esquerda ou
                          c       e
            para a direita;
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                  234




         Observa¸ao: n˜o podemos escrever um “branco” a
                 c˜     a
         n˜o ser na ultima posi¸ao ` direita da string
           a        ´           c˜ a
         armazenada (n˜o podemos dividir a string
                        a
         armazenada em duas ou introduzir brancos `   a
         esquerda). S´ podemos estar em uma c´lula com
                      o                          e
         “branco” se esta for a imediatamente seguinte ao
         ultimo s´
         ´       ımbolo ` direita da string;
                          a
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                235




       • Uma m´quina de Turing ´ definida por:
              a                e

                        M = (K, Σ, Γ, δ, q0 , F )

         Onde:
         K conjunto finito de estados;
         Σ ⊂ Γ conjunto finito de s´
                                  ımbolos de entrada;
         Γ conjunto finito de s´
                              ımbolos da fita (incluindo
            “branco”);
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                        236




         δ : K × Γ → K × Γ × {L, R, −} fun¸ao (parcial) de
                                               c˜
             movimento, onde L ´ o movimento do cabe¸ote
                                  e                      c
             para a esquerda, R ´ o movimento do cabe¸ote
                                 e                       c
             para a direita, e − significa que o cabe¸ote
                                                    c
             permanece onde est´. Observe-se que s´ ´ poss´
                                 a                  oe     ıvel
             escrever “branco” na fita no extremo direito da
             string armazenada. O movimento do cabe¸ote ´
                                                       c   e
             executado ap´s a escrita do s´
                           o               ımbolo na fita;
         q0 ∈ K estado inicial;
         F ⊂ K conjunto de estados finais.
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING          237




       • A configura¸˜o de uma m´quina de Turing ´
                    ca         a                e
         representada por
                                  (q, α, i)
         Onde:
         q ∈ K estado atual da m´quina;
                                a
         α ∈ (Γ − {B})∗ string armazenada na fita;
         i posi¸ao do cabe¸ote.
               c˜         c
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                        238




                    a 1 a 2 a 3 ...   ai   ...   an B   B   ...

                            i



                                      q
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                       239


       • A descri¸˜o instantˆnea de TM ´ definida como:
                 ca         a          e

                                 α1 qα2

         onde:
         q ∈ K estado corrente da m´quina;
                                   a
         α1 , α2 ∈ Γ∗ seq¨ˆncias de s´
                          ue          ımbolos representando os
             lados direito e esquerdo do cabe¸ote.
                                              c
         Observa¸ao: assume-se que o cabe¸ote est´
                  c˜                      c       a
         apontando para o s´
                           ımbolo mais ` esquerda de α2 . Se
                                        a
         α2 = ε ent˜o o cabe¸ote est´ apontando para B. Se
                     a      c       a
         α1 = ε ent˜o o cabe¸ote est´ na primeira posi¸ao da
                     a      c       a                 c˜
         string armazenada (i = 1).
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                                           240




       • Movimentos de TM:
          – Se 1 ≤ i ≤ n, x ∈ (Γ − {B}) e δ(q, ai ) = (p, x, R)
            ent˜o (q, a1 a2 · · · ai · · · an , i)
                a
            (p, a1 a2 · · · ai−1 xai+1 · · · an , i + 1);
          – Se 2 ≤ i ≤ n, x ∈ (Γ − {B}) e δ(q, ai ) = (p, x, L)
            ent˜o (q, a1 a2 · · · ai · · · an , i)
                a
            (p, a1 a2 · · · ai−1 xai+1 · · · an , i − 1);
          – Se 1 ≤ i ≤ n, x ∈ (Γ − {B}) e
            δ(q, ai ) = (p, x, −) ent˜o     a
            (q, a1 a2 · · · ai · · · an , i) (p, a1 a2 · · · ai−1 xai+1 · · · an , i);
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                              241




          – Se x ∈ (Γ − {B}) e δ(q, B) = (p, x, −) ent˜o         a
            (q, a1 a2 · · · an , n + 1) (p, a1 a2 · · · an x, n + 1);
          – Se x ∈ (Γ − {B}) e δ(q, B) = (p, x, L) ent˜o          a
            (q, a1 a2 · · · an , n + 1) (p, a1 a2 · · · an x, n);
          – Se x ∈ (Γ − {B}) e δ(q, B) = (p, x, R) ent˜o         a
            (q, a1 a2 · · · an , n + 1) (p, a1 a2 · · · an x, n + 2);
          – Se δ(q, an ) = (p, B, −) ent˜o   a
            (q, a1 a2 · · · an , n) (p, a1 a2 · · · an−1 , n);
          – Se δ(q, an ) = (p, B, L) ent˜o  a
            (q, a1 a2 · · · an , n) (p, a1 a2 · · · an−1 , n − 1);
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                       242




          – Se δ(q, B) = (p, B, −) ent˜o  a
            (q, a1 · · · an , n + 1) (p, a1 · · · an , n + 1);
          – Se δ(q, B) = (p, B, L) ent˜o  a
            (q, a1 · · · an , n + 1) (p, a1 · · · an , n).
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                      243




       • Linguagem aceita por TM
         Seja M = (K, Σ, Γ, δ, q0 , F ), ent˜o:
                                            a
         L(M) = {w|w ∈ Σ∗ ∧ ∃q ∈ F, α ∈ Γ∗ , i ≥ 0(q0 , w, 1)
         (q, α, i)}.
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                      244




       • Parada de TM – se uma TM aceita uma linguagem L
         ent˜o ela p´ra para todas as palavras de L;
            a       a
         Existem duas possibilidades de n˜o reconhecer uma
                                         a
         palavra:
         1. o processo de reconhecimento trancar antes de ser
            encontrado um estado final;
         2. a palavra n˜o ´ reconhecida pois a m´quina n˜o
                       a e                      a       a
            p´ra (fun¸˜o parcial).
             a       ca
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                   245




       • Rela¸˜o entre TM e Gram´tica Tipo 0
             ca                 a
       • Teorema: Se L ´ gerada por uma gram´tica Tipo 0
                        e                     a
         ent˜o L pode ser reconhecida por uma m´quina de
            a                                   a
         Turing;
       • Teorema: Se L ´ reconhecida por uma m´quina de
                        e                      a
         Turing ent˜o L ´ gerada por uma gram´tica Tipo 0.
                   a    e                    a
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                  246




       • Exemplo: L = {0n 1n |n ≥ 1}. Solu¸˜o:
                                          ca

                        M = (K, Σ, Γ, δ, q0 , F )

                       K = {q0 , q1 , q2 , q3 , q4 , q5 }
                                Σ = {0, 1}
                           Γ = {0, 1, x, y, B}
                                 F = {q5 }
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                        247




                δ(q0 , 0) = (q1 , x, R) δ(q1 , 0) = (q1 , 0, R)

                δ(q1 , 1) = (q2 , y, L) δ(q2 , y) = (q2 , y, L)
                δ(q2 , x) = (q3 , x, R) δ(q2 , 0) = (q4 , 0, L)
                δ(q4 , 0) = (q4 , 0, L) δ(q4 , x) = (q0 , x, R)
               δ(q3 , y) = (q3 , y, R) δ(q3 , B) = (q5 , B, −)
                            δ(q1 , y) = (q1 , y, R)
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING            248


         Reconhecimento de 0011:

                    (q0 , 0011, 1)   (q1 , x011, 2)
                                     (q1 , x011, 3)
                                     (q2 , x0y1, 2)
                                     (q4 , x0y1, 1)
                                     (q0 , x0y1, 2)
                                     (q1 , xxy1, 3)
                                     (q1 , xxy1, 4)
                                     (q2 , xxyy, 3)
                                     (q2 , xxyy, 2)
                                     (q3 , xxyy, 3)
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING           249




                                    (q3 , xxyy, 4)
                                    (q3 , xxyy, 5)
                                    (q5 , xxyy, 5)
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                      250




       • Fun¸ao computada por TM – podemos considerar a
             c˜
         m´quina de Turing tamb´m como um mecanismo
           a                    e
         para computar fun¸oes parciais recursivas (fun¸oes
                          c˜                           c˜
         sobre strings);
       • Se considerarmos a tripla (q0 , δ, F ) como sendo um
         programa p, ent˜o podemos considerar a fun¸˜o Mp
                        a                               ca
         como sendo a fun¸˜o computada pelo programa p na
                          ca
         m´quina M.
           a
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                     251



       • Existem diversas varia¸˜es da defini¸˜o de m´quina
                               co           ca      a
         de Turing:
         1. TM n˜o-determin´
                a          ıstica;
         2. fita infinita em ambas as dire¸oes;
                                        c˜
         3. TM com mais de um cabe¸ote;
                                  c
         4. TM com mais de uma fita;
         5. combina¸oes destas possibilidades;
                   c˜
       • Todas s˜o equivalentes ` defini¸ao original (TM
                 a               a      c˜
         original simula todas as suas varia¸˜es);
                                            co
       • Isto ´ uma evidˆncia da corre¸ao da tese de Church.
              e         e             c˜
5                        ´
    LINGUAGENS TIPO 0 E MAQUINAS DE TURING                    252




     Exerc´
          ıcios:
      1. Defina uma TM para reconhecer
         L = {w|w ∈ {0, 1}∗ ∧ w = wR } (pal´
                                           ındromes);
      2. Defina uma TM para reconhecer L = {an bn cn |n ≥ 0}
         e mostre o reconhecimento de aabbcc.
6            ˆ
    LSC E AUTOMATOS DE FITA LIMITADA                          253




     6     LSC e Autˆmatos de Fita
                    o
           Limitada
       • Um autˆmato de fita limitada – Linear Bounded
                o
         Automata (LBA) – ´ uma m´quina de Turing
                              e      a
         n˜o-determin´stica em que o cabe¸ote nunca
          a           ı                   c
         abandona aquelas c´lulas sobre as quais a senten¸a
                             e                           c
         de entrada foi gravada;
       • O LBA ´ o reconhecedor das linguagens sens´
                 e                                 ıveis ao
         contexto (LSC);
6            ˆ
    LSC E AUTOMATOS DE FITA LIMITADA                    254




       • Defini¸˜o formal de LBA
              ca

                        M = (K, Σ, Γ, δ, q0 , F )

         Onde:
         K conjunto finito de estados;
         Σ ⊂ Γ conjunto finito de s´
                                  ımbolos de entrada;
         Γ conjunto finito de s´
                              ımbolos da fita;
         δ : K × Γ → Partes(K × Γ × {L, R, −}) ;
         q0 ∈ K estado inicial;
         F ⊂ K conjunto finito de estados finais.
6            ˆ
    LSC E AUTOMATOS DE FITA LIMITADA                         255




         Observa¸ao: o conjunto Γ possui dois s´
                  c˜                             ımbolos
         especiais £ e $ que s˜o os limites ` esquerda e `
                              a             a            a
         direita da senten¸a de entrada.
                          c
6            ˆ
    LSC E AUTOMATOS DE FITA LIMITADA                           256




       • Linguagem aceita por um LBA:
         L = {w|w ∈ Σ∗ ∧ ∃q ∈ F, α ∈ Γ∗ , i ≥ 0(q0 , £w$, 1)
         (q, α, i)}.
         Teorema: Se L ´ uma LSC ent˜o L ´ aceita por
                       e            a    e
         algum LBA.
         Teorema: Se L ´ reconhecida por um LBA ent˜o
                       e                           a
         L − {ε} ´ uma LSC.
                 e
7   HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA)      257


     7    Hierarquia de Chomsky
          (revisitada e ampliada)
     Relembrando:



                               Regulares

                         Livres de Contexto

                              ´
                          Sensiveis ao Contexto
                                      Tipo 0



             Tipo 3 ⊂ Tipo 2 ⊂ Tipo 1 ⊂ Tipo 0 ⊂ T ∗
7   HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA)                 258




       • Nos extremos da hierarquia (AF e TM – linguagens
         regulares e Tipo 0) existe equivalˆncia entre
                                           e
         determinismo e n˜o-determinismo (mesma classe de
                          a
         linguagens reconhecidas);
       • Para o autˆmato de fita limitada n˜o se sabe se
                     o                       a
         determinismo e n˜o-determinismo aceitam a mesma
                           a
         classe de linguagens ou classes diferentes (quest˜o em
                                                          a
         aberto; n˜o existe prova matem´tica);
                   a                     a
7   HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA)            259


       • Para o PDA sabemos que n˜o existe equivalˆncia
                                   a              e
         entre determinismo e n˜o-determinismo;
                               a
       • Linguagens livres de contexto determin´
                                               ısticas
         (LLCD) e linguagens livres de contexto
         n˜o-determin´
          a           ısticas (LLCND);
       • As LLCD s˜o a classe de linguagens que pode ser
                    a
         reconhecida por um compilador de forma eficiente
         (em tempo polinomial);
       • S˜o a classe mais importante pois representam a
           a
         sintaxe da maioria das linguagens de programa¸˜o;
                                                      ca
       • As LLCD s˜o geradas pelas gram´ticas LR;
                  a                    a
7   HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA)   260




     Teorema: Se L ´ uma LLC e o complemento de L
                     e
     (T ∗ − L) n˜o ´, ent˜o L n˜o ´ LLCD.
                a e      a     a e
7   HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA)       261




                           Regulares
                      LLC Determinísticas

                      LLC Não−determinísticas
                      Sensíveis ao Contexto
                                  Tipo 0


        Tipo 3 ⊂ LLCD ⊂ LLCND ⊂ Tipo 1 ⊂ Tipo 0 ⊂ T ∗
7   HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA)               262


         ´
       • E possivel caracterizar toda a hierarquia de Chomsky
         ampliada apresentada at´ aqui usando-se apenas o
                                  e
         autˆmato de pilha;
            o
       • Definimos PDA(n) como sendo um autˆmato de
                                           o
         pilha que possui n pilhas. Ent˜o:
                                       a
         1. PDA(0) ´ equivalente ao AF;
                   e
         2. PDA(1) = PDA caracterizando as LLCD e
            LLCND dependendo da existˆncia ou n˜o de
                                     e         a
            n˜o-determinismo;
             a
         3. PDA(n) ≡ TM, para n ≥ 2 (por que?). Logo,
            PDA(n) ≡ PDA(2), para todo n  2 – adicionar
            mais pilhas n˜o muda nada (por que?).
                         a
7   HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA)   263




                             FIM

Linguagens Formais

  • 1.
    1 Disciplina de LinguagensFormais Prof. Carlos A. P. Campani 2 de maio de 2006
  • 2.
    2 Copyright c 2005Carlos A. P. Campani. ´ E garantida a permiss˜o para copiar, distribuir e/ou a modificar este documento sob os termos da Licen¸a de c Documenta¸ao Livre GNU (GNU Free Documentation c˜ License), Vers˜o 1.2 ou qualquer vers˜o posterior a a publicada pela Free Software Foundation; sem Se¸oes c˜ Invariantes, Textos de Capa Frontal, e sem Textos de Quarta Capa. Uma c´pia da licen¸a ´ inclu´ na se¸ao o c e ıda c˜ intitulada “GNU Free Documentation License”. veja: http://www.ic.unicamp.br/~norton/fdl.html.
  • 3.
    3 Objetivos • Formalizaro conceito de linguagem; • Apresentar uma classifica¸ao de linguagens baseada c˜ nesta formaliza¸ao; c˜ • Fornecer ferramentas para implementar compiladores; • Relacionar a hierarquia de linguagens com o conceito de computabilidade.
  • 4.
    4 S´ mula daDisciplina u 1. Introdu¸ao ` Teoria de Linguagens Formais; c˜ a • Alfabetos, Senten¸as e Linguagens; c • Gram´ticas e Reconhecedores; a • Tipos de Gram´ticas/Linguagens (Hierarquia de a Chomsky);
  • 5.
    5 2. Gram´ticas Regularese Autˆmatos Finitos; a o • Defini¸ao de Gram´tica Regular (GR); c˜ a • Defini¸ao de Autˆmato Finito; c˜ o • Autˆmato Finito N˜o-Determin´ o a ıstico; • Rela¸ao entre Autˆmato Finito e GR; c˜ o • Minimiza¸ao de Autˆmato Finito; c˜ o • Express˜es Regulares; o • Bombeamento para Linguagens Regulares; • M´quinas de Moore e Mealy; a
  • 6.
    6 3. Gram´ticas Livresde Contexto e Autˆmatos de a o Pilha; • Defini¸ao de GLC; c˜ ´ • Arvores de Deriva¸ao e Ambig¨idade; c˜ u • Transforma¸oes em GLC: Elimina¸˜o de S´ c˜ ca ımbolos In´teis; Transforma¸ao em uma GLC ε-Livre; u c˜ Remo¸ao de Produ¸oes Simples; Fatora¸˜o; c˜ c˜ ca Elimina¸ao de Recurs˜o ` Esquerda; c˜ a a • Formas Canˆnicas: Forma Normal de Chomsky; o Forma Normal de Greibach; • Autˆmatos de Pilha (PDA); o • Rela¸ao entre PDA e GLC; c˜
  • 7.
    7 4. Reconhecedor –Algoritmo CYK; 5. Linguagens Tipo 0 e M´quinas de Turing; a 6. Linguagens Sens´ ıveis ao Contexto e Autˆmatos de o Fita Limitada; 7. Hierarquia de Chomsky (revisitada).
  • 8.
    8 Bibliografia • Introductionto Automata Theory, Languages, and Computation, Hopcroft e Ullman; • Linguagens Formais e Autˆmatos, Paulo Blauth o Menezes.
  • 9.
    9 Links (Lˆminas) a http://www.ufpel.tche.br/~campani/lingformal.pdf (Lˆminaspara impress˜o) a a http://www.ufpel.tche.br/~campani/lingformal4.ps.gz
  • 10.
    1 ¸˜ INTRODUCAO 10 1 Introdu¸˜o ca • Uma linguagem ´ um meio de comunica¸˜o utilizado e ca por elementos de uma determinada comunidade. Formada por: – Conjunto de palavras; – Conjunto de regras gramaticais; • Uma linguagem ´ formal quando pode ser e representada atrav´s de um sistema com sustenta¸˜o e ca matem´tica. Formada por: a – Sintaxe (estrutura) – foco da nossa disciplina; – Semˆntica (significado) – n˜o interessa para n´s. a a o
  • 11.
    1 ¸˜ INTRODUCAO 11 • Alfabeto (ou vocabul´rio) ´ um conjunto finito de a e s´ ımbolos. Ex: d´ıgitos, letras, etc. {a, b, c, . . . , z} {0, 1} • Senten¸a (ou palavra, ou string) sobre um alfabeto ´ c e qualquer seq¨ˆncia finita de s´ ue ımbolos do alfabeto. Ex: Seja o alfabeto V = {0, 1}, s˜o senten¸as v´lidas a c a 001, 1010, etc. • O tamanho (ou comprimento) de uma senten¸a ´c e dado pelo n´mero de s´ u ımbolos que a comp˜e. Ex: o V = {a, b, c}, senten¸a w = ab, tamanho |w| = 2; c
  • 12.
    1 ¸˜ INTRODUCAO 12 • A senten¸a que n˜o cont´m s´ c a e ımbolos (tamanho zero) ´ chamada de senten¸a vazia, sendo denotada por ε e c (|ε| = 0); • Seja V um alfabeto. Representamos por: – V ∗ – conjunto de todas as senten¸as compostas de c s´ ımbolos de V incluindo a senten¸a vazia; c – V + = V ∗ − {ε}; Exemplo: V = {0, 1}, V ∗ = {ε, 0, 1, 00, 01, 10, 11, 000, 001, 010, . . .}, V + = {0, 1, 00, 01, 10, 11, 000, 001, 010, . . .}.
  • 13.
    1 ¸˜ INTRODUCAO 13 Linguagem ´ qualquer conjunto de senten¸as sobre um e c alfabeto. ou Uma linguagem L sobre um alfabeto V ´ tal que L ⊆ V ∗ . e
  • 14.
    1 ¸˜ INTRODUCAO 14 • Tipos de linguagens: finitas, vazias e infinitas; • Representa¸ao: c˜ – Listando as palavras (s´ finita); o – Descri¸ao alg´brica. Ex: {an bn cn |n ≥ 1}. c˜ e Nota¸ao: c˜ n vezes aaa · · · a = an ; – Definindo um algoritmo que determina (sim ou n˜o) se uma senten¸a pertence a uma linguagem a c (Reconhecimento). Ex: autˆmato finito; o – Definindo um mecanismo que gera todas as senten¸as da linguagem em alguma ordem c (Gera¸˜o). Ex: gram´tica. ca a
  • 15.
    1 ¸˜ INTRODUCAO 15 • Uma gram´tica serve para definir qual o subconjunto a de senten¸as que faz parte de uma determinada c linguagem. Ela ´ um dispositivo formal para e especificar uma linguagem potencialmente infinita de uma forma finita;
  • 16.
    1 ¸˜ INTRODUCAO 16 • Nota¸˜o Formal de Gram´tica ca a Uma gram´tica G ´ definida por uma qu´drupla a e a G = (N, T, P, S) onde: N conjunto finito de n˜o-terminais; a T conjunto finito de terminais; P conjunto finito de regras de produ¸ao; c˜ S s´ ımbolo inicial da gram´tica. a Observa¸oes: N T = ∅, V = N c˜ T, S ∈ N, P = {α → β|α ∈ V + ∧ β ∈ V ∗ }.
  • 17.
    1 ¸˜ INTRODUCAO 17 Exemplo: gera n´meros inteiros u G = (N, T, P, I) N = {I, D} T = {0, 1, 2, . . . , 9} P = {I → D, I → DI, D → 0, D → 1, . . . , D → 9} ou P : I → D|DI, D → 0|1|2| · · · |9 Exerc´ıcio: Reescrever tentando evitar n´meros tipo u 0015.
  • 18.
    1 ¸˜ INTRODUCAO 18 • Conven¸oes: c˜ S´ ımbolos n˜o-terminais N = {A, B, C, . . . T }; a S´ ımbolos terminais T = {a, b, c, . . . t}; S´ ımbolo terminal ou n˜o-terminal a N T = {U, V, . . . Z}; Seq¨ˆncias de terminais T ∗ = {u, v, . . . z}; ue Seq¨ˆncias de n˜o-terminais e terminais ue a (N T )∗ = {α, β, γ, . . .}.
  • 19.
    1 ¸˜ INTRODUCAO 19 • Deriva¸˜o (⇒) ´ uma opera¸ao de substitui¸ao ca e c˜ c˜ efetuada de acordo com as regras de produ¸˜o da ca gram´tica. a Formalmente: γαδ ⇒ γβδ se α → β ∈ P e γ, δ ∈ V ∗ . Exemplo: G = ({S, A, B}, {0, 1}, {S → AB, A → 0|AB, B → 1|1B}, S), e S ⇒ AB ⇒ ABB ⇒ 0BB ⇒ 01B ⇒ 011B .
  • 20.
    1 ¸˜ INTRODUCAO 20 • Uma seq¨ˆncia de deriva¸oes com zero ou mais ue c˜ passos (⇒∗ ): Formalmente: α1 ⇒∗ αm se α1 ⇒ α2 , α2 ⇒ α3 , . . . , αm−1 ⇒ αm , α1 , α2 , . . . , αm ∈ V ∗ . • Garantindo pelo menos uma substitui¸ao (⇒+ ): c˜ Formalmente: α1 ⇒+ αm se α1 ⇒ α2 , α2 ⇒∗ αm , α1 , α2 , . . . , αm ∈ V ∗ .
  • 21.
    1 ¸˜ INTRODUCAO 21 • Uma senten¸a de uma linguagem ´ uma seq¨ˆncia c e ue formada por terminais, obtida a partir do s´ ımbolo inicial da gram´tica desta linguagem, atrav´s de a e deriva¸oes sucessivas. c˜ Formalmente: S ⇒+ u. • Uma forma sentencial ´ uma seq¨ˆncia qualquer, e ue composta de terminais e n˜o-terminais, obtida a a partir do s´ ımbolo inicial da gram´tica atrav´s de a e deriva¸oes sucessivas. c˜ Formalmente: S ⇒∗ α.
  • 22.
    1 ¸˜ INTRODUCAO 22 • A linguagem gerada por uma gram´tica a G = (N, T, P, S) ´ o conjunto de todas as senten¸as e c da linguagem obtidas da gram´tica por deriva¸oes a c˜ sucessivas. Formalmente: L(G) = {w|w ∈ T ∗ ∧ S ⇒∗ w}.
  • 23.
    1 ¸˜ INTRODUCAO 23 Ex: G = ({S}, {0, 1}, P, S) com P = {S → 0S1, S → 01}. Assim, S ⇒ 0S1 ⇒ 00S11 ⇒ 03 S13 ⇒ · · · que ´ igual a 0n 1n e para n ≥ 1. Logo, L(G) = {0n 1n |n ≥ 1}. Nota¸˜o: ca n vezes aaa · · · a = an .
  • 24.
    1 ¸˜ INTRODUCAO 24 Exerc´ ıcio: Seja a seguinte gram´tica: a G = ({S, A, B}, {0, 1}, P, S) P = {S → ASBB|BSAA|0, A → 01|01A, B → 10|10B} Obtenha as deriva¸oes para as seguintes senten¸as: c˜ c 1. 0101010; 2. 101000101010101.
  • 25.
    1 ¸˜ INTRODUCAO 25 • Tipos de Gram´ticas – segundo a hierarquia de a Chomsky existem quatro tipos: Tipo 0 ou Irrestritas P = {α → β|α ∈ V + , β ∈ V ∗ }; Tipo 1 ou Sens´ ıvel ao Contexto Se α → β ∈ P ent˜o |α| ≤ |β|. a Outra forma: P = {α1 Aα2 → α1 βα2 |α1 , α2 ∈ V ∗ , β ∈ V + , A ∈ N }; Tipo 2 ou Livre de Contexto P = {α → β|α ∈ N ∧ β = ε}; Tipo 3 ou Regular A → aB ou A → a, ou seja, P = {A → aX|A ∈ N, a ∈ T, X ∈ N ∪ {ε}}.
  • 26.
    1 ¸˜ INTRODUCAO 26 • Gram´ticas lineares: a Gram´tica linear ` direita Se todas as produ¸oes a a c˜ s˜o da forma A → wB ou A → w, com w ∈ T ∗ ; a Gram´tica linear ` esquerda Se todas as a a produ¸oes s˜o da forma A → Bw ou A → w; c˜ a Gram´tica linear unit´ria ` direita linear ` a a a a direita com |w| ≤ 1; Gram´tica linear unit´ria ` esquerda linear ` a a a a esquerda com |w| ≤ 1. • Teorema: As quatro defini¸oes de gram´ticas lineares c˜ a s˜o equivalentes. a
  • 27.
    1 ¸˜ INTRODUCAO 27 • Defini¸˜o alternativa de gram´tica regular: ca a Uma gram´tica regular ´ qualquer gram´tica linear. a e a
  • 28.
    1 ¸˜ INTRODUCAO 28 Regulares Livres de Contexto ´ Sensiveis ao Contexto Tipo 0 Tipo 3 ⊂ Tipo 2 ⊂ Tipo 1 ⊂ Tipo 0 ⊂ T ∗
  • 29.
    1 ¸˜ INTRODUCAO 29 • Ex: G = ({S, A, B}, {a, b}, P, S) P = {S → aB|bA, A → a|aS|bAA, B → b|bS|aBB} 1. Tipo da gram´tica? a 2. L(G)?
  • 30.
    1 ¸˜ INTRODUCAO 30 • Respostas: 1. Livre de contexto; 2. L(G) ´ o conjunto de todas as palavras em T ∗ que e tem o mesmo n´mero de a’s e b’s. u
  • 31.
    1 ¸˜ INTRODUCAO 31 • Linguagens classificadas segundo as gram´ticas em: a 1. Recursivamente enumer´veis ou RE a (gram´tica Tipo 0) – conjuntos recursivamente a enumer´veis est˜o relacionado com a m´quina de a a a Turing, fun¸˜es parciais recursivas e co computabilidade; 2. Linguagem sens´ ao contexto ou LSC ıvel (gram´tica Tipo 1); a 3. Linguagem livre de contexto ou LLC (gram´tica Tipo 2); a 4. Linguagem Regular ou LR (gram´tica Tipo 3). a
  • 32.
    1 ¸˜ INTRODUCAO 32 • Vamos extender as defini¸oes das gram´ticas Tipo 1 c˜ a e 2 para permitir produ¸˜es do tipo S → ε. Isto s´ ´ co oe poss´ se S n˜o aparece em lado direito de ıvel a nenhuma produ¸˜o. Assim, S → ε somente ser´ ca a utilizada para originar a senten¸a vazia; c L(G ) = L(G) {ε} • Para introduzir S → ε em gram´tica que viola a a condi¸˜o anterior, devemos transforma-la em uma ca equivalente que obede¸a a restri¸ao; c c˜ • Gram´ticas equivalentes s˜o aquelas que geram a a a mesma linguagem;
  • 33.
    1 ¸˜ INTRODUCAO 33 • Para transformar incluiremos um novo s´ ımbolo n˜o-terminal (S ) que passar´ a ser o novo s´ a a ımbolo inicial. Em seguida, incluiremos em P todas as regras que tenham o s´ ımbolo S no lado esquerdo, substituindo este por S , e incluindo ainda uma regra S → ε; Ex1: G = ({S, A}, {a}, P, S) com P = {S → aA, A → a|aA}. Obtemos G = ({S, A}, {a}, P , S) com P = {S → aA|ε, A → a|aA};
  • 34.
    1 ¸˜ INTRODUCAO 34 Ex2: G = ({S, A}, {a}, P, S) com P = {S → aA, A → a|aS}. Obtemos G = ({S , S, A}, {a}, P , S ) com P = {S → aA|ε, S → aA, A → a|aS};
  • 35.
    1 ¸˜ INTRODUCAO 35 Exerc´ ıcios: 1. Construa uma gram´tica G tal que: a (a) L(G) = {an bm |n ≥ 0 ∧ m ≥ 1}; (b) L(G) = {ai bj ci |i ≥ 0 ∧ j ≥ 1}. 2. Construa uma gram´tica regular G tal que: a L(G) = {w|w ∈ {0, 1}+ e n˜o tem 1 s consecutivos} a 3. Construa uma gram´tica livre de contexto G tal que: a L(G) = {w|w ∈ {0, 1, 2}+ e todos os zeros sejam consecutivos}
  • 36.
    1 ¸˜ INTRODUCAO 36 4. Seja G definida por: S → aS|bB, B → cB|cC, C → cS|c Pede-se: (a) determine L(G); (b) construa G tal que L(G ) = L(G) {ε}; (c) verifique se as senten¸as abaixo pertencem a L(G): c • abccc; • bccabcc; • abccbbc.
  • 37.
    1 ¸˜ INTRODUCAO 37 5. Construa uma GLC G tal que L(G) seja o conjunto de express˜es aritm´ticas v´lidas. Os terminais s˜o o e a a identificadores (id), parˆnteses (“(” e “)”), e os e operadores +, ∗, e − un´rio. a
  • 38.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 38 2 Gram´ticas Regulares e a Autˆmato Finito o • O autˆmato finito (AF) ´ uma m´quina abstrata que o e a reconhece linguagens regulares; • Modelo matem´tico com entradas e sa´ a ıdas. Se ´ e fornecido ao AF uma seq¨ˆncia de s´ ue ımbolos como entrada, ele responder´ se esta seq¨ˆncia pertence ` a ue a linguagem ou n˜o; a • O AF pode assumir um n´mero finito de estados; u • Um estado resume os estados anteriores pelos quais passou e os s´ ımbolos que j´ foram lidos na entrada. a
  • 39.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 39 • Defini¸˜o formal de autˆmato finito ca o Um autˆmato finito M sobre um alfabeto Σ ´ um o e sistema (K, Σ, δ, q0 , F ) onde: K – conjunto finito, n˜o vazio, de estados; a Σ – alfabeto finito de entrada; δ – fun¸ao de transi¸ao de estados, c˜ c˜ δ :K ×Σ {ε} → K ; q0 ∈ K estado inicial; F ⊂ K conjunto de estados finais.
  • 40.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 40 Fita de entrada 0 1 0 0 1 0 1 Cabeçote Controle Finito δ(q, a) = p para q, p ∈ K e a ∈ Σ, significando que estando no estado q e lendo o s´ımbolo a na fita de entrada podemos mudar para o estado p avan¸ando o c cabe¸ote uma posi¸ao. c c˜
  • 41.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 41 • Diagrama de Transi¸˜o ca – Outra maneira de representar um autˆmato finito; o – Grafo direcionado e rotulado; – Os v´rtices representam os estados, desenhados e como c´ ırculos; – As arestas representam as transi¸oes entre dois c˜ estados, sendo o r´tulo o s´ o ımbolo reconhecido na entrada; – O estado inicial ´ marcado com uma seta; e – Os estados finais s˜o indicados por c´ a ırculos duplos.
  • 42.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 42 Ex: a a b q0 @ABC GFED q1 / GFED @ABC q2 / G?= @ABC 89:; FED M = ({q0 , q1 , q2 }, {a, b}, δ, q0 , {q2 }), e δ(q0 , a) = q1 , δ(q1 , a) = q1 , δ(q1 , b) = q2 . Logo, T (M ) = {an b|n ≥ 1}.
  • 43.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 43 • Tabela de Transi¸ao de Estados c˜ – Uma terceira forma de representar um AF; – Tabela indicando na vertical os estados, e na horizontal os s´ ımbolos do alfabeto. No cruzamento est˜o as transi¸oes poss´ a c˜ ıveis; – O estado inicial ´ indicado por uma seta, e os e estados finais por asteriscos.
  • 44.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 44 Ex1: δ a b → q0 q1 - q1 q1 q2 *q2 - - Exerc´ ıcio: 1. Descreva formalmente o AF; 2. Desenhe o diagrama de transi¸˜o equivalente. ca
  • 45.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 45 Ex2: AF que reconhece senten¸as em {0, 1}∗ as quais n˜o c a cont´m dois ou mais 1’s consecutivos. e 0 1 + GFED q0 / GFED k @ABC ?= 89:; q1 @ABC ?= 89:; 0 M = (K, Σ, δ, q0 , F ), K = {q0 , q1 }, Σ = {0, 1}, F = {q0 , q1 }, com δ(q0 , 0) = q0 , δ(q0 , 1) = q1 , δ(q1 , 0) = q0 . Exerc´ ıcio: Apresente a tabela de transi¸ao. c˜
  • 46.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 46 Tabela: δ 0 1 → ∗q0 q0 q1 *q1 q0 -
  • 47.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 47 Ex3: Identificadores de linguagens de programa¸˜o ca S → L|LR, R → L|D|LR|DR, L → a|b|c · · · |z, D → 0|1|2| · · · |9 a|b|···|z|0|1|···|9 a|b|···|z q0 GFED @ABC q1 / G?= @ABC 89:; FED Exerc´ ıcios: 1. Inteiros com ou sem sinal; 2. Reais (uma casa ap´s a v´ o ırgula) com sinal opcional.
  • 48.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 48 a ca ınio K × Σ∗ : • Extens˜o da fun¸˜o δ para o dom´ ˆ 1. δ(q, ε) = q; ˆ ˆ 2. δ(q, ua) = δ(δ(q, u), a) para u ∈ Σ∗ e a ∈ Σ; ˆ • δ(q, u) = p significa que M , iniciando no estado q e tendo a seq¨ˆncia u na fita de entrada, entrar´ no ue a estado p, ap´s o cabe¸ote mover-se para a direita |u| o c c´lulas; e c e ˆ • Uma senten¸a u ´ aceita por M se δ(q0 , u) = p para algum p ∈ F , ou seja: ˆ T (M ) = {u|δ(q0 , u) = p ∧ p ∈ F }; • Qualquer conjunto de senten¸as aceito por um AF ´ c e dito ser regular (linguagem regular ).
  • 49.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 49 Exemplo: M = (K, Σ, δ, q0 , F ), Σ = {0, 1}, K = {q0 , q1 , q2 , q3 }, F = {q0 }. δ(q0 , 0) = q2 δ(q1 , 0) = q3 δ(q2 , 0) = q0 δ(q3 , 0) = q1 δ(q0 , 1) = q1 δ(q1 , 1) = q0 δ(q2 , 1) = q3 δ(q3 , 1) = q2
  • 50.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 50 1 + GFED q0 @ABC GFED k ?= 89:; q1 @ABC T 1 T 0 0 0 0 1 + GFED q2 @ABC GFED k q3 @ABC 1
  • 51.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 51 δ 0 1 → ∗q0 q2 q1 q1 q3 q0 q2 q0 q3 q3 q1 q2 Reconhecimento de 110101: (q0 , 110101) ⇒ (q1 , 10101) ⇒ (q0 , 0101) ⇒ (q2 , 101) ⇒ (q3 , 01) ⇒ (q1 , 1) ⇒ (q0 , ε). Assim, 110101 ∈ T (M ). Reconhecimento de 1011: (q0 , 1011) ⇒ (q1 , 011) ⇒ (q3 , 11) ⇒ (q2 , 1) ⇒ (q3 , ε). Assim, 1011 ∈ T (M ).
  • 52.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 52 T (M ) = {w|w ∈ {0, 1}∗ e w cont´m um n´mero par de 0 s e 1 s}. e u
  • 53.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 53 • Autˆmato Finito N˜o-Determin´ o a ıstico (AFND) Um autˆmato finito n˜o-determin´stico ´ um sistema o a ı e (K, Σ, δ, q0 , F ) onde: K conjunto finito, n˜o vazio, de estados; a Σ alfabeto de entrada; δ : K × Σ → Partes(K) fun¸ao de transi¸ao (n˜o c˜ c˜ a determin´ ıstico); q0 ∈ K estado inicial; F ⊂ K conjunto de estados finais.
  • 54.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 54 • Diferen¸a entre AF e o AFND: δ(q, a) ´ um conjunto c e de estados (possivelmente vazio) ao inv´s de um e unico estado; ´ • Assim, δ(q, a) = {p1 , p2 , . . . , pk } significa que M estando no estado q e tendo a na posi¸˜o do cabe¸ote ca c na fita de entrada, move uma c´lula para a direita e e escolhe qualquer estado entre p1 , p2 , . . . , pk como pr´ximo estado. o
  • 55.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 55 ınio K × Σ∗ : • Extendendo δ para o dom´ ˆ 1. δ(q, ε) = {q}; ˆ 2. δ(q, ua) = ˆ δ(p, a) para todo u ∈ Σ∗ e p∈δ(q,u) a ∈ Σ; • Uma senten¸a u ´ aceita por M se existe um estado c e ˆ p ∈ F e p ∈ δ(q0 , u); ˆ • T (M ) = {u|p ∈ δ(q0 , u) ∧ p ∈ F }.
  • 56.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 56 Ex: AFND que aceita o conjunto de todas as senten¸as c bin´rias que cont´m dois 0’s ou 1’s consecutivos. a e 0|1 0 q GFED @ABC 3 q4 / G?= @ABC 89:; FED 0|1 0 }} }} } }}}} q0 e / GFED @ABC ee ee 0|1 ee 1 ee 1 q1 GFED @ABC q2 / G?= @ABC 89:; FED
  • 57.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 57 M = ({q0 , q1 , q2 , q3 , q4 }, {0, 1}, δ, q0 , {q2 , q4 }) e δ(q0 , 0) = {q0 , q3 } δ(q1 , 0) = ∅ δ(q2 , 0) = {q2 } δ(q3 , 0) = {q4 } δ(q4 , 0) = {q4 } δ(q0 , 1) = {q0 , q1 } δ(q1 , 1) = {q2 } δ(q2 , 1) = {q2 } δ(q3 , 1) = ∅ δ(q4 , 1) = {q4 }
  • 58.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 58 • Teorema: Se L ´ um conjunto aceito por um AFND, e ent˜o existe um autˆmato finito determin´ a o ıstico (AFD) que aceita L. (Ou seja, o n˜o determinismo n˜o acrescenta nada – a a a n˜o ser praticidade – ao AF). a
  • 59.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 59 • Seja M = (K, Σ, δ, q0 , F ) um AFND que aceita L. Definimos o AFD M = (K , Σ, δ , q0 , F ) tal que: – Os estados de M s˜o constituidos por todos os a subconjuntos do conjunto de estados de M : K = Partes(K) e K = 2K ; – Nota¸ao: estados de M s˜o [q1 q2 q3 · · · qi ], onde c˜ a q1 , q2 , q3 , . . . , qi ∈ K; – Ex: Se K = {q0 , q1 } ent˜o K = {∅, [q0 ], [q1 ], [q0 q1 ]}; a – F ´ o conjunto de todos os estados de K contendo e um estado de F ; – q0 = [q0 ];
  • 60.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 60 – Definimos δ ([q1 q2 q3 · · · qi ], a) = [p1 p2 p3 · · · pj ] se e somente se δ({q1 , q2 , . . . , qi }, a) = {p1 , p2 , . . . , pj } = δ(q1 , a) ∪ δ(q2 , a) ∪ · · · ∪ δ(qi , a).
  • 61.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 61 • Prova: T (M ) = T (M ). Por indu¸˜o sobre o ca tamanho da palavra de entrada w. Devemos mostrar ˆ que δ ([q0 ], w) = [p1 · · · pi ] se e somente se ˆ δ(q0 , w) = {p1 , . . . , pi }. a ˆ 1. Base: |w| = 0, w = ε. Ent˜o, δ ([q0 ], ε) = [q0 ] se e ˆ somente se δ(q0 , ε) = {q0 }, que ´ verdadeiro por e defini¸ao; c˜ 2. Hip´tese: |w| = n, n ≥ 1. o ˆ Supor δ ([q0 ], w) = [p1 · · · pi ] se e somente se ˆ δ(q0 , w) = {p1 , . . . , pi };
  • 62.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 62 3. Passo: |wa| = n + 1, n ≥ 1: ˆ δ ([q0 ], wa) = [q1 · · · qj ] se e somente se ˆ δ(q0 , wa) = {q1 , . . . , qj } que equivale a dizer que ˆ δ ([p1 · · · pi ], a) = [q1 · · · qj ] se e somente se ˆ δ({p1 , . . . , pi }, a) = {q1 , . . . , qj } que ´ verdade por defini¸ao. e c˜
  • 63.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 63 Exemplo: Dado o AFND M = ({q0 , q1 }, {0, 1}, δ, q0 , {q1 }) e δ(q0 , 0) = {q0 , q1 } δ(q0 , 1) = {q1 } δ(q1 , 0) = ∅ δ(q1 , 1) = {q0 , q1 } . Construir o AFD M equivalente.
  • 64.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 64 M = (K , {0, 1}, δ , [q0 ], F ) K = {[q0 ], [q1 ], [q0 q1 ], ∅} F = {[q1 ], [q0 q1 ]} δ(q0 , 0) = {q0 , q1 } ⇒ δ ([q0 ], 0) = [q0 q1 ] δ(q0 , 1) = {q1 } ⇒ δ ([q0 ], 1) = [q1 ] δ(q1 , 0) = ∅ ⇒ δ ([q1 ], 0) = ∅ δ(q1 , 1) = {q0 , q1 } ⇒ δ ([q1 ], 1) = [q0 q1 ]
  • 65.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 65 δ({q0 , q1 }, 0) = δ(q0 , 0) ∪ δ(q1 , 0) = ⇒ δ ([q0 q1 ], 0) = [q0 q1 ] = {q0 , q1 } ∪ ∅ = {q0 , q1 } δ({q0 , q1 }, 1) = δ(q0 , 1) ∪ δ(q1 , 1) = ⇒ δ ([q0 q1 ], 1) = [q0 q1 ] = {q1 } ∪ {q0 , q1 } = {q0 , q1 }
  • 66.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 66 Tabela do AFND: δ 0 1 → q0 q0 , q 1 q1 ∗q1 ∅ q0 , q 1 Tabela do AFD equivalente: δ 0 1 → [q0 ] [q0 q1 ] [q1 ] ∗[q1 ] ∅ [q0 q1 ] ∗[q0 q1 ] [q0 q1 ] [q0 q1 ]
  • 67.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 67 • Rela¸˜o entre AF e GR ca • Teorema: Se G = (N, T, P, S) ´ uma GR (Tipo 3) e ent˜o existe um AF M = (K, T, δ, S, F ) tal que a T (M ) = L(G). • Seja M um AFND: – os estados de M s˜o as vari´veis de G, mais um a a estado adicional A, A ∈ N . Assim, K = N ∪ {A}; – estado inicial de M ´ S; e – se P tem produ¸ao S → ε ent˜o F = {S, A}, caso c˜ a contr´rio F = {A}; a
  • 68.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 68 – transi¸oes de M : c˜ 1. δ(B, a) = A para cada B → a ∈ P ; 2. δ(B, a) = C para cada B → aC ∈ P ; 3. δ(A, a) = ∅ para todo a ∈ T . • Provar que T (M ) = L(G).
  • 69.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 69 Exemplo: G = ({S, B}, {0, 1}, P, S), e P : S → 0B, B → 0B|1S|0 Construir um AF que aceite L(G): M = ({S, B, A}, {0, 1}, δ, S, {A}) δ(S, 0) = {B} ⇐ S → 0B δ(S, 1) = ∅ δ(B, 0) = {B, A} ⇐ B → 0B|0 δ(B, 1) = {S} ⇐ B → 1S
  • 70.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 70 Convertendo para um AFD: M = (K , {0, 1}, δ , [S], F ) K = {∅, [S], [A], [B], [AS], [AB], [BS], [ABS]} F = {[A], [AS], [AB], [ABS]} δ ([S], 0) = [B] δ ([B], 0) = [AB] δ ([S], 1) = ∅ δ ([B], 1) = [S] δ ([AB], 0) = δ(A, 0) ∪ δ(B, 0) = ∅ ∪ {A, B} = [AB] δ ([AB], 1) = δ(A, 1) ∪ δ(B, 1) = ∅ ∪ {S} = [S] δ (∅, 0) = δ (∅, 1) = ∅
  • 71.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 71 Eliminando os estados inacess´ ıveis: K = {[S], [B], [AB]} F = {[AB]}
  • 72.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 72 • Teorema: Se M = (K, T, δ, q0 , F ) ´ um AF ent˜o e a existe uma gram´tica do Tipo 3, G = (N, T, P, S), tal a que L(G) = T (M ). • Para obter G: – N = K; – S = q0 ; – Produ¸oes: c˜ 1. B → aC para toda a transi¸˜o δ(B, a) = C; ca 2. B → a para toda a transi¸˜o δ(B, a) = C, ca quando C ∈ F ; – Se ε ∈ T (M ) ent˜o L(G) = T (M ); a
  • 73.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 73 – Se q0 ∈ F ent˜o ε ∈ T (M ), e L(G) = T (M ) − {ε}. a Neste caso, construir uma L(G ) = L(G) ∪ {ε}; • Provar L(G) = T (M ).
  • 74.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 74 Exemplo: Contruir G = (K , {0, 1}, P , [S]), K = {[S], [B], [AB]}, a partir de M do exemplo anterior: [S] → 0[B] δ ([S], 0) = [B] [B] → 0[AB] δ ([B], 0) = [AB] [B] → 0 [AB] ∈ F [AB] → 0[AB] δ ([AB], 0) = [AB] [AB] → 0 [AB] ∈ F [B] → 1[S] δ ([B], 1) = [S] [AB] → 1[S] δ ([AB], 1) = [S]
  • 75.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 75 • Minimiza¸˜o de AF. ca Um AF M ´ m´nimo se: e ı 1. n˜o possui estados inacess´ a ıveis; 2. n˜o possui estados mortos; a 3. n˜o possui estados equivalentes. a
  • 76.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 76 • Constru¸˜o do AF m´ ca ınimo: 1. retirar de K os estados inacess´veis, ou seja, todo ı estado q ∈ K para o qual n˜o exista senten¸a w tal a c ˆ que δ(q0 , w) = q; 2. retirar de K os estados mortos, ou seja, todo estado que n˜o sendo estado final e que n˜o conduz a a a nenhum estado final durante o reconhecimento; 3. construir todas as poss´ ıveis classes de equivalˆncia e de estados;
  • 77.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 77 4. construir M = (K , Σ, δ , q0 , F ) conforme segue: – K ´ o conjunto das classes de equivalˆncia e e obtidas; – q0 ´ a classe de equivalˆncia que cont´m q0 ; e e e – F ´ o conjunto de todas as classes de e equivalˆncia que cont´m pelo menos um estado e e de F ; – δ ´ o conjunto de transi¸oes tais que e c˜ δ ([p], a) = [q] para toda a transi¸˜o δ(p1 , a) = q1 , ca onde p1 ∈ [p] e q1 ∈ [q].
  • 78.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 78 • Constru¸˜o das Classes de Equivalˆncia: ca e Um conjunto de estados q1 , q2 , . . . , qj est´ em uma a mesma classe de equivalˆncia se todas as transi¸˜es e co poss´ ıveis a partir de cada estado conduz o autˆmato o aos estados qi , qi+1 , . . . , qn , estando estes ultimos ´ todos em uma mesma classe de equivalˆncia. e
  • 79.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 79 • Algoritmo: 1. Criar um estado ∅ para representar as transi¸oes c˜ indefinidas; 2. Dividir K em duas classes de equivalˆncia iniciais, e uma contendo os estados finais e a outra todos os demais estados de K; 3. Dividir sucessivamente as classes obtidas, at´ que e nenhuma nova classe possa ser obtida.
  • 80.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 80 Exemplo: δ a b → q0 q1 q5 q1 - q2 ∗q2 q3 q2 ∗q3 q3 q3 q4 q4 q1 q5 q5 q5
  • 81.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 81 Aplicando: 1. estados inacess´ ıveis: q4 ; 2. estado morto: q5 ; δ a b → q0 q1 ∅ q1 ∅ q2 ∗q2 q3 q2 ∗q3 q3 q3 ∅ ∅ ∅
  • 82.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 82 3. classes de equivalˆncia: e {q2 , q3 } {q0 , q1 , ∅} tt tt tt tt t {q0 , ∅} {q1 } t ttt ttt tt {q0 } {∅} {q2 , q3 } {q0 } {∅} {q1 } [0] [1] [2] [3]
  • 83.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 83 4. autˆmato sem classes de equivalˆncia: o e δ a b ∗[0] [0] [0] → [1] [3] [2] [2] [2] [2] [3] [2] [0]
  • 84.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 84 5. AF m´ ınimo: δ a b ∗[0] [0] [0] → [1] [3] - [3] - [0]
  • 85.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 85 Exerc´ ıcios: 1. Minimize o seguinte AF: a + GFED q0 GFED k @ABC q1 @ABC a b b q2 e GFED @ABC ?= 89:; q3 GFED @ABC ?= 89:; e e } } eea} b } a }e b }}}} eee ~ q4 2 GFED @ABC ?= 89:; q5 / GFED @ABC b a
  • 86.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 86 2. Minimize o seguinte AF: q0 GFED @ABC a q1 e GFED @ABC } ee b }}} eea }} ee } ee }} ~ b b 2 q2 f GFED o @ABC q GFED @ABC ?= 89:; 3 l a b a }} }} } }} a }} q4 GFED @ABC ?= 89:;
  • 87.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 87 • Express˜es Regulares – s˜o esquemas para o a representar linguagens regulares; • Sintaxe: 1. Todos os s´ ımbolos do alfabeto s˜o ER; a 2. Se R1 e R2 s˜o ER, ent˜o (R1 |R2 ) ´ uma ER a a e (uni˜o); a 3. Se R1 e R2 s˜o ER, ent˜o (R1 R2 ) ´ uma ER a a e (concatena¸ao); c˜ 4. Se R1 ´ ER, ent˜o (R1 )∗ ´ uma ER (repeti¸ao). e a e c˜ + Observa¸oes: R1 = R1 (R1 )∗ e R1 = R1 |ε. c˜ ?
  • 88.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 88 • Exemplos: – (a)∗ = a∗ = {ε, a, aa, aaa, . . .}; – a+ = {a, aa, aaa, . . .}; – (a|b)∗ = {ε, a, b, aa, ab, ba, bb, aaa, . . .}; – a|b∗ = {ε, a, b, bb, bbb, . . .}; – a(a|b)∗ = {a, aa, ab, aaa, aab, aba, abb, aaaa, . . .}; – (a(a|b))∗ = {ε, aa, ab, aaaa, abaa, aaab, . . .}; – Identificadores: l(l|d)∗ = {l, ll, ld, lll, . . .}; – Inteiro com sinal: (+|−)d+ ; – Inteiro com/sem sinal: ((+|−)d+ )|d+ .
  • 89.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 89 • Bombeamento para Linguagens Regulares (Pumping Lemma) – serve para provar que uma dada linguagem ´ regular; e • Para provar que sim: AF, GR, ER; • Para provar que n˜o: bombeamento; a • Prova por redu¸˜o ao absurdo; ca • Seja M = (K, Σ, δ, q0 , F ) e K = n; • Considere uma entrada w tal que |w| ≥ n;
  • 90.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 90 • Assim, o caminho no diagrama de transi¸oes deve c˜ passar por um conjunto de estados Q ⊂ K mais de uma vez (la¸o); c q0 HIJK Q qi GFED /o /o /o / ONML /o /o /o / GFED @ABC @ABC ?= 89:;
  • 91.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 91 • Lema: Seja L uma linguagem regular. Ent˜o, existe a uma constante n tal que se z ´ uma palavra de L, e e |z| ≥ n, nos podemos dizer que z = uvw de tal forma que |uv| ≤ n, |v| ≥ 1 e, para todo i ≥ 0, uv i w est´ a em L.
  • 92.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 92 • Aplica¸˜o do bombeamento (aplicado como um ca “jogo” contra um “advers´rio”): a 1. Selecione uma linguagem L que desejamos provar que n˜o ´ regular; a e 2. O “advers´rio” escolhe um n, a constante do Lema. a Uma vez escolhido o n ele n˜o pode muda-lo; a 3. Selecione uma string z ∈ L. Sua escolha depende do n escolhido no passo anterior; 4. O “advers´rio” quebra z nas partes u,v, e w, tal a que |uv| ≤ n e |v| ≥ 1; 5. Vocˆ encontra a contradi¸ao mostrando que para e c˜ qualquer u, v, e w escolhido pelo “advers´rio”, a existe um i para o qual uv i w n˜o est´ em L. a a
  • 93.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 93 n2 • Ex: L = {a |n ≥ 1} n˜o ´ regular. a e 2 Solu¸˜o: Suponha z = an , z ∈ L e L ´ regular. Seja ca e z = uvw, onde 1 ≤ |v| ≤ n e uv i w ∈ L para todo i. Em particular, seja i = 2. Ent˜o, a n2 |uv 2 w| ≤ n2 + n, j´ que |uv 2 w| = |uvw| + |v|, a |uvw| = n2 . Logo, n2 |uv 2 w| ≤ n2 + n (n + 1)2 . Ou seja, o tamanho de uv 2 w fica entre n2 e (n + 1)2 e n˜o pode ser um quadrado perfeito. Assim, uv 2 w ∈ L a e L n˜o ´ regular. a e
  • 94.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 94 • Exerc´ ıcio: Prove por bombeamento que L = {an bn |n ≥ 0} n˜o ´ regular. a e
  • 95.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 95 Solu¸˜o: Suponha z = an bn , z ∈ L e L ´ regular. ca e Escolho uv = an , w = bn . Observe que uv i w ∈ L para i 1, j´ que, neste caso, teriamos am bn para m n. a Logo, por redu¸˜o ao absurdo, L n˜o ´ regular. ca a e
  • 96.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 96 • AF com Sa´ (Moore e Mealy) – n˜o se restringe a ıda a aceita/rejeita, produz uma string de sa´ ıda; • M´quina de Mealy – sa´ associada `s transi¸˜es; a ıda a co M = (K, Σ, δ, q0 , F, ∆) Onde: K conjunto finito de estados; Σ alfabeto finito de entrada; δ : K × Σ → K × ∆∗ fun¸ao de transi¸ao; c˜ c˜ q0 ∈ K estado inicial; F ⊂ K conjunto de estados finais; ∆ alfabeto finito de sa´ ıda;
  • 97.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 97 • δ(q, a) = (p, w), com p, q ∈ K, a ∈ Σ, e w ∈ ∆∗ , significa que o AF, estando no estado q e tendo a na fita de entrada, muda para o estado p e escreve a string w na fita de sa´ıda.
  • 98.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 98 Exemplo: Seja Σ = {x} e ∆ = {a, b}. M ´ uma e m´quina de Mealy que reconhece uma palavra a w,|w| ≥ 1, tal que w = x+ e produz uma seq¨ˆncia ue v = (ab)+ , em que |v| = 2|w|. Solu¸˜o: ca q0 @ABC GFED q1 / G?= @ABC 89:; FED l (x,ab) (x,ab) Observa¸ao: arestas s˜o rotuladas com um par (x, y), c˜ a onde x ´ o s´ e ımbolo lido e y ´ a string produzida na e sa´ ıda.
  • 99.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 99 • M´quina de Moore – sa´ associada aos estados; a ıda M = (K, Σ, δ, q0 , F, ∆, δS ) Onde: K conjunto finito de estados; Σ alfabeto finito de entrada; δ : K × Σ → K fun¸ao de transi¸ao; c˜ c˜ q0 ∈ K estado inicial; F ⊂ K conjunto de estados finais; ∆ alfabeto finito de sa´ ıda; δS : K → ∆∗ fun¸ao (total) de sa´ c˜ ıda;
  • 100.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 100 Exemplo: o mesmo anterior (xxx · · · x ⇒ ababab · · · ab). Solu¸˜o: ca x @ABC GFED q0 ,a / GFED @ABC ?= 89:; q1 ,b / ONML HIJK @ABC GFED q2 ,ab x x Observa¸ao: os v´rtices s˜o rotulados com um par c˜ e a (x, y), onde x ´ o nome do estado e y ´ a sa´ e e ıda produzida pelo estado.
  • 101.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 101 • Equivalˆncia das M´quinas de Moore e Mealy e a – Excetuando-se a string vazia, os dois modelos de m´quina s˜o equivalentes; a a – A m´quina de Moore sempre gera pelo menos a a palavra associada ao estado inicial, n˜o podendo a assim gerar a senten¸a vazia; c – Prova de equivalˆncia por simula¸ao m´tua (exceto e c˜ u a senten¸a vazia); c
  • 102.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 102 – Teorema: A m´quina de Mealy simula a m´quina a a de Moore. Prova: Suponha MO = (K, Σ, δMO , q0 , F, ∆, δS ) uma m´quina de Moore. Seja: a ME = (K ∪ {qe }, Σ, δME , qe , F, ∆) uma m´quina de Mealy, onde δME ´ definido como a e segue: 1. δME (qe , a) = (δMO (q0 , a), δS (q0 )δS (δMO (q0 , a))); 2. δME (q, a) = (δMO (q, a), δS (δMO (q, a))).
  • 103.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 103 a1 ONML HIJK q0 ,u0 / ONML HIJK q1 ,u1 V a0 qe e GFED @ABC ee ee(a1 ,u0 u1 ) (a0 ,u0 u0 ) ee ee q0 GFED @ABC q1 / GFED @ABC T (a1 ,u1 ) (a0 ,u0 )
  • 104.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 104 – Observe que o estado qe introduzido ´ referenciado e apenas na primeira transi¸ao executada. Seu c˜ objetivo ´ garantir a gera¸ao da sa´ referente ao e c˜ ıda estado inicial q0 de MO; – Provar por indu¸ao. c˜
  • 105.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 105 – Teorema: A m´quina de Moore simula a m´quina a a de Mealy;
  • 106.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 106 Exerc´ ıcios: 1. Construa um AF M que aceite: (a) todas as senten¸as em {0, 1}+ que apresentem c cada “1” seguido imediatamente de dois zeros; (b) todas as senten¸as em {a, b}∗ de modo que todo c “a” apare¸a entre dois “b”; c (c) todas as senten¸as de {a, b}+ de modo que o c ultimo s´ ´ ımbolo seja “b” e o n´mero de s´ u ımbolos “a” seja par. 2. Construa a gram´tica regular equivalente a cada um a dos autˆmatos do exerc´ anterior. o ıcio
  • 107.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 107 3. Defina a express˜o regular que representa valores a “redondos” em reais (Ex: R$1,00 ou R$200,00 ou R$1.000.000,00 ou R$3.000,00).
  • 108.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 108 4. Seja a seguinte gram´tica regular: a S → 0S|1S|0A|0C|1B A → 0A|0 B → 1B|1 C → 0A|0 Pede-se: (a) o AFND M tal que T (M ) = L(G); (b) o AFD M tal que T (M ) = T (M ); (c) M tal que T (M ) = T (M ) e M seja m´ ınimo.
  • 109.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 109 5. Seja G definida por: S → aB|aD B → bB|bC C → cC|cD D → d E → aB|a Pede-se: (a) o AF M tal que T (M ) = L(G); (b) Determine T (M ); (c) Minimize M .
  • 110.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 110 6. Seja T (M ) = {abn cm d|0 ≤ n ≤ 2 ∧ m ≥ 1}. Pede-se: (a) construa M ; (b) construa G tal que L(G) = T (M ). 7. Construa o AF e a gram´tica regular equivalentes a a cada uma das ER a seguir: (a) a(b|ca)d∗ (a|b)+ ; (b) (a(b|ca)∗ (b|c)a∗ )+ .
  • 111.
    2 ´ ˆ GRAMATICAS REGULARES E AUTOMATO FINITO 111 8. Projete uma m´quina de Moore que recebendo um a valor em reais (ex: R$10.000,00) converta para d´lares (suponha rela¸ao 1-1 entre dolar e real – logo, o c˜ US$10,000.00). 9. O mesmo que o exerc´ anterior, usando m´quina ıcio a de Mealy.
  • 112.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 112 3 Gram´tica Livre de Contexto e a Autˆmato de Pilha o • As GLC tem grande importˆncia pois atrav´s delas a e podemos definir a maioria das estruturas de linguagens de programa¸ao; c˜ • As linguagens livres de contexto representam um conjunto mais amplo de linguagens que o das linguagens regulares; • O autˆmato de pilha (PDA) ´ um autˆmato mais o e o “poderoso” que o AF; • AF PDA (PDA simula AF e AF n˜o simula PDA); a
  • 113.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 113 • Exten¸˜o da defini¸˜o de GLC para permitir ca ca produ¸˜es na forma A → ε (chamadas ε-produ¸˜es); co co • Nova defini¸˜o: P = {A → β|A ∈ N ∧ β ∈ (N ∪ T )∗ }; ca • Uma GLC ´ ε-livre quando n˜o possui ε-produ¸oes e a c˜ ou quando possui apenas S → ε, onde S ´ o s´ e ımbolo inicial da gram´tica, e S n˜o aparece do lado direito a a de nenhuma regra de produ¸ao; c˜
  • 114.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 114 ´ • Arvores de Deriva¸˜o para GLC’s – s˜o ca a representa¸oes gr´ficas para as deriva¸oes da GLC c˜ a c˜ (formam uma estrutura hier´rquica); a
  • 115.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 115 • Seja G = (N, T, P, S) uma GLC. Uma ´rvore ´ uma a e a ´rvore de deriva¸˜o para G se: ca 1. todo nodo tem um r´tulo que ´ um s´ o e ımbolo de V ; 2. o r´tulo da raiz ´ S; o e 3. se um nodo A tem um ou mais descendentes, ent˜o a A ´ um elemento de N ; e 4. se A1 , A2 , . . . , An s˜o descendentes diretos de A, da a esquerda para a direita, ent˜o a A → A1 A2 · · · An ∈ P ; 5. se D ´ a unica sub-´rvore da raiz e tem r´tulo ε, e ´ a o ent˜o S → ε ∈ P . a
  • 116.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 116 • Exemplo: G = ({S, A}, {a, b}, P, S), P = {S → a|aAS, A → SbA|SS|ba}. Deriva¸˜o: ca S ⇒ aAS ⇒ aSbAS ⇒ aabAS ⇒ aabbaS ⇒ aabbaa. ´ Arvore de deriva¸˜o: ca Sd   d dd  dd  d a Ac Sb  cc b bb  cc bb  cc bb  S b Ab a  bb  bb  bb  b a b a
  • 117.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 117 • Profundidade da ´rvore de deriva¸˜o ´ o a ca e comprimento do maior caminho entre a raiz e um nodo terminal. No exemplo anterior ´ 3; e • Limite de uma ´rvore de deriva¸˜o ´ a seq¨ˆncia a ca e ue formada pela concatena¸˜o, da esquerda para a ca direita, das folhas da ´rvore de deriva¸˜o; a ca
  • 118.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 118 • Deriva¸ao mais ` esquerda e mais ` direita – a ´rvore c˜ a a a de deriva¸˜o ignora varia¸oes na ordem em que os ca c˜ s´ ımbolos s˜o substituidos na deriva¸˜o. Assim, a ca G = ({E}, {+, ∗, (, ), −, id}, P, E) P = {E → E + E|E ∗ E|(E)| − E|id} tomando a senten¸a −(id + id) podemos deriva-la das c duas seguintes formas: 1. E ⇒ −E ⇒ −(E) ⇒ −(E + E) ⇒ −(id + E) ⇒ −(id + id); 2. E ⇒ −E ⇒ −(E) ⇒ −(E + E) ⇒ −(E + id) ⇒ −(id + id);
  • 119.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 119 Ambas correspondem a mesma ´rvore de deriva¸˜o: a ca Ed ~ dd ~~~ dd ~~ dd ~ − Ec  cc  cc  cc  c ( Ec )  cc  cc  cc  c E + E id id
  • 120.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 120 • Deriva¸ao mais ` esquerda: s´ c˜ a ımbolo substituido ´ e sempre o n˜o-terminal mais ` esquerda na forma a a sentencial; • Deriva¸ao mais ` direita: s´ c˜ a ımbolo substituido ´ e sempre o n˜o-terminal mais ` direita na forma a a sentencial; • Nas duas deriva¸oes mostradas a pouco, a primeira ´ c˜ e mais ` esquerda e a segunda mais ` direita; a a
  • 121.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 121 • Exemplo: id + id ∗ id Deriva¸ao mais ` esquerda: E ⇒ E + E ⇒ id + E ⇒ c˜ a id + E ∗ E ⇒ id + id ∗ E ⇒ id + id ∗ id Deriva¸ao mais ` direita: E ⇒ E + E ⇒ c˜ a E + E ∗ E ⇒ E + E ∗ id ⇒ E + id ∗ id ⇒ id + id ∗ id Observa¸ao: se w ∈ L(G) e G ´ uma GLC, ent˜o w c˜ e a tem pelo menos uma ´rvore de deriva¸ao e, a c˜ correspondendo a esta ´rvore existe uma s´ deriva¸˜o a o ca mais ` esquerda e uma s´ deriva¸ao mais ` direita. a o c˜ a
  • 122.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 122 • Uma GLC ´ amb´gua se para a mesma senten¸a e ı c existe mais de uma ´rvore de deriva¸˜o; a ca Exemplo: id + id ∗ id Ea E Ñ aa Ñ aaa ÑÑ aa ÑÑ Ñ aa ÑÑ aa ÑÑ aa ÑÑ Ñ E + Ea Ea ∗ E Ñ aa Ñ aa ÑÑ aa ÑÑ aa ÑÑ aa ÑÑ aa ÑÑ ÑÑ id E ∗ E E + E id id id id id
  • 123.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 123 • Uma linguagem inerentemente amb´gua ´ aquele em ı e que todas as GLC que a geram s˜o amb´ a ıguas. Exemplo: L = {an bn cm dm |n ≥ 1 ∧ m ≥ 1} {an bm cm dn |n ≥ 1 ∧ m ≥ 1}
  • 124.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 124 Representada pela seguinte gram´tica: a G = ({S, X, Y, Z, W }, {a, b, c, d}, P, S) S → XY |Z X → ab|aXb Y → cd|cXd Z → aW d|aZd W → bc|bW c
  • 125.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 125 Exemplo de deriva¸ao: abcd c˜ SV S Ö VV ÖÖÖ VV ÖÖ VV Ö X YU ZV ÖÖ UU ÖÖ VV ÖÖ UU ÖÖ VV UU VV ÖÖÖ ÖÖÖ a b c d a WV d ÖÖ VV Ö VV ÖÖ VV ÖÖ b c
  • 126.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 126 • Transforma¸oes de GLC – tem o objetivo de c˜ simplifica¸˜o e prepara¸˜o para aplica¸˜es ca ca co posteriores. Observa¸˜o: a gram´tica transformada ca a deve ser equivalente ` original. a
  • 127.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 127 • Elimina¸˜o de s´ ca ımbolos in´teis u Um s´ımbolo ´ in´til se ele n˜o aparece na deriva¸ao e u a c˜ de nenhuma senten¸a. c est´ril n˜o gera nenhuma seq¨ˆncia de terminais e a ue pertencente a uma senten¸a; c inalcan¸´vel n˜o aparece em nenhuma forma ca a sentencial da gram´tica. a
  • 128.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 128 • Determina¸˜o do conjunto de s´ ca ımbolos f´rteis: e 1. Construir o conjunto N0 = ∅ e fazer i = 1; 2. Repetir (a) Ni = {A|A → α ∈ P ∧ α ∈ (Ni−1 ∪ T )∗ }; (b) i = i + 1; at´ que Ni = Ni−1 ; e 3. Ni ´ o conjunto de s´ e ımbolos f´rteis. e • Observa¸ao: se o s´ c˜ ımbolo inicial n˜o fizer parte dos a s´ ımbolos f´rteis, ent˜o a linguagem gerada pela e a gram´tica ´ vazia. a e
  • 129.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 129 • Exemplo: G = ({S, A, B, C, D}, {a, b, c, d}, P, S), P = {S → aA, A → a|bB, B → b|dD, C → cC|c, D → dD}. Solu¸˜o: ca 1. N0 = ∅; 2. N1 = {A, B, C}; 3. N2 = {S, A, B, C}; 4. N3 = {S, A, B, C} = N2 . Conjunto dos s´ ımbolos f´rteis: {S, A, B, C}. e Gram´tica simplificada: a G = ({S, A, B, C}, {a, b, c}, P , S), P = {S → aA, A → a|bB, B → b, C → cC|c}.
  • 130.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 130 • Determina¸˜o do conjunto de s´ ca ımbolos alcan¸aveis: c´ 1. Construir o conjunto V0 = {S} (S=s´ ımbolo inicial) e fazer i = 1; 2. Repetir (a) Vi = {X|∃A → αXβ ∈ P ∧ A ∈ Vi−1 ∧ α, β ∈ (N ∪ T )∗ ∧ X ∈ V } Vi−1 ; (b) i = i + 1; at´ que Vi = Vi−1 ; e 3. Vi ´ o conjunto de s´ e ımbolos alcan¸´veis. ca
  • 131.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 131 • Exemplo: G do exemplo anterior. G = ({S, A, B, C}, {a, b, c}, P , S), P = {S → aA, A → a|bB, B → b, C → cC|c}. Solu¸˜o: ca 1. V0 = {S}; 2. V1 = {a, A} V0 = {S, a, A}; 3. V2 = {a, b, B} V1 = {S, a, A, b, B}; 4. V3 = {b} V2 = {S, a, A, b, B} = V2 . Conjunto de s´ ımbolos alcan¸aveis: {S, A, B, a, b}. c´ Gram´tica simplificada: a G = ({S, A, B}, {a, b}, P , S), P = {S → aA, A → a|bB, B → b}.
  • 132.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 132 • Transforma¸ao de GLC qualquer em GLC ε-livre: c˜ 1. Reunir em um conjunto os n˜o-terminais que a derivam direta ou indiretamente a senten¸a vazia: c Ne = {A|A ∈ N ∧ A ⇒+ ε}; 2. Construir o conjunto de regras P como segue: (a) incluir em P todas as regras de P , com excess˜o a daquelas da forma A → ε; (b) para cada ocorrˆncia de um s´ e ımbolo Ne do lado direito de alguma regra de P , incluir em P mais uma regra, substituindo este s´ ımbolo por ε. Isto ´, para cada regra de P tipo A → αBβ, B ∈ Ne e e α, β ∈ V ∗ , incluir em P a regra A → αβ;
  • 133.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 133 3. Se S ∈ Ne , adicionar a P as regras S → S e S → ε, incluindo este novo n˜o-terminal S em a N = N ∪ {S }. Caso contr´rio, trocar os nomes de a S por S e de N por N ; 4. A nova gram´tica ser´ definida por: a a G = (N , T, P , S ).
  • 134.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 134 • Exemplos: 1. P : S → aB, B → bB|ε. Solu¸˜o: Ne = {B} e ca P : S → aB|a, B → bB|b; 2. P : S → bDCe, D → dD|ε, C → cC|ε. Solu¸ao: c˜ Ne = {D, C} e P : S → bDCe|bCe|bDe|be, D → dD|d, C → cC|c; 3. P : S → aS|ε. Solu¸˜o: Ne = {S} e ca P : S → S|ε, S → aS|a.
  • 135.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 135 • Remo¸˜o de Produ¸˜es Simples – produ¸˜es simples ca co co s˜o produ¸˜es na forma A → B, onde A, B ∈ N : a co 1. Transformar a GLC em GLC ε-livre, se necess´rio; a 2. Para todo n˜o-terminal de N , construir um a conjunto com os n˜o-terminais que ele pode derivar a em zero ou mais passos. Isto ´, ∀A ∈ N , construir e NA = {B|A ⇒∗ B}; 3. Se B → α ∈ P e n˜o ´ produ¸˜o simples, adicione a a e ca P as produ¸oes A → α para todo A tal que c˜ B ∈ NA ; 4. a GLC equivalente sem produ¸oes simples ´ c˜ e G = (N, T, P , S).
  • 136.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 136 • Exemplos: 1. P : S → bS|A, A → aA|a. Solu¸˜o: NS = {S, A}, ca NA = {A}, e P : S → bS|aA|a, A → aA|a; 2. P : S → aSb|A, A → aA|B, B → bBc|bc. Solu¸˜o: ca NS = {S, A, B}, NA = {A, B}, NB = {B}, e P : S → aSb|aA|bBc|bc, A → aA|bBc|bc, B → bBc|bc.
  • 137.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 137 • Fatora¸ao de GLC c˜ Uma GLC est´ fatorada se ela ´ determin´ a e ıstica, isto ´, n˜o possui produ¸˜es cujo lado direito inicie com o e a co mesmo conjunto de s´ımbolos ou com s´ ımbolos que gerem seq¨ˆncias que iniciem com o mesmo conjunto ue de s´ ımbolos. Por exemplo, uma gram´tica fatorada a n˜o poderia apresentar as seguintes regras: a A → aB|aC , pois ambas inicial com o terminal a. Outro exemplo de gram´tica n˜o-fatorada ´: a a e S → A|B A → ac B → ab .
  • 138.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 138 • Para fatorar: 1. as produ¸˜es que apresentam n˜o-determinismo co a direto, da forma A → αβ|αγ ser˜o substituidas por a A → αA A → β|γ sendo A um novo n˜o-terminal; a 2. o n˜o-determinismo indireto ´ retirado fazendo, nas a e regras de produ¸ao, as deriva¸˜es necess´rias para c˜ co a torna-lo um n˜o-determinismo direto, resolvido com a o passo anterior.
  • 139.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 139 Exemplos: 1. P : S → aA|aB, A → aA|a, B → b. Solu¸ao: c˜ P : S → aS , S → A|B, A → aA , A → A|ε, B → b; 2. P : S → Ab|ab|baA, A → aab|b. Solu¸ao: c˜ (n˜o-determinismo indireto) a P : S → aabb|bb|ab|baA, A → aab|b e P : S → aS |bS , S → abb|b, S → b|aA, A → aab|b.
  • 140.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 140 • Fatora¸ao ´ importante pois na implementa¸˜o de c˜ e ca um compilador, o mesmo deve seguir uma gram´tica a que n˜o apresente n˜o-determinismo pois, caso a a contr´rio, no processo de reconhecimento haveria a “retornos” (backtracking) que acabam reduzindo a eficiˆncia do algoritmo de reconhecimento. e
  • 141.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 141 • Teorema: Toda LLC sem ε pode ser definida por uma gram´tica que n˜o cont´m s´ a a e ımbolos in´teis, u ε-produ¸˜es, nem produ¸˜es simples. co co • Prova: Conseq¨ˆncia dos algoritmos apresentados. ue
  • 142.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 142 • Elimina¸˜o da Recurs˜o ` Esquerda ca a a Um n˜o-terminal A ´ recursivo se A ⇒+ αAβ, a e α, β ∈ V ∗ . Se α = ε, ent˜o A ´ recursivo ` esquerda. a e a Se β = ε, ´ recursivo ` direita. A recursividade pode e a ser direta ou indireta. Uma gram´tica ´ recursiva ` esquerda se possui pelo a e a menos um n˜o-terminal recursivo ` esquerda. Se a a possui pelo menos um n˜o-terminal recursivo ` a a direita, ela ´ chamada recursiva ` direita. e a
  • 143.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 143 • A importˆncia da recursividade ` esquerda ´ que a a e alguns tipos de compiladores podem executar o processo de reconhecimento como chamadas de rotinas (procedimentos ou fun¸˜es). Assim, uma co gram´tica recursiva ` esquerda, tal como por a a exemplo A → Aa|a, acaba gerando um la¸o infinito c A ⇒ Aa ⇒ Aaa ⇒ Aaaa ⇒ · · · e o processo de reconhecimento n˜o finaliza nunca. a
  • 144.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 144 • Algoritmo: 1. recurs˜es diretas: substituir cada regra o A → Aα1 |Aα2 | · · · |Aαn |β1 |β2 | · · · |βm , onde nenhum βi come¸a por A, por: c A → β1 A |β2 A | · · · |βm A A → α1 A |α2 A | · · · |αn A |ε
  • 145.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 145 2. recurs˜es indiretas: o (a) ordene os n˜o-terminais de G em uma ordem a qualquer (A1 , A2 , . . . , An ); (b) para i de 1 at´ n fa¸ae c para j de 1 at´ (i − 1) fa¸a e c troque Ai → Aj γ por Ai → δ1 γ|δ2 γ| · · · |δk γ, onde δ1 , δ2 , . . . , δk s˜o os lados direitos das a Aj -produ¸˜es (ou seja, Aj → δ1 | · · · |δk ); co fim para elimine as recurs˜es diretas das Ai -produ¸oes; o c˜ fim para.
  • 146.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 146 • Exemplo: P : S → Aa, A → Sb|cA|a. Solu¸˜o: ca (A1 = S, A2 = A), n = 2, e 1. i = 1 (n˜o faz j pois o la¸o ´ de 1 at´ 0); a c e e Eliminando as recurs˜es diretas das S-produ¸˜es: o co n˜o faz nada (pois n˜o tem); a a 2. i = 2 e j = 1: Trocar produ¸oes tipo A → Sγ: c˜ P : S → Aa, A → Aab|cA|a; Eliminar as recurs˜es diretas das A-produ¸oes: o c˜ P : S → Aa, A → cAA |aA , A → abA |ε.
  • 147.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 147 • Exerc´ıcio: Elimine a recurs˜o ` esquerda da GLC a a P : S → Aa|b, A → Bb|a, B → Sb|b.
  • 148.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 148 • Forma Normal de Chomsky (FNC) A FNC ´ uma forma canˆnica. Uma GLC est´ na e o a FNC se ela ´ ε-livre e apresenta todas as produ¸oes e c˜ da forma A → BC ou A → a , onde A, B, C ∈ N e a ∈ T .
  • 149.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 149 • Teorema: Toda LLC ε-livre pode ser gerada por uma GLC na FNC.
  • 150.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 150 Para converter uma GLC G = (N, T, P, S) ε-livre para a FNC: 1. obter G = (N , T, P , S) a partir de G, removendo de G as produ¸oes simples, de modo que c˜ L(G ) = L(G); 2. nas regras de G em que o lado direito apresenta mais de um termo, substituir cada terminal a ∈ T por um novo n˜o-terminal Aa , incluindo para cada a destes novos n˜o-terminais uma nova regra Aa → a, a resultando em G = (N , T, P , S);
  • 151.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 151 3. substituir cada regra do tipo A → B1 B2 · · · Bm , m≥3 onde A, B1 , . . . Bm s˜o n˜o-terminais, pelo conjunto a a de regras: A → B 1 B1 B1 → B 2 B2 . . . Bm−2 → Bm−1 Bm onde B1 , B2 , . . . , Bm−2 s˜o novos n˜o-terminais; a a
  • 152.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 152 4. a gram´tica na FNC ´ G = (N , T, P , S). a e
  • 153.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 153 • Exemplo: Obtenha a FNC. P : S → A|ABA A → aA|a B → bB|b Solu¸˜o: ca 1. P : S → aA|a|ABA A → aA|a B → bB|b
  • 154.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 154 2. P : S → Aa A|a|ABA A → Aa A|a B → Ab B|b Aa → a Ab → b
  • 155.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 155 3. P : S → Aa A|a|AB B → BA A → Aa A|a B → Ab B|b Aa → a Ab → b
  • 156.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 156 • Forma Normal de Greibach (FNG) A FNG ´ tamb´m uma forma canˆnica. Uma GLC e e o est´ na FNG se ela ´ ε-livre e apresenta todas as a e produ¸˜es na forma: co A → aα , onde A ∈ N , a ∈ T , e α ∈ N ∗ .
  • 157.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 157 • Teorema: Toda LLC ε-livre pode ser gerada por uma GLC na FNG.
  • 158.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 158 • Algoritmo: 1. achar G = (N , T, P , S) tal que L(G ) = L(G) e G est´ na FNC; a 2. ordenar os n˜o-terminais de G em uma ordem a qualquer N = (A1 , A2 , . . . , Am ); 3. modificar as regras de P de modo que, se Ai → Aj γ ∈ P , ent˜o j i; a 4. a gram´tica obtida no passo anterior, G , a apresentar´ todas as regras de Am com o lado a direito iniciando por terminal. Por substitui¸˜es co sucessivas dos primeiros termos das regras Ai anteriores, coloca-se estas tamb´m na mesma e forma;
  • 159.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 159 5. se no item 3 tiverem sido inclu´ıdos novos n˜o-terminais Bi (para retirar recurs˜es ` a o a esquerda), fazer tamb´m para as regras e correspondentes a estes, as devidas substitui¸oes c˜ dos primeiros termos (que ser˜o sempre terminais a ou Ai ); 6. A G est´ na FNG. a
  • 160.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 160 • Exemplo: Obtenha a FNG. P : S → AS|a A → SA|b Solu¸˜o: ca 1. G j´ est´ na FNC; a a 2. Renomear os n˜o-terminais: S = A1 e A = A2 ; a P : A1 → A2 A1 |a A2 → A1 A2 |b
  • 161.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 161 3. se Ai → Aj γ ∈ P , ent˜o j i. A unica regra a a ´ modificar ´: e A2 → A1 A2 . Substituindo A1 nesta regra: A2 → A2 A1 A2 |aA2 |b .
  • 162.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 162 Retirando a recurs˜o ` esquerda de a a A A α1 β1 β2 A2 → A2 A1 A2 | aA2 | b , obteremos: P : A1 → A2 A1 |a A β1 A β2 A A2 → aA2 B2 | b B2 A α1 A B2 → A1 A2 B2 |ε
  • 163.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 163 Retirando o ε por substitui¸oes: c˜ P : A1 → A2 A1 |a A2 → aA2 B2 |bB2 |aA2 |b B2 → A1 A2 B2 |A1 A2
  • 164.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 164 4. Fazendo as substitui¸oes finais para tornar todos os c˜ lados direitos na forma A → aα, A ∈ N , a ∈ T e α ∈ N ∗: P : A1 → aA2 B2 A1 |bB2 A1 |aA2 A1 |bA1 |a A2 → aA2 B2 |bB2 |aA2 |b B2 → aA2 B2 A1 A2 B2 |bB2 A1 A2 B2 | aA2 A1 A2 B2 |bA1 A2 B2 |aA2 B2 | aA2 B2 A1 A2 |bB2 A1 A2 |aA2 A1 A2 | bA1 A2 |aA2
  • 165.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 165 • Gram´tica de Operadores – ´ uma GLC que n˜o a e a possui produ¸oes A → αBCβ, onde A, B, C ∈ N , e c˜ α, β ∈ V ∗ . Ou seja, uma GLC em que n˜o aparecem a dois n˜o-terminais juntos em um lado direito. Ex: a P : E → E + E|E − E|E ∗ E|id. Importˆncia: a express˜es aritm´ticas de linguagens de programa¸˜o. o e ca
  • 166.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 166 • Autˆmato de Pilha o – M´quina abstrata que reconhece as LLC; a – Chamado tamb´m de “Push-down Automata” e (PDA); – Consiste de: ∗ controle finito; ∗ fita de entrada; ∗ pilha. – Caracter´ ıstica: ser n˜o-determin´ a ıstico.
  • 167.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 167 Fita de entrada 0 1 0 0 1 0 1 Cabeçote Z Controle Finito Y X Pilha
  • 168.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 168 • Movimentos do PDA: 1. Um s´ımbolo ´ lido e o cabe¸ote avan¸a para o e c c pr´ximo s´ o ımbolo; 2. “ε-move” – movimento vazio, no qual o cabe¸ote c n˜o se move, n˜o importando qual ´ o s´ a a e ımbolo que est´ sendo apontado na fita de entrada. a
  • 169.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 169 • Linguagem Aceita por um PDA Dois tipos de reconhecimento: 1. pilha vazia; 2. estado final. Observa¸oes: c˜ – No reconhecimento por pilha vazia o conjunto de estados finais ´ irrelevante; e – Os dois tipos s˜o equivalentes (resultam na mesma a classe de linguagens); – Classe reconhecida: LLC.
  • 170.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 170 • Defini¸˜o Formal de PDA ca M = (K, Σ, Γ, δ, q0 , z0 , F ) Onde: K conjunto finito de estados; Σ alfabeto finito de entrada; Γ alfabeto finito da pilha; δ : K × (Σ ∪ {ε}) × Γ → Partes(K × Γ∗ ) fun¸˜o de ca transi¸ao (mapeamentos); c˜ q0 ∈ K estado inicial; z0 ∈ Γ s´ ımbolo inicial da pilha; F ⊆ K conjunto finito de estados finais.
  • 171.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 171 • Tipos de mapeamentos: 1. δ(q, a, z) = {(p1 , γ1 ), (p2 , γ2 ), . . . , (pm , γm )}, onde q, p1 , . . . , pm ∈ K, a ∈ Σ, z ∈ Γ, e γ1 , . . . , γm ∈ Γ∗ . Significado: – M est´ no estado p, com a na entrada e z no a topo da pilha; – M pode mudar para o estado pi , 1 ≤ i ≤ m, substituindo z por γi no topo da pilha; – M avan¸a o cabe¸ote para o pr´ximo s´ c c o ımbolo.
  • 172.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 172 2. δ(q, ε, z) = {(p1 , γ1 ), (p2 , γ2 ), . . . , (pm , γm )}. Significado: – M est´ no estado p, com z no topo da pilha; a – n˜o interessa o que est´ na fita de entrada; a a – M passa ao estado pi , 1 ≤ i ≤ m, trocando z por γi no topo da pilha; – o cabe¸ote n˜o se move (movimento vazio); c a
  • 173.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 173 • Dependendo de |γ| temos as seguintes poss´ ıveis a¸˜es co do PDA em rela¸˜o ` pilha: ca a 1. |γ| ≥ 2 – troca o s´ ımbolo no topo da pilha e empilha outros (a pilha cresce); 2. |γ| = 1 – troca o s´ ımbolo no topo (pilha permanece com o mesmo tamanho); 3. |γ| = 0 (γ = ε) – desempilha o s´ ımbolo do topo (a pilha decresce de tamanho).
  • 174.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 174 • Conven¸ao: costuma-se representar a pilha na c˜ horizontal, com o topo da pilha sendo aquele s´ ımbolo que est´ mais ` esquerda. a a
  • 175.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 175 • Um autˆmato de pilha ´ determin´ o e ıstico se: 1. para qualquer q ∈ K, z ∈ Γ e a ∈ Σ ∪ {ε}, δ(q, a, z) nunca cont´m mais de um elemento; e 2. para cada q ∈ K e z ∈ Γ, sempre que δ(q, ε, z) = ∅ ent˜o δ(q, a, z) = ∅ para todo a ∈ Σ. a Observa¸ao: o segundo item impede que ocorra a c˜ escolha entre um movimento envolvendo um s´ımbolo na entrada e um “ε-move”.
  • 176.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 176 • Exemplo: PDA que aceita, por pilha vazia, L = {wcwR |w ∈ {0, 1}∗ } , onde wR ´ a seq¨encia reversa de w. e u M = ({q1 , q2 }, {0, 1, c}, {z0 , z, u}, δ, q1 , z0 , ∅) δ(q1 , 0, z0 ) = {(q1 , zz0 )} δ(q1 , 0, z) = {(q1 , zz)} δ(q1 , 0, u) = {(q1 , zu)} δ(q1 , c, z0 ) = {(q2 , z0 )} δ(q1 , c, z) = {(q2 , z)} δ(q1 , c, u) = {(q2 , u)} δ(q2 , 0, z) = {(q2 , ε)} δ(q2 , ε, z0 ) = {(q2 , ε)} δ(q1 , 1, z0 ) = {(q1 , uz0 )} δ(q1 , 1, z) = {(q1 , uz)} δ(q1 , 1, u) = {(q1 , uu)} δ(q2 , 1, u) = {(q2 , ε)}
  • 177.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 177 • Chama-se configura¸˜o de um PDA a um par (q, γ) ca onde q ∈ K e γ ∈ Γ∗ , significando que o PDA est´ no a estado q, com γ armazenado na pilha; • passagem de uma configura¸˜o para outra: ca a : (q, zγ) M (p, βγ) , onde: a ∈ Σ ∪ {ε}, γ, β ∈ Γ∗ , z ∈ Γ, e (p, β) ∈ δ(q, a, z);
  • 178.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 178 • Extendendo para seq¨ˆncias: ue ∗ a1 a2 · · · an : (q1 , γ1 ) M (qn+1 , γn+1 ) , onde: a1 , a2 , . . . , an ∈ Σ {ε}, q1 , q2 , . . . , qn+1 ∈ K, γ1 , γ2 , . . . , γn+1 ∈ Γ∗ , e ai : (qi , γi ) M (qi+1 , γi+1 ), para todo 1 ≤ i ≤ n; ∗ • conven¸ao: ε : (q, γ) c˜ M (q, γ).
  • 179.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 179 • A descri¸˜o instantˆnea de um PDA ´ formada pelo ca a e seu estado atual, o conte´do da pilha e o restante da u seq¨ˆncia de entrada a ser lida. Representa a ue situa¸˜o do reconhecimento em um determinado ca instante; • Conven¸ao: c˜ (q, bc, xyzz0 ) , significando que o autˆmato est´ no estado q, com bc o a restando na entrada (cabe¸ote esta sobre o s´ c ımbolo b), e a pilha cont´m xyzz0 , com x no topo. e
  • 180.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 180 • Exemplo: reconhecimento da senten¸a 01c10: c (q1 , 01c10, z0 ) (q1 , 1c10, zz0 ) (q1 , c10, uzz0 ) (q2 , 10, uzz0 ) (q2 , 0, zz0 ) (q2 , ε, z0 ) (q2 , ε, ε) (pilha vazia) Produ¸˜es usadas: δ(q1 , 0, z0 ) = (q1 , zz0 ), co δ(q1 , 1, z) = (q1 , uz), δ(q1 , c, u) = (q2 , u), δ(q2 , 1, u) = (q2 , ε), δ(q2 , 0, z) = (q2 , ε), δ(q2 , ε, z0 ) = (q2 , ε).
  • 181.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 181 • Linguagem aceita por um PDA – T (M ) – linguagem aceita por estado final: ∗ T (M ) = {w|w : (q0 , z0 ) M (q, γ), γ ∈ Γ∗ , q ∈ F } ; – N (M ) – linguagem aceita por pilha vazia: ∗ N (M ) = {w|w : (q0 , z0 ) M (q, ε), q ∈ K} .
  • 182.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 182 • Exemplo: M , n˜o-determin´ a ıstico, aceitando por pilha vazia N (M ) = {wwR |w ∈ {0, 1}∗ } .
  • 183.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 183 Solu¸˜o: M = ({q1 , q2 }, {0, 1}, {z0 , z, u}, δ, q1 , z0 , ∅) ca δ(q1 , 0, z0 ) = {(q1 , zz0 )} δ(q1 , 1, z0 ) = {(q1 , uz0 )} δ(q1 , 0, z) = {(q1 , zz), (q2 , ε)} δ(q1 , 0, u) = {(q1 , zu)} δ(q1 , 1, z) = {(q1 , uz)} δ(q1 , 1, u) = {(q1 , uu), (q2 , ε)} δ(q2 , 0, z) = {(q2 , ε)} δ(q2 , 1, u) = {(q2 , ε)} δ(q1 , ε, z0 ) = {(q2 , ε)} δ(q2 , ε, z0 ) = {(q2 , ε)}
  • 184.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 184 • Reconhecimento de 001100: 0 : (q1 , z0 ) (q1 , zz0 ) 0 : (q1 , zz0 ) (q1 , zzz0 ) 1 : (q1 , zzz0 ) (q1 , uzzz0 ) 1 : (q1 , uzzz0 ) (q2 , zzz0 ) 0 : (q2 , zzz0 ) (q2 , zz0 ) 0 : (q2 , zz0 ) (q2 , z0 ) ε : (q2 , z0 ) (q2 , ε)
  • 185.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 185 • Esta linguagem n˜o poderia ser reconhecida por um a PDA determin´ ıstico. Por que? • Diferente do que ocorre com os autˆmatos finitos, em o que AFD ≡ AFND, nos autˆmatos de pilha, o PDA determin´ ıstico ≡ PDA n˜o − determin´ a ıstico; • Isto particiona as LLC em LLC determin´ ısticas e n˜o-determin´ a ısticas (LLC determin´ ısticas ⊂ LLC n˜o-determin´ a ısticas).
  • 186.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 186 • Representa¸ao Gr´fica de PDA c˜ a (a,x)→xx (b,x)→ε (a,z0 )→xz0 (b,x)→ε q0 GFED j @ABC 89:; ?= q1 / GFED @ABC q2 / GFED @ABC (ε,z0 )→ε Conven¸ao: (a, w) → z, significando que a ∈ Σ est´ c˜ a na entrada, w ∈ Γ est´ no topo da pilha e z ∈ Γ∗ ser´ a a empilhado (se z = ε ent˜o desempilha). a δ(q0 , a, z0 ) = {(q1 , xz0 )} δ(q1 , a, x) = {(q1 , xx)} δ(q1 , b, x) = {(q2 , ε)} δ(q2 , b, x) = {(q2 , ε)} δ(q2 , ε, z0 ) = {(q0 , ε)}
  • 187.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 187 Linguagem reconhecida: L(M ) = {an bn |n ≥ 0}
  • 188.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 188 • Rela¸˜o entre PDA e LLC: GLC ⇒ PDA e ca PDA ⇒ GLC; • Teorema: Se L ´ uma LLC, ent˜o existe um PDA M e a tal que L = N (M ); • Algoritmo para construir M : 1. Colocar G = (N, T, P, S) na FNG. Assumimos que ε ∈ L(G); 2. M = ({q1 }, T, N, δ, q1 , S, ∅). Para cada regra A → aγ ∈ P corresponde: δ(q1 , a, A) ⊃ (q1 , γ) ; • Provar L(G) = N (M ).
  • 189.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 189 • Exemplo: PDA para reconhecer a linguagem gerada pela seguinte gram´tica: a G = ({S, A}, {a, b}, {S → aAA, A → bS|aS|a}, S) Solu¸˜o: ca M = ({q1 }, {a, b}, {S, A}, δ, q1 , S, ∅) δ(q1 , a, S) = {(q1 , AA)} δ(q1 , b, A) = {(q1 , S)} δ(q1 , a, A) = {(q1 , S), (q1 , ε)}
  • 190.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 190 • Teorema: Se L ´ uma linguagem reconhecida por e algum PDA ent˜o L ´ LLC; a e
  • 191.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 191 • Algoritmo para construir G: Seja M = (K, Σ, Γ, δ, q0 , z0 , ∅). Ent˜o, G = (N, Σ, P, S), a onde: N conjunto de objetos na forma [q, A, p], q, p ∈ K e A ∈ Γ, unido com {S}; P obtido da seguinte forma: 1. S → [q0 , z0 , q] para cada q ∈ K; 2. [q, A, p] → a[q1 , B1 , q2 ][q2 , B2 , q3 ] · · · [qm , Bm , qm+1 ] para cada q, q1 , q2 , . . . , qm+1 ∈ K, onde p = qm+1 , a ∈ Σ ∪ {ε}, A, B1 , B2 , . . . , Bm ∈ Γ, tal que δ(q, a, A) ⊃ (q1 , B1 B2 · · · Bm ). Se m = 0 ent˜o a q1 = p, δ(q, a, A) ⊃ (p, ε) e a produ¸˜o ´ ca e [q, A, p] → a.
  • 192.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 192 • Exemplo: Seja M = ({q0 , q1 }, {0, 1}, {X, z0 }, δ, q0 , z0 , ∅) e δ(q0 , 0, z0 ) = {(q0 , xz0 )} δ(q0 , 0, x) = {(q0 , xx)} δ(q0 , 1, x) = {(q1 , ε)} δ(q1 , 1, x) = {(q1 , ε)} δ(q1 , ε, x) = {(q1 , ε)} δ(q1 , ε, z0 ) = {(q1 , ε)} Construir G = (N, T, P, S).
  • 193.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 193 Solu¸ao: c˜ N = {S, [q0 , x, q0 ], [q0 , x, q1 ], [q1 , x, q0 ], [q1 , x, q1 ], [q0 , z0 , q0 ], [q0 , z0 , q1 ], [q1 , z0 , q0 ], [q1 , z0 , q1 ]} T = {0, 1} Produ¸oes: c˜ S → [q0 , z0 , q0 ]|[q0 , z0 , q1 ] (pela regra 1) Pela regra 2: [q0 , z0 , q0 ] → 0[q0 , x, q0 ][q0 , z0 , q0 ]|0[q0 , x, q1 ][q1 , z0 , q0 ] Ou seja, q p a q1 B1 B2= qm+1 =p A z}|{ z}|{ z}|{ z}|{ z}|{ z}|{ z }| { z}|{ z}|{ [ q0 , z0 , q0 ] → 0 [ q0 , x , q0 ][q0 , z0 , q0 ] para p = q0 q a A q1 B1 B2 =Bm z}|{ z}|{ z}|{ z}|{ z}|{ z}|{ δ( q0 , 0 , z0 ) = {( q0 , x z0 )} (m = 2)
  • 194.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 194 Observe que repetimos o lado direito da regra para B2 = q0 e B2 = q1 : p=q0 B2 =q0 B2 =q0 B2 =q1 B2 =q1 z}|{ z}|{ z}|{ z}|{ z}|{ [q0 , z0 , q0 ] → 0[q0 , x, q0 ][ q0 , z0 , q0 ]|0[q0 , x, q1 ][ q1 , z0 , q0 ] Repetindo, agora para p = q1 (j´ que a regra exige ∀p ∈ K): a p=q1 qm+1 =p qm+1 =p z}|{ z}|{ z}|{ [q0 , z0 , q1 ] → 0[q0 , x, q0 ][q0 , z0 , q1 ]|0[q0 , x, q1 ][q1 , z0 , q1 ]
  • 195.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 195 Exemplificando para casos em que m = 0: q a A p m=0 δ( q0 , 1 , x ) = {( q1 , ε )} q A p a [ q0 , x , q1 ] → 1 (p = q1 = q1 ) Outro caso (a = ε): q a A p m=0 δ( q1 , ε , x ) = {( q1 , ε )} q A p a [ q1 , x , q1 ] → ε
  • 196.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 196 Solu¸˜o completa: ca S → [q0 , z0 , q0 ]|[q0 , z0 , q1 ] [q0 , z0 , q0 ] → 0[q0 , x, q0 ][q0 , z0 , q0 ] |0[q0 , x, q1 ][q1 , z0 , q0 ] [q0 , z0 , q1 ] → 0[q0 , x, q0 ][q0 , z0 , q1 ] |0[q0 , x, q1 ][q1 , z0 , q1 ] [q0 , x, q0 ] → 0[q0 , x, q0 ][q0 , x, q0 ] |0[q0 , x, q1 ][q1 , x, q0 ] [q0 , x, q1 ] → 0[q0 , x, q0 ][q0 , x, q1 ] |0[q0 , x, q1 ][q1 , x, q1 ] |1 [q1 , z0 , q1 ] → ε [q1 , x, q1 ] → 1|ε
  • 197.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 197 Observe que n˜o existem produ¸oes para os a c˜ n˜o-terminais [q1 , x, q0 ] e [q1 , z0 , q0 ]. Assim, simplificando: a S → [q0 , z0 , q1 ] [q0 , z0 , q1 ] → 0[q0 , x, q1 ][q1 , z0 , q1 ] [q0 , x, q1 ] → 0[q0 , x, q1 ][q1 , x, q1 ]|1 [q1 , z0 , q1 ] → ε [q1 , x, q1 ] → 1|ε
  • 198.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 198 • Provar N (M ) = L(G).
  • 199.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 199 Exerc´ ıcios: 1. Sejam G e G abaixo, representadas por seu conjunto de produ¸oes: c˜ P : S → A2D|D2A|2 A → A1|B1|1 B → B1|B0 C → 0B|0 D → 0D|0
  • 200.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 200 P : S → A|B|AB A → aB|bS|b B → AB|Ba|cB C → AS|AB|b Pede-se: (a) mostre a deriva¸˜o mais ` esquerda de 00211 para ca a G e a deriva¸˜o mais ` direita de bb para G ; ca a (b) monte as ´rvores de deriva¸ao destas duas a c˜ deriva¸˜es; co (c) retire todos os s´ ımbolos in´teis das duas u gram´ticas. a
  • 201.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 201 2. Seja G = ({S}, {a, b}, {S → SaS|b}, S). (a) G ´ amb´ ua? (justifique); e ıg¨ (b) caso seja amb´ ua, existe alguma gram´tica ıg¨ a equivalente que n˜o seja amb´ ua? a ıg¨
  • 202.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 202 3. Seja G = ({A, B, C, D}, {a, b, c}, P, A), e P : A → ab|aBc|ε B → CBa|Aa C → Db|c D → Bab|Da|ε Pede-se: (a) transformar em uma gram´tica equivalente ε-livre; a (b) elimine todas as recurs˜es ` esquerda da gram´tica o a a obtida no item anterior, se houver; (c) fatore a gram´tica obtida no item anterior, se a necess´rio. a
  • 203.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 203 4. Seja G = ({S, A, B, C}, {a, b, c}, P, S), onde P : S → Aa A → BC B → Sb|ε C → cC|ε Pede-se: (a) transforme G em ε-livre; (b) elimine as produ¸oes simples; c˜ (c) elimine as recurs˜es ` esquerda. o a
  • 204.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 204 5. Transforme as GLC abaixo em equivalentes ε-livre e elimine as produ¸˜es simples: co P : E → TP P → +T P |ε T → FQ Q → ∗F Q|ε F → (E)|id P : S → cSc|BA A → aA|ε B → bB|CA|ε C → cCc|AS
  • 205.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 205 6. Elimine as recurs˜es ` esquerda: o a P : E → E + T |E − T |T T → T ∗ F |T /F |F F → F ∗ ∗P |P P → (E)|id P : S → BaS|Da|ε A → Sa|ε B → SAa D → Db|b
  • 206.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 206 7. Fatore as seguintes GLC: P : S → abC|abD C → cC|cD|ba D → dD|dC|ba P : S → bcD|Bcd B → bB|b D → dD|d
  • 207.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 207 8. Obtenha a FNC e a FNG: P : S → aSb|cC C → Dd|d D → cC 9. Obtenha a FNG: P : S → AA|0 A → SS|1
  • 208.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 208 10. Obtenha a FNC de G = ({S, T, L}, {a, b, +, −, ∗, /, [, ]}, P, S), onde: P : S → T + S|T − S|T T → L ∗ T |L/T |L L → [S]|a|b
  • 209.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 209 11. Construa autˆmatos de pilha que reconhe¸am as o c seguintes linguagens: (a) L = {w|w ∈ {a, b}∗ tal que o n´mero de a seja o dobro do de b}; u (b) L = {w|w ∈ {0, 1}∗ tal que o n´mero de 0 seja igual ao de 1}. u
  • 210.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 210 12. Uma estrutura de lista pode ser definida como: (a) λ ´ uma lista vazia; e (b) a (´tomo) ´ uma lista; a e (c) se l1 , l2 , . . . , lk s˜o listas, para k ≥ 1, ent˜o a a (l1 , l2 , . . . , lk ) ´ uma lista. e Pede-se: (a) Defina uma GLC que gere estruturas de listas; (b) Desenhe uma ´rvore de deriva¸˜o para a senten¸a a ca c ((a, a), λ, (a)); (c) Construa um PDA que reconhe¸a listas; c (d) Escreva os movimentos que o PDA realiza para reconhecer a senten¸a acima. c
  • 211.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 211 13. Dada a gram´tica G = ({S, A, B}, {a, b, c}, P, S), a onde: P : S → aAA|Bc A → aS|BS|a B → b|bB Pede-se: (a) verifique se a senten¸a abaaaa pertence ` L(G) c a atrav´s de deriva¸˜es mais ` esquerda; e co a (b) construa um PDA correspondente a G; (c) mostre o reconhecimento da mesma senten¸ac abaaaa pelo PDA, atrav´s de descri¸ao instantˆnea. e c˜ a
  • 212.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 212 14. Seja o PDA M = ({q0 , q1 }, {a, b}, {z0 , x}, δ, q0 , z0 , ∅), onde: δ(q0 , b, z0 ) = {(q0 , xz0 )} δ(q0 , b, x) = {(q0 , xx)} δ(q0 , a, x) = {(q1 , x)} δ(q0 , ε, z0 ) = {(q0 , ε)} δ(q1 , b, x) = {(q1 , ε)} δ(q1 , a, z0 ) = {(q0 , z0 )}
  • 213.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 213 Pede-se: (a) construa uma GLC que gera a linguagem N (M ); (b) mostre a seq¨ˆncia de descri¸˜es instantˆneas do ue co a PDA ao reconhecer alguma senten¸a w de N (M ) c com |w| ≥ 4.
  • 214.
    3 ´ ˆ GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 214 15. Seja G definida por: P : S → 0AS|1BS|ε A → 0AA|1 B → 1BB|0 Pede-se: (a) construa o PDA equivalente a G; (b) mostre, atrav´s de descri¸˜es instantˆneas, o e co a reconhecimento (ou n˜o) das seguintes senten¸as: a c i. 001011; ii. 111001.
  • 215.
    4 ALGORITMO CYK 215 4 Algoritmo CYK • Algoritmo reconhecedor de LLC proposto por Cocke, Younger e Kasami (1965); • Constru´ sobre uma GLC na FNC; ıdo • Gera bottom-up todas as ´rvores de deriva¸ao da a c˜ entrada w em tempo O(|w|3 );
  • 216.
    4 ALGORITMO CYK 216 • Algoritmo: 1. Suponha G = (N, T, P, S), e w = a1 a2 a3 · · · an uma entrada a ser verificada. V (r, s), onde s ´ o n´mero e u de linha e r o n´mero de coluna, representa as u c´lulas de uma matriz triangular ilustrada a seguir: e
  • 217.
    4 ALGORITMO CYK 217 X X X X X X ↑ X X X X . . . . . . . . s . . . . s=1 X X X ··· X a1 a2 a3 ··· an r→
  • 218.
    4 ALGORITMO CYK 218 2. Vari´veis que geram diretamente terminais a (A → a): para r de 1 at´ n fa¸a V (r, 1) = {A|A → ar ∈ P } e c fim para
  • 219.
    4 ALGORITMO CYK 219 3. Produ¸ao que gera duas vari´veis (A → BC): c˜ a para s de 2 at´ n e fa¸a c para r de 1 at´ n − s + 1 e fa¸a c V (r, s) = ∅ para k de 1 at´ s − 1 e fa¸a c V (r, s) = V (r, s) {A|A → BC ∈ P, B ∈ V (r, k) ∧ C ∈ V (r + k, s − k)} fim para fim para fim para
  • 220.
    4 ALGORITMO CYK 220 4. Condi¸ao de aceita¸ao: se o s´ c˜ c˜ ımbolo inicial da gram´tica estiver no v´rtice V (1, n). a e
  • 221.
    4 ALGORITMO CYK 221 Observa¸˜es: O limite da itera¸ao para r ´ co c˜ e (n − s + 1) pois a tabela ´ triangular; Os v´rtices e e V (r, k) e V (r + k, s − k) s˜o as ra´ da sub-´rvore a ızes a de deriva¸ao de V (r, s); Se uma c´lula for vazia c˜ e significa que ela n˜o gera nenhuma sub-´rvore. a a
  • 222.
    4 ALGORITMO CYK 222 • Exemplo: G = ({S, A}, {a, b}, P, S), onde P = {S → AA|AS|b, A → SA|AS|a}, e a entrada ´ e w = abaab. A tabela resolvida ´ ilustrada a seguir: e S, A S, A S, A S, A S S, A S, A A S S, A A S A A S a b a a b
  • 223.
    4 ALGORITMO CYK 223 Solu¸˜o: ca 1. s = 2, r = 1, k = 1: A → BC, B ∈ V (1, 1) e C ∈ V (2, 1). V (1, 2) = ∅ {S, A} = {S, A}; 2. s = 2, r = 2, k = 1: B ∈ V (2, 1) e C ∈ V (3, 1). V (2, 2) = ∅ {A} = {A}; 3. s = 2, r = 3, k = 1: B ∈ V (3, 1) e C ∈ V (4, 1). V (3, 2) = ∅ {S} = {S}; 4. s = 2, r = 4, k = 1: B ∈ V (4, 1) e C ∈ V (5, 1). V (4, 2) = ∅ {S, A} = {S, A}; 5. s = 3, r = 1, k = 1: B ∈ V (1, 1) e C ∈ V (2, 2). V (1, 3) = ∅ {S} = {S};
  • 224.
    4 ALGORITMO CYK 224 6. s = 3, r = 1, k = 2: B ∈ V (1, 2) e C ∈ V (3, 1). V (1, 3) = {S} {S, A} = {S, A}; 7. s = 3, r = 2, k = 1: B ∈ V (2, 1) e C ∈ V (3, 2). V (2, 3) = ∅ ∅ = ∅; 8. s = 3, r = 2, k = 2: B ∈ V (2, 2) e C ∈ V (4, 1). V (2, 3) = ∅ {S} = {S}; 9. s = 3, r = 3, k = 1: B ∈ V (3, 1) e C ∈ V (4, 2). V (3, 3) = ∅ {S, A} = {S, A}; 10. s = 3, r = 3, k = 2: n˜o precisa. a 11. s = 4, r = 1, k = 1: B ∈ V (1, 1) e C ∈ V (2, 3). V (1, 4) = ∅ {S, A} = {S, A};
  • 225.
    4 ALGORITMO CYK 225 12. s = 4, r = 1, k = 2, 3: n˜o precisa; a 13. s = 4, r = 2, k = 1: B ∈ V (1, 1) e C ∈ V (2, 3). V (2, 4) = ∅ {S, A} = {S, A}; 14. s = 4, r = 2, k = 2, 3: n˜o precisa; a 15. s = 5, r = 1, k = 1: B ∈ V (1, 1) e C ∈ V (2, 4). V (1, 5) = ∅ {S, A} = {S, A}; 16. s = 5, r = 1, k = 2, 3, 4: n˜o precisa. a
  • 226.
    4 ALGORITMO CYK 226 • Exerc´ıcio: Reconhe¸a usando o algoritmo CYK. c P : S → AB|BC, A → BA|a, B → CC|b, C → AB|a e entrada w = baaba.
  • 227.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 227 5 Linguagens Tipo 0 e M´quinas a de Turing • As m´quinas de Turing (TM) foram propostas como a um modelo matem´tico para representar a procedimentos algor´ıtmicos; • S˜o um formalismo para definir computabilidade – a conceito relacionado com os problemas que podem ser resolvidos de forma mecˆnica (algor´ a ıtmica); • Tese de Church: “a m´quina de Turing computa a exatamente o conjunto das fun¸˜es que s˜o co a ‘comput´veis’ em um sentido intuitivo e informal”; a
  • 228.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 228 • M´quinas de Turing s˜o simultaneamente: a a – mecanismos para reconhecer linguagens Tipo 0 ou linguagens recursivamente enumer´veis ou a conjuntos recursivamente enumer´veis; a – mecanismos para computar fun¸˜es parciais co recursivas;
  • 229.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 229 • Os conjuntos recursivamente enumer´veis s˜o os a a conjuntos mais amplos que podem ser reconhecidos (ou gerados) algoritmicamente;
  • 230.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 230 • As fun¸oes computadas por TM s˜o chamadas de c˜ a fun¸˜es parciais recursivas: co parciais a m´quina pode entrar em um a “la¸o infinito”, significando que a fun¸˜o n˜o est´ c ca a a definida para um determinado valor de entrada; recursivas por raz˜es hist´ricas, s˜o assim chamadas o o a pois as fun¸oes computadas podem ser definidas c˜ por um formalismo recursivo;
  • 231.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 231 • Modelo de M´quina de Turing a Fita de Trabalho/Entrada a 1 a 2 a 3 ... ai ... an B B ... cabeçote Controle Finito
  • 232.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 232 • TM ´ formada por: e Fita de Trabalho/Entrada onde ´ inicialmente e posta a senten¸a a ser reconhecida; formada por c c´lulas que podem armazenar um s´ e ımbolo; limitada ` esquerda e infinita ` direita; a a Cabe¸ote permite ler/escrever s´ c ımbolos da/na fita; Controle Finito controla o cabe¸ote; representa o c “programa” sendo computado pela m´quina; a
  • 233.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 233 • Movimentos de TM: 1. trocar de estado; 2. gravar um s´ımbolo na c´lula da fita sobre a qual e est´ o cabe¸ote; a c 3. redu¸ao do tamanho da string armazenada (basta c˜ escrever um “branco” sobre o s´ımbolo do extremo direito da string armazenada); 4. amplia¸ao do tamanho da string armazenada (basta c˜ escrever um n˜o-branco na posi¸ao imediatamente ` a c˜ a direita da string); 5. mover o cabe¸ote uma c´lula para a esquerda ou c e para a direita;
  • 234.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 234 Observa¸ao: n˜o podemos escrever um “branco” a c˜ a n˜o ser na ultima posi¸ao ` direita da string a ´ c˜ a armazenada (n˜o podemos dividir a string a armazenada em duas ou introduzir brancos ` a esquerda). S´ podemos estar em uma c´lula com o e “branco” se esta for a imediatamente seguinte ao ultimo s´ ´ ımbolo ` direita da string; a
  • 235.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 235 • Uma m´quina de Turing ´ definida por: a e M = (K, Σ, Γ, δ, q0 , F ) Onde: K conjunto finito de estados; Σ ⊂ Γ conjunto finito de s´ ımbolos de entrada; Γ conjunto finito de s´ ımbolos da fita (incluindo “branco”);
  • 236.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 236 δ : K × Γ → K × Γ × {L, R, −} fun¸ao (parcial) de c˜ movimento, onde L ´ o movimento do cabe¸ote e c para a esquerda, R ´ o movimento do cabe¸ote e c para a direita, e − significa que o cabe¸ote c permanece onde est´. Observe-se que s´ ´ poss´ a oe ıvel escrever “branco” na fita no extremo direito da string armazenada. O movimento do cabe¸ote ´ c e executado ap´s a escrita do s´ o ımbolo na fita; q0 ∈ K estado inicial; F ⊂ K conjunto de estados finais.
  • 237.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 237 • A configura¸˜o de uma m´quina de Turing ´ ca a e representada por (q, α, i) Onde: q ∈ K estado atual da m´quina; a α ∈ (Γ − {B})∗ string armazenada na fita; i posi¸ao do cabe¸ote. c˜ c
  • 238.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 238 a 1 a 2 a 3 ... ai ... an B B ... i q
  • 239.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 239 • A descri¸˜o instantˆnea de TM ´ definida como: ca a e α1 qα2 onde: q ∈ K estado corrente da m´quina; a α1 , α2 ∈ Γ∗ seq¨ˆncias de s´ ue ımbolos representando os lados direito e esquerdo do cabe¸ote. c Observa¸ao: assume-se que o cabe¸ote est´ c˜ c a apontando para o s´ ımbolo mais ` esquerda de α2 . Se a α2 = ε ent˜o o cabe¸ote est´ apontando para B. Se a c a α1 = ε ent˜o o cabe¸ote est´ na primeira posi¸ao da a c a c˜ string armazenada (i = 1).
  • 240.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 240 • Movimentos de TM: – Se 1 ≤ i ≤ n, x ∈ (Γ − {B}) e δ(q, ai ) = (p, x, R) ent˜o (q, a1 a2 · · · ai · · · an , i) a (p, a1 a2 · · · ai−1 xai+1 · · · an , i + 1); – Se 2 ≤ i ≤ n, x ∈ (Γ − {B}) e δ(q, ai ) = (p, x, L) ent˜o (q, a1 a2 · · · ai · · · an , i) a (p, a1 a2 · · · ai−1 xai+1 · · · an , i − 1); – Se 1 ≤ i ≤ n, x ∈ (Γ − {B}) e δ(q, ai ) = (p, x, −) ent˜o a (q, a1 a2 · · · ai · · · an , i) (p, a1 a2 · · · ai−1 xai+1 · · · an , i);
  • 241.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 241 – Se x ∈ (Γ − {B}) e δ(q, B) = (p, x, −) ent˜o a (q, a1 a2 · · · an , n + 1) (p, a1 a2 · · · an x, n + 1); – Se x ∈ (Γ − {B}) e δ(q, B) = (p, x, L) ent˜o a (q, a1 a2 · · · an , n + 1) (p, a1 a2 · · · an x, n); – Se x ∈ (Γ − {B}) e δ(q, B) = (p, x, R) ent˜o a (q, a1 a2 · · · an , n + 1) (p, a1 a2 · · · an x, n + 2); – Se δ(q, an ) = (p, B, −) ent˜o a (q, a1 a2 · · · an , n) (p, a1 a2 · · · an−1 , n); – Se δ(q, an ) = (p, B, L) ent˜o a (q, a1 a2 · · · an , n) (p, a1 a2 · · · an−1 , n − 1);
  • 242.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 242 – Se δ(q, B) = (p, B, −) ent˜o a (q, a1 · · · an , n + 1) (p, a1 · · · an , n + 1); – Se δ(q, B) = (p, B, L) ent˜o a (q, a1 · · · an , n + 1) (p, a1 · · · an , n).
  • 243.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 243 • Linguagem aceita por TM Seja M = (K, Σ, Γ, δ, q0 , F ), ent˜o: a L(M) = {w|w ∈ Σ∗ ∧ ∃q ∈ F, α ∈ Γ∗ , i ≥ 0(q0 , w, 1) (q, α, i)}.
  • 244.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 244 • Parada de TM – se uma TM aceita uma linguagem L ent˜o ela p´ra para todas as palavras de L; a a Existem duas possibilidades de n˜o reconhecer uma a palavra: 1. o processo de reconhecimento trancar antes de ser encontrado um estado final; 2. a palavra n˜o ´ reconhecida pois a m´quina n˜o a e a a p´ra (fun¸˜o parcial). a ca
  • 245.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 245 • Rela¸˜o entre TM e Gram´tica Tipo 0 ca a • Teorema: Se L ´ gerada por uma gram´tica Tipo 0 e a ent˜o L pode ser reconhecida por uma m´quina de a a Turing; • Teorema: Se L ´ reconhecida por uma m´quina de e a Turing ent˜o L ´ gerada por uma gram´tica Tipo 0. a e a
  • 246.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 246 • Exemplo: L = {0n 1n |n ≥ 1}. Solu¸˜o: ca M = (K, Σ, Γ, δ, q0 , F ) K = {q0 , q1 , q2 , q3 , q4 , q5 } Σ = {0, 1} Γ = {0, 1, x, y, B} F = {q5 }
  • 247.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 247 δ(q0 , 0) = (q1 , x, R) δ(q1 , 0) = (q1 , 0, R) δ(q1 , 1) = (q2 , y, L) δ(q2 , y) = (q2 , y, L) δ(q2 , x) = (q3 , x, R) δ(q2 , 0) = (q4 , 0, L) δ(q4 , 0) = (q4 , 0, L) δ(q4 , x) = (q0 , x, R) δ(q3 , y) = (q3 , y, R) δ(q3 , B) = (q5 , B, −) δ(q1 , y) = (q1 , y, R)
  • 248.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 248 Reconhecimento de 0011: (q0 , 0011, 1) (q1 , x011, 2) (q1 , x011, 3) (q2 , x0y1, 2) (q4 , x0y1, 1) (q0 , x0y1, 2) (q1 , xxy1, 3) (q1 , xxy1, 4) (q2 , xxyy, 3) (q2 , xxyy, 2) (q3 , xxyy, 3)
  • 249.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 249 (q3 , xxyy, 4) (q3 , xxyy, 5) (q5 , xxyy, 5)
  • 250.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 250 • Fun¸ao computada por TM – podemos considerar a c˜ m´quina de Turing tamb´m como um mecanismo a e para computar fun¸oes parciais recursivas (fun¸oes c˜ c˜ sobre strings); • Se considerarmos a tripla (q0 , δ, F ) como sendo um programa p, ent˜o podemos considerar a fun¸˜o Mp a ca como sendo a fun¸˜o computada pelo programa p na ca m´quina M. a
  • 251.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 251 • Existem diversas varia¸˜es da defini¸˜o de m´quina co ca a de Turing: 1. TM n˜o-determin´ a ıstica; 2. fita infinita em ambas as dire¸oes; c˜ 3. TM com mais de um cabe¸ote; c 4. TM com mais de uma fita; 5. combina¸oes destas possibilidades; c˜ • Todas s˜o equivalentes ` defini¸ao original (TM a a c˜ original simula todas as suas varia¸˜es); co • Isto ´ uma evidˆncia da corre¸ao da tese de Church. e e c˜
  • 252.
    5 ´ LINGUAGENS TIPO 0 E MAQUINAS DE TURING 252 Exerc´ ıcios: 1. Defina uma TM para reconhecer L = {w|w ∈ {0, 1}∗ ∧ w = wR } (pal´ ındromes); 2. Defina uma TM para reconhecer L = {an bn cn |n ≥ 0} e mostre o reconhecimento de aabbcc.
  • 253.
    6 ˆ LSC E AUTOMATOS DE FITA LIMITADA 253 6 LSC e Autˆmatos de Fita o Limitada • Um autˆmato de fita limitada – Linear Bounded o Automata (LBA) – ´ uma m´quina de Turing e a n˜o-determin´stica em que o cabe¸ote nunca a ı c abandona aquelas c´lulas sobre as quais a senten¸a e c de entrada foi gravada; • O LBA ´ o reconhecedor das linguagens sens´ e ıveis ao contexto (LSC);
  • 254.
    6 ˆ LSC E AUTOMATOS DE FITA LIMITADA 254 • Defini¸˜o formal de LBA ca M = (K, Σ, Γ, δ, q0 , F ) Onde: K conjunto finito de estados; Σ ⊂ Γ conjunto finito de s´ ımbolos de entrada; Γ conjunto finito de s´ ımbolos da fita; δ : K × Γ → Partes(K × Γ × {L, R, −}) ; q0 ∈ K estado inicial; F ⊂ K conjunto finito de estados finais.
  • 255.
    6 ˆ LSC E AUTOMATOS DE FITA LIMITADA 255 Observa¸ao: o conjunto Γ possui dois s´ c˜ ımbolos especiais £ e $ que s˜o os limites ` esquerda e ` a a a direita da senten¸a de entrada. c
  • 256.
    6 ˆ LSC E AUTOMATOS DE FITA LIMITADA 256 • Linguagem aceita por um LBA: L = {w|w ∈ Σ∗ ∧ ∃q ∈ F, α ∈ Γ∗ , i ≥ 0(q0 , £w$, 1) (q, α, i)}. Teorema: Se L ´ uma LSC ent˜o L ´ aceita por e a e algum LBA. Teorema: Se L ´ reconhecida por um LBA ent˜o e a L − {ε} ´ uma LSC. e
  • 257.
    7 HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA) 257 7 Hierarquia de Chomsky (revisitada e ampliada) Relembrando: Regulares Livres de Contexto ´ Sensiveis ao Contexto Tipo 0 Tipo 3 ⊂ Tipo 2 ⊂ Tipo 1 ⊂ Tipo 0 ⊂ T ∗
  • 258.
    7 HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA) 258 • Nos extremos da hierarquia (AF e TM – linguagens regulares e Tipo 0) existe equivalˆncia entre e determinismo e n˜o-determinismo (mesma classe de a linguagens reconhecidas); • Para o autˆmato de fita limitada n˜o se sabe se o a determinismo e n˜o-determinismo aceitam a mesma a classe de linguagens ou classes diferentes (quest˜o em a aberto; n˜o existe prova matem´tica); a a
  • 259.
    7 HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA) 259 • Para o PDA sabemos que n˜o existe equivalˆncia a e entre determinismo e n˜o-determinismo; a • Linguagens livres de contexto determin´ ısticas (LLCD) e linguagens livres de contexto n˜o-determin´ a ısticas (LLCND); • As LLCD s˜o a classe de linguagens que pode ser a reconhecida por um compilador de forma eficiente (em tempo polinomial); • S˜o a classe mais importante pois representam a a sintaxe da maioria das linguagens de programa¸˜o; ca • As LLCD s˜o geradas pelas gram´ticas LR; a a
  • 260.
    7 HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA) 260 Teorema: Se L ´ uma LLC e o complemento de L e (T ∗ − L) n˜o ´, ent˜o L n˜o ´ LLCD. a e a a e
  • 261.
    7 HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA) 261 Regulares LLC Determinísticas LLC Não−determinísticas Sensíveis ao Contexto Tipo 0 Tipo 3 ⊂ LLCD ⊂ LLCND ⊂ Tipo 1 ⊂ Tipo 0 ⊂ T ∗
  • 262.
    7 HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA) 262 ´ • E possivel caracterizar toda a hierarquia de Chomsky ampliada apresentada at´ aqui usando-se apenas o e autˆmato de pilha; o • Definimos PDA(n) como sendo um autˆmato de o pilha que possui n pilhas. Ent˜o: a 1. PDA(0) ´ equivalente ao AF; e 2. PDA(1) = PDA caracterizando as LLCD e LLCND dependendo da existˆncia ou n˜o de e a n˜o-determinismo; a 3. PDA(n) ≡ TM, para n ≥ 2 (por que?). Logo, PDA(n) ≡ PDA(2), para todo n 2 – adicionar mais pilhas n˜o muda nada (por que?). a
  • 263.
    7 HIERARQUIA DE CHOMSKY (REVISITADA E AMPLIADA) 263 FIM