Curso: Ciência da Computação


  Aspectos Teóricos da Computação

               Aula 5

       Linguagens Regulares
Autômatos Finitos Não Determinísticos
Notas de Aula
Blog
  https://aspectosteoricosdacomputacao.wordpre
  ss.com/
Avaliação dia 8 de Abril.




                 Apsectos Teóricos da Computação   2/25
Linguagens Regulares
●   O estudo das linguagens regulares é abordado
    usando os seguintes formalismos:
    ➔   Autômato Finito. Trata-se de um formalismo
        operacional ou reconhecedor, sendo basicamente,
        um sistema de estados finitos;
    ➔   Expressão Regular. Trata-se de um formalismo
        denotacional, também considerado gerador, o qual
        é definido a partir de conjuntos (linguagens)
        básicos e das operações de concatenação e de
        união;
    ➔   Gramática Regular. Trata-se de um formalismo
        axiomático ou gerador o que, como o nome indica,
        é uma gramática, mas com restrições de forma das
        regras de produção.
                     Apsectos Teóricos da Computação   3/25
Autômato Finito Determinístico
                     Relembrando a aula passada
                                              Vamos fazer a computação para as
    ∑ = {a,b}
                                          ●
●
                                              seguintes strings:
                                                  aaa – q0 → q1 → qf
    Q = {q0, q1,q2,qf}
                                               ●

●
                                               ●       abb – q0 → q1 → q1 → q1
                                               ●       bbb – q0 → q2 → qf
●   F = qf                                     ●       baa – q0 → q2 → q2 → q2
                                               ●       abbba – q0 → q1 → q1 → q1 → q1
●   δ dado pelo diagrama                               → qf
                                                       baab – q0 → q2 → q2 → q2 → qf
    abaixo.
                                               ●


                                               ●       Que conclusão podemos chegar?
                            q0
                                                b
             a
                                                                   q2 a
    q1
                                                   b
                 a
b                             qff



                         Apsectos Teóricos da Computação                               4/25
Autômato Finito Determinístico
                     Relembrando a aula passada
●   ∑ = {a,b}                             ●   Aaa, bbb, aaabb, bbbaaa, bbba
                                              são aceitos.
●   Q = {q0, q1,q2,qf}                    ●   Como podemos generalizar a
                                              linguagem que é aceita por
                                              esse autômato?
●   F = qf
                                              Resp.: Toda string que começa
●   δ dado pelo diagrama                      por a e tiver dois as é aceita e
                                              toda string que começa por b e
    abaixo.                                   tiver dois bs é aceita.
                            q0
                                                b
             a
                                                            q2 a
    q1
                                                b
                 a
b                             qff



                         Apsectos Teóricos da Computação                    5/25
Autômato Finito Não Determinístico
●   O não determinismo é uma importante
    generalização dos modelos de máquinas,
    sendo de fundamental importância no estudo
    de modelos para concorrência, Teoria da
    Computação e das Linguagens Formais.
●   O objetivo é a capacidade de reconhecer
    linguagens e de solucionar problemas.




                  Apsectos Teóricos da Computação   6/25
Autômato Finito Não Determinístico
●   A facilidade de não determinismo para
    autômatos finitos é expressa no programa, que
    é uma função parcial tal que:
    Dependendo do estado corrente e do símbolo
     lido, determina um conjunto de estados do
                      autômato.




                  Apsectos Teóricos da Computação   7/25
Autômato Finito Não Determinístico
Um Autômato Finito Não Determinístico assume
um conjunto de estados alternativos, como se
houvesse uma multiplicação da unidade de
controle, uma para cada alternativa, processando
independentemente, sem compartilhar recursos
com as demais. Assim, o processamento de um
caminho não influi no estado, símbolo lido e
posição da cabeça dos demais caminhos
alternativos.




                Apsectos Teóricos da Computação   8/25
Definição: Autômato Finito Não Determinístico
Um Autômato Finito Não Determinístico, abreviado por AFN, é uma 5-upla
ordenada:
          M = { ∑, Q, δ, q0, F}
Onde:

a) ∑ é um alfabeto de símbolos de entrada, ou simplesmente, alfabeto de
   entrada;
b) Q é o conjunto de estados possíveis do autômato o qual é finito;
c) δ é uma função programa ou função de transição ou simplesmente
   programa:
       δ : Q x ∑ → 2Q
   a qual é uma função parcial. Supondo que a função programa é definida
   para um estado p e um símbolo a, resultando no conjunto de estados
   {q1,q2,q3,...,qn}, então:
       δ(p,a)={q1,q2,q3,...,qn} é uma transição do autômato;
d) Q0 é um elemento distinguido de Q, denominado estado inicial;
e) F é um subconjunto de Q, denominado conjunto de estados finais.

                          Apsectos Teóricos da Computação                  9/25
Definição: Autômato Finito Não Determinístico
●   Excetuando-se a função programa ou de transição, as componentes ∑, Q,
    q0, F são como na definição de autômato finito determinístico.
●   A representação da função programa como um diagrama é análoga à do
    autômato finito determinístico.
●   Assim, a representação diagramática de uma transição do tipo:
    δ(p,a)={q1,q2,q3,...,qn}
    Resulta em diversas arestas etiquetadas por a, com origem em p, e com
    destino em cada estado q1,q2,q3,...,qn .




                          Apsectos Teóricos da Computação             10/25
Autômato Finito Não Determinístico
        Representação Gráfica
                                                Estado
                                                Anterior

                 p
                            a                         Símbolo
          a
                 a                                      Lido

     q1          q2       ...       qn
                                                           Conjunto
                                                           De novos
                                                           Estados

 Repare que quando estamos no estado p e
lemos o símbolo a podemos ir para q1, q2 ou
  qn. Essa é a razão do não determinismo.



              Apsectos Teóricos da Computação                         11/25
Autômato Finito Não Determinístico

Analogamente ao autômato finito determinístico,
a computação de um AFN, para uma palavra w,
consiste na sucessiva aplicação da função
programa para cada símbolo de w (da esquerda
para a direita) até ocorrer uma condição de
parada. Como cada transição do AFN resulta em
um conjunto de estados, é necessário estender a
definição da função programa, usando como
argumento um conjunto finito de estados e uma
palavra.



                Apsectos Teóricos da Computação   12/25
Função Programa Estendida, Computação

Seja M = { ∑, Q, δ, q0, F} um AFN. A função
programa estendida ou computação de M,
denotada por:
δ*(P, ε) = P
δ*(P, aw) = δ*(Uq є p δ(q,a),w)
Portanto como já vimos a função programa
estendida consiste na sucessiva aplicação da
função programa a cada símbolo da palavra, a
partir de um conjunto de estados. Observe que se
a entrada for vazia o autômato fica parado nos
estados correntes.
                 Apsectos Teóricos da Computação   13/25
Função Programa Estendida, Computação
A transição estendida a um conjunto de estados é a união dos resultados da
função programa aplicado a cada estado alternativo.
δ*({q1,q2,q3,...,qn}, a) = δ(q1,a) U δ(q2,a) U δ(q3,a) U δ(q4,a)U ... U δ(qn,a)


A parada do processamento de afn para uma entrada w pode ser de duas
maneiras:
a. Aceita a entrada w. Após processar o último símbolo da fita, existe pelo
menos um estado final pertencente ao conjunto de estados alternativos
atingidos;
b. Rejeita a entrada w. São duas possibilidades
    * após processar o último símbolo da fita, todos os estados alternativos
atingidos são não finais.
    * em algum momento ao longo do processamento de w, a função programa
é indefinida para o argumento.



                              Apsectos Teóricos da Computação                     14/25
Linguagem Aceita, Linguagem Rejeitada
Seja M = { ∑, Q, δ, q0, F} um AFN. A Linguagem Aceita ou
Linguagem Rejeitada por M, denotada por:
ACEITA(M) ou L(M)
é o conjunto de todas as palavras pertencentes a ∑* tais que
existe pelo menos um caminho alternativo que aceita a palavra, a
partir de {q0}, ou seja:
●   ACEITA(M) = { w | δ*({q0},w) ∩ F ≠ Ø}
Analogamente a Linguagem Rejeitada por M denotada por
REJEITA(M)
é o conjunto de todas as palavras pertencentes a ∑* rejeitadas por
todos os caminhos alternativos de M, a partir de {q0}, ou seja:
●
    REJEITA(M) = { w | δ*({q0},w) ∩ F = Ø ou δ*({q0},w) é
    indefinida}
                       Apsectos Teóricos da Computação         15/25
Exemplo de AFN
Considere a seguinte linguagem sobre o alfabeto {a,b}:
L5 = {w | w possui aa ou bb como subpalavra}

O autômato finito não-determinístico:
M5 = ({a,b}, { q0, q1,q2,qf },δ5 ,q0,{qf } )

Onde δ5 é dada pela seguinte tabela:


                           δ5                   a                   b

                            q0             {q0, q1}           {q0, q2}
                            q1                 {qf}                 -
                            q2                  -               {qf}
                            qf                 {qf}             {qf}


Faça o diagrama desse autômato. 5 minutos.
                                  Apsectos Teóricos da Computação        16/25
Exemplo de AFN
Considere a seguinte linguagem sobre o alfabeto {a,b}:
L5 = {w | w possui aa ou bb como subpalavra}
O autômato finito não-determinístico:                                  δ5      a           b
M5 = ({a,b}, { q0, q1,q2,qf },δ5 ,q0,{qf } )
                                                                       q0   {q0, q1}    {q0, q2}
Onde δ5 é dada pela tabela ao lado:
                                                                       q1     {qf}         -
                       a,b                                             q2      -          {qf}
                 q0
                                                                       qf     {qf}        {qf}
           a            b

    q1                        q2           O algoritmo realiza uma varredura sobre a palavra de
                                           entrada. A cada ocorrência de a (respectivamente de
                                           b) uma alternativa é iniciada , para verificar se o
           a            b                  símbolo seguinte também é a (respectivamente b).
                                           Assim existem três caminhos alternativos de
                 qf                        processamento:
                                           O ciclo em q0 realiza a varredura em toda a entrada;
                       a,b
                                           O caminho q0/q1/qf garante a ocorrência de aa;
                                           O caminho q0,q2,qf garante a ocorrência de bb.



                                     Apsectos Teóricos da Computação                      17/25
Exercício de AFN
Considere a seguinte linguagem sobre o alfabeto {a,b}:
L5 = {w | w possui aa ou bb como subpalavra}
O autômato finito não-determinístico:
M5 = ({a,b}, { q0, q1,q2,qf },δ5 ,q0,{qf } )
Onde δ5 é dada pela tabela ao lado:

                       a,b                 Aplique o algoritmo ao lado para as seguintes
                 q0                        palavras:
           a            b                  a. aaa
                                           b. aba
    q1                        q2           c. abc
                                           d. bababb
           a            b                  Qual é o estado final para cada caso?

                 qf
                       a,b




                                     Apsectos Teóricos da Computação                       18/25
Exemplo
Considere a seguinte linguagem sobre o alfabeto
{a,b}:
L6 = {w | w possui aaa como sufixo}
O autômato finito não determinístico:
M6 = ({a,b}, { q0, q1,q2,qf },δ6 ,q0,{qf })
É tal que ACEITA(M6) = L6.


           q0    a    q1      a       q2      a        qf

           a,b


                     Apsectos Teóricos da Computação        19/25
Exemplo
aaa – q0 → q1 → q2 → qf                       Repare que não existem
                                               arcos para o símbolo b
aab – q0 → q1 → q2 (indef)                   em q1, q2. Caso algum b
                                                seja lido ai o autômato
                                              fica indefinido e “morre”,
aaab – q0 → q1 → q2 → qf                            isto é, acaba o
                                                 processamento. Isso
baa – q0 → q0 → q0 → q0                      acontece mesmo que haja
                                             mais símbolos para serem
abaaa – q0 → q1 (indef)                                  lidos.



         q0         q1      a       q2      a        qf
               a

         a,b


                   Apsectos Teóricos da Computação                  20/25
Exemplo
Exemplo: abaixo temos um autômato que aceita todos os strings de 0’s e 1’s que
terminam em 01 e somente eles. O estado q0 é o estado inicial, e podemos pensar que o
autômato está nele até que “adivinhe” que o 01 final começou, É sempre possível que o
próximo símbolo não inicie o 01 final, mesmo que esse símbolo seja 0. Desse modo, o
estado q0 pode fazer uma transição para ele mesmo em 0 e em 1.

Porém, se o próximo símbolo é 0, esse AFND também adivinha que o 01 final começou.
Um arco identificado por 0 leva portanto de q0 a q1. Note que existem dois arcos
rotulados como 0 saindo de q0. O AFND tem a opção de ir para q0 ou q1 e, de fato, ele
segue os dois caminhos. No estado q1 o AFND verifica se o próximo símbolo é 1 e, nesse
caso, vai para o estado q2 e aceita a entrada.

Observe que não existe nenhum arco saindo de q1 rotulado com 0, e não existe nenhum
arco saindo de q2. Nessas situações, o encadeamento no AFND correspondente a esses
a estes estados simplesmente “morre”, embora outros encadeamentos possam continuar
a existir.
                 0,1
               q0      0      q1      1       qf




                             Apsectos Teóricos da Computação                     21/25
Função de Transição Estendida
Suponha a string de entrada 00101 para o autômato do
nosso exemplo, teremos a seguinte função de transição
estendida:
δ(q0,00101) = δ(δ(q0,0),0101) =
δ({q0,q1},0101) = δ(δ(q0,0) U δ(q1,0),101) = δ({q0,q1} U Ø,101)
δ({q0,q1},101) = δ(δ(q0,1) U δ(q1,1),01) = δ({q0} U {q2},01)
δ({q0,q2},01) = δ(δ(q0,0) U δ(q2,0),1) = δ({q0,q1} U Ø,1)
δ({q0,q1},1) = δ(q0,1) U δ(q1,1) = {q0} U {q2} = {q0,q2}

               0,1
              q0     0      q1       1      qf


                         Apsectos Teóricos da Computação       22/25
Não Determinismo e Determinismo
●   O não determinismo não aumento o poder
    computacional de um autômato.
●   Para cada AFN é possível construir um AFD e
    vice versa.




                  Apsectos Teóricos da Computação   23/25
Para a Próxima Aula
Ler as seções 3.1, 3.2 e 3.3 do livro texto.




                 Apsectos Teóricos da Computação   24/25
Exercícios
●   Lista




            Apsectos Teóricos da Computação   25/25

Aula 5 linguagens regularese automatosfinitosnãodeterministico

  • 1.
    Curso: Ciência daComputação Aspectos Teóricos da Computação Aula 5 Linguagens Regulares Autômatos Finitos Não Determinísticos
  • 2.
    Notas de Aula Blog https://aspectosteoricosdacomputacao.wordpre ss.com/ Avaliação dia 8 de Abril. Apsectos Teóricos da Computação 2/25
  • 3.
    Linguagens Regulares ● O estudo das linguagens regulares é abordado usando os seguintes formalismos: ➔ Autômato Finito. Trata-se de um formalismo operacional ou reconhecedor, sendo basicamente, um sistema de estados finitos; ➔ Expressão Regular. Trata-se de um formalismo denotacional, também considerado gerador, o qual é definido a partir de conjuntos (linguagens) básicos e das operações de concatenação e de união; ➔ Gramática Regular. Trata-se de um formalismo axiomático ou gerador o que, como o nome indica, é uma gramática, mas com restrições de forma das regras de produção. Apsectos Teóricos da Computação 3/25
  • 4.
    Autômato Finito Determinístico Relembrando a aula passada Vamos fazer a computação para as ∑ = {a,b} ● ● seguintes strings: aaa – q0 → q1 → qf Q = {q0, q1,q2,qf} ● ● ● abb – q0 → q1 → q1 → q1 ● bbb – q0 → q2 → qf ● F = qf ● baa – q0 → q2 → q2 → q2 ● abbba – q0 → q1 → q1 → q1 → q1 ● δ dado pelo diagrama → qf baab – q0 → q2 → q2 → q2 → qf abaixo. ● ● Que conclusão podemos chegar? q0 b a q2 a q1 b a b qff Apsectos Teóricos da Computação 4/25
  • 5.
    Autômato Finito Determinístico Relembrando a aula passada ● ∑ = {a,b} ● Aaa, bbb, aaabb, bbbaaa, bbba são aceitos. ● Q = {q0, q1,q2,qf} ● Como podemos generalizar a linguagem que é aceita por esse autômato? ● F = qf Resp.: Toda string que começa ● δ dado pelo diagrama por a e tiver dois as é aceita e toda string que começa por b e abaixo. tiver dois bs é aceita. q0 b a q2 a q1 b a b qff Apsectos Teóricos da Computação 5/25
  • 6.
    Autômato Finito NãoDeterminístico ● O não determinismo é uma importante generalização dos modelos de máquinas, sendo de fundamental importância no estudo de modelos para concorrência, Teoria da Computação e das Linguagens Formais. ● O objetivo é a capacidade de reconhecer linguagens e de solucionar problemas. Apsectos Teóricos da Computação 6/25
  • 7.
    Autômato Finito NãoDeterminístico ● A facilidade de não determinismo para autômatos finitos é expressa no programa, que é uma função parcial tal que: Dependendo do estado corrente e do símbolo lido, determina um conjunto de estados do autômato. Apsectos Teóricos da Computação 7/25
  • 8.
    Autômato Finito NãoDeterminístico Um Autômato Finito Não Determinístico assume um conjunto de estados alternativos, como se houvesse uma multiplicação da unidade de controle, uma para cada alternativa, processando independentemente, sem compartilhar recursos com as demais. Assim, o processamento de um caminho não influi no estado, símbolo lido e posição da cabeça dos demais caminhos alternativos. Apsectos Teóricos da Computação 8/25
  • 9.
    Definição: Autômato FinitoNão Determinístico Um Autômato Finito Não Determinístico, abreviado por AFN, é uma 5-upla ordenada: M = { ∑, Q, δ, q0, F} Onde: a) ∑ é um alfabeto de símbolos de entrada, ou simplesmente, alfabeto de entrada; b) Q é o conjunto de estados possíveis do autômato o qual é finito; c) δ é uma função programa ou função de transição ou simplesmente programa: δ : Q x ∑ → 2Q a qual é uma função parcial. Supondo que a função programa é definida para um estado p e um símbolo a, resultando no conjunto de estados {q1,q2,q3,...,qn}, então: δ(p,a)={q1,q2,q3,...,qn} é uma transição do autômato; d) Q0 é um elemento distinguido de Q, denominado estado inicial; e) F é um subconjunto de Q, denominado conjunto de estados finais. Apsectos Teóricos da Computação 9/25
  • 10.
    Definição: Autômato FinitoNão Determinístico ● Excetuando-se a função programa ou de transição, as componentes ∑, Q, q0, F são como na definição de autômato finito determinístico. ● A representação da função programa como um diagrama é análoga à do autômato finito determinístico. ● Assim, a representação diagramática de uma transição do tipo: δ(p,a)={q1,q2,q3,...,qn} Resulta em diversas arestas etiquetadas por a, com origem em p, e com destino em cada estado q1,q2,q3,...,qn . Apsectos Teóricos da Computação 10/25
  • 11.
    Autômato Finito NãoDeterminístico Representação Gráfica Estado Anterior p a Símbolo a a Lido q1 q2 ... qn Conjunto De novos Estados Repare que quando estamos no estado p e lemos o símbolo a podemos ir para q1, q2 ou qn. Essa é a razão do não determinismo. Apsectos Teóricos da Computação 11/25
  • 12.
    Autômato Finito NãoDeterminístico Analogamente ao autômato finito determinístico, a computação de um AFN, para uma palavra w, consiste na sucessiva aplicação da função programa para cada símbolo de w (da esquerda para a direita) até ocorrer uma condição de parada. Como cada transição do AFN resulta em um conjunto de estados, é necessário estender a definição da função programa, usando como argumento um conjunto finito de estados e uma palavra. Apsectos Teóricos da Computação 12/25
  • 13.
    Função Programa Estendida,Computação Seja M = { ∑, Q, δ, q0, F} um AFN. A função programa estendida ou computação de M, denotada por: δ*(P, ε) = P δ*(P, aw) = δ*(Uq є p δ(q,a),w) Portanto como já vimos a função programa estendida consiste na sucessiva aplicação da função programa a cada símbolo da palavra, a partir de um conjunto de estados. Observe que se a entrada for vazia o autômato fica parado nos estados correntes. Apsectos Teóricos da Computação 13/25
  • 14.
    Função Programa Estendida,Computação A transição estendida a um conjunto de estados é a união dos resultados da função programa aplicado a cada estado alternativo. δ*({q1,q2,q3,...,qn}, a) = δ(q1,a) U δ(q2,a) U δ(q3,a) U δ(q4,a)U ... U δ(qn,a) A parada do processamento de afn para uma entrada w pode ser de duas maneiras: a. Aceita a entrada w. Após processar o último símbolo da fita, existe pelo menos um estado final pertencente ao conjunto de estados alternativos atingidos; b. Rejeita a entrada w. São duas possibilidades * após processar o último símbolo da fita, todos os estados alternativos atingidos são não finais. * em algum momento ao longo do processamento de w, a função programa é indefinida para o argumento. Apsectos Teóricos da Computação 14/25
  • 15.
    Linguagem Aceita, LinguagemRejeitada Seja M = { ∑, Q, δ, q0, F} um AFN. A Linguagem Aceita ou Linguagem Rejeitada por M, denotada por: ACEITA(M) ou L(M) é o conjunto de todas as palavras pertencentes a ∑* tais que existe pelo menos um caminho alternativo que aceita a palavra, a partir de {q0}, ou seja: ● ACEITA(M) = { w | δ*({q0},w) ∩ F ≠ Ø} Analogamente a Linguagem Rejeitada por M denotada por REJEITA(M) é o conjunto de todas as palavras pertencentes a ∑* rejeitadas por todos os caminhos alternativos de M, a partir de {q0}, ou seja: ● REJEITA(M) = { w | δ*({q0},w) ∩ F = Ø ou δ*({q0},w) é indefinida} Apsectos Teóricos da Computação 15/25
  • 16.
    Exemplo de AFN Considerea seguinte linguagem sobre o alfabeto {a,b}: L5 = {w | w possui aa ou bb como subpalavra} O autômato finito não-determinístico: M5 = ({a,b}, { q0, q1,q2,qf },δ5 ,q0,{qf } ) Onde δ5 é dada pela seguinte tabela: δ5 a b q0 {q0, q1} {q0, q2} q1 {qf} - q2 - {qf} qf {qf} {qf} Faça o diagrama desse autômato. 5 minutos. Apsectos Teóricos da Computação 16/25
  • 17.
    Exemplo de AFN Considerea seguinte linguagem sobre o alfabeto {a,b}: L5 = {w | w possui aa ou bb como subpalavra} O autômato finito não-determinístico: δ5 a b M5 = ({a,b}, { q0, q1,q2,qf },δ5 ,q0,{qf } ) q0 {q0, q1} {q0, q2} Onde δ5 é dada pela tabela ao lado: q1 {qf} - a,b q2 - {qf} q0 qf {qf} {qf} a b q1 q2 O algoritmo realiza uma varredura sobre a palavra de entrada. A cada ocorrência de a (respectivamente de b) uma alternativa é iniciada , para verificar se o a b símbolo seguinte também é a (respectivamente b). Assim existem três caminhos alternativos de qf processamento: O ciclo em q0 realiza a varredura em toda a entrada; a,b O caminho q0/q1/qf garante a ocorrência de aa; O caminho q0,q2,qf garante a ocorrência de bb. Apsectos Teóricos da Computação 17/25
  • 18.
    Exercício de AFN Considerea seguinte linguagem sobre o alfabeto {a,b}: L5 = {w | w possui aa ou bb como subpalavra} O autômato finito não-determinístico: M5 = ({a,b}, { q0, q1,q2,qf },δ5 ,q0,{qf } ) Onde δ5 é dada pela tabela ao lado: a,b Aplique o algoritmo ao lado para as seguintes q0 palavras: a b a. aaa b. aba q1 q2 c. abc d. bababb a b Qual é o estado final para cada caso? qf a,b Apsectos Teóricos da Computação 18/25
  • 19.
    Exemplo Considere a seguintelinguagem sobre o alfabeto {a,b}: L6 = {w | w possui aaa como sufixo} O autômato finito não determinístico: M6 = ({a,b}, { q0, q1,q2,qf },δ6 ,q0,{qf }) É tal que ACEITA(M6) = L6. q0 a q1 a q2 a qf a,b Apsectos Teóricos da Computação 19/25
  • 20.
    Exemplo aaa – q0→ q1 → q2 → qf Repare que não existem arcos para o símbolo b aab – q0 → q1 → q2 (indef) em q1, q2. Caso algum b seja lido ai o autômato fica indefinido e “morre”, aaab – q0 → q1 → q2 → qf isto é, acaba o processamento. Isso baa – q0 → q0 → q0 → q0 acontece mesmo que haja mais símbolos para serem abaaa – q0 → q1 (indef) lidos. q0 q1 a q2 a qf a a,b Apsectos Teóricos da Computação 20/25
  • 21.
    Exemplo Exemplo: abaixo temosum autômato que aceita todos os strings de 0’s e 1’s que terminam em 01 e somente eles. O estado q0 é o estado inicial, e podemos pensar que o autômato está nele até que “adivinhe” que o 01 final começou, É sempre possível que o próximo símbolo não inicie o 01 final, mesmo que esse símbolo seja 0. Desse modo, o estado q0 pode fazer uma transição para ele mesmo em 0 e em 1. Porém, se o próximo símbolo é 0, esse AFND também adivinha que o 01 final começou. Um arco identificado por 0 leva portanto de q0 a q1. Note que existem dois arcos rotulados como 0 saindo de q0. O AFND tem a opção de ir para q0 ou q1 e, de fato, ele segue os dois caminhos. No estado q1 o AFND verifica se o próximo símbolo é 1 e, nesse caso, vai para o estado q2 e aceita a entrada. Observe que não existe nenhum arco saindo de q1 rotulado com 0, e não existe nenhum arco saindo de q2. Nessas situações, o encadeamento no AFND correspondente a esses a estes estados simplesmente “morre”, embora outros encadeamentos possam continuar a existir. 0,1 q0 0 q1 1 qf Apsectos Teóricos da Computação 21/25
  • 22.
    Função de TransiçãoEstendida Suponha a string de entrada 00101 para o autômato do nosso exemplo, teremos a seguinte função de transição estendida: δ(q0,00101) = δ(δ(q0,0),0101) = δ({q0,q1},0101) = δ(δ(q0,0) U δ(q1,0),101) = δ({q0,q1} U Ø,101) δ({q0,q1},101) = δ(δ(q0,1) U δ(q1,1),01) = δ({q0} U {q2},01) δ({q0,q2},01) = δ(δ(q0,0) U δ(q2,0),1) = δ({q0,q1} U Ø,1) δ({q0,q1},1) = δ(q0,1) U δ(q1,1) = {q0} U {q2} = {q0,q2} 0,1 q0 0 q1 1 qf Apsectos Teóricos da Computação 22/25
  • 23.
    Não Determinismo eDeterminismo ● O não determinismo não aumento o poder computacional de um autômato. ● Para cada AFN é possível construir um AFD e vice versa. Apsectos Teóricos da Computação 23/25
  • 24.
    Para a PróximaAula Ler as seções 3.1, 3.2 e 3.3 do livro texto. Apsectos Teóricos da Computação 24/25
  • 25.
    Exercícios ● Lista Apsectos Teóricos da Computação 25/25