2. automatosfinitos_apont

Upload: 2009brunocosta

Post on 06-Feb-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/21/2019 2. AutomatosFinitos_Apont

    1/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 43

    CAPTULO 2

    AUTMATOS FINITOS

    2.1. Introduo 45

    2.2.Aceitadores determinsticos 46

    2.3. A arte de construir DFAs 59

    2.4. Linguagens regulares 75

    2.5. Autmatos finitos no-determinsticos (DFAs) 83

    2.6 Equivalncia entre DFAs e NFAs 85

    2.7. Reduo do nmero de estados em Autmatos Finitos 97

    2.8 Aplicao dos DFAs na busca de texto 105

    2.9 Autmatos transdutores 107

    Mquinas de Mealy 108

    Mquinas de More 109

    Bibliogafia 112

    Apndice: Software de autmatos finitos 112

    JFLAP

    Deus ex-mquina

  • 7/21/2019 2. AutomatosFinitos_Apont

    2/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 44

  • 7/21/2019 2. AutomatosFinitos_Apont

    3/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 45

    2.1. Introduo

    No Cap.1 estudmos as noes bsicas de linguagens, gramticas e autmatos. Podem-se

    definir muitas linguagens a partir de um mesmo alfabeto, conforma as regras particulares decombinao dos caracteres do alfabeto.

    Por exemplo a partir do alfabeto = {a, b} e usando a notao de conjuntos poderemos

    definir as linguagensL1 = { anb

    m | n,m >= 0 }a que pertencem as cadeias : ,aabbbbb, aaaa,

    bbbb, ou a linguagem L2 = { anb

    n| n >= 0 } a que pertencem as cadeias: ,ab,aabb,

    aaabbb, aaaabbbb, ou ainda L3 = {a,b}* composta por qualquer cadeia de as e bs ,incluindo

    .. Quantas linguagens se podem definir com este alfabeto ?

    As linguagens podem ser definidas por uma gramtica, que indica como se formam as

    cadeias de caracteres. Conhecidas as suas produes fcil derivar cadeias da linguagem.

    Pode-se agora pr o problema ao contrrio: dada uma cadeia de caracteres, como saber se

    pertence a uma dada linguagem ? Se a cadeia for pequena pode ser relativamente simples, por

    inspeco visual, decidir se pertence ou no. Mas para uma cadeia grande de um gramtica

    mais elaborada, no fcil decidir.

    aqui que entram os autmatos finitos. Vimos no Cap. 1 um autmato aceitador da

    cadeia pai. Se fosse possvel construir um autmato que aceitasse todas as cadeias de uma

    dada linguagem (e s essas), ento para se saber se uma cadeia pertence a uma linguagem

    bastaria d-la a ler ao autmato. Se ele parasse no estado aceitador depois de concluir a sua

    leitura, a cadeia pertenceria linguagem. Caso contrrio no pertenceria.

    Infelizmente no possvel desenhar um autmato para uma qualquer linguagem. H

    linguagens para as quais ainda hoje no possvel decidir se uma cadeia lhe pertence ou no.

    Num mesmo alfabeto pode-se definir um nmero infinito de linguagens, cada uma delas

    com caractersticas prprias. Felizmente para algumas classes de linguagens possvel

    construir autmatos finitos aceitadores: o caso por exemplo das linguagens regulares, cujas

    propriedades veremos mais frente. Por agora basta-nos saber que possvel construir um

    autmato finito aceitador para uma linguagem regular.

  • 7/21/2019 2. AutomatosFinitos_Apont

    4/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 46

    Teremos assim a Figura 2.1.1.

    Figura 2.1.1. Relao entre linguagens, gramticas e autmatos.

    Existem outras classes de linguagens, que no regulares, para as quais possvel

    tambm construir autmatos aceitadores, naturalmente distintos dos das linguagens regulares.

    Vemos assim que h diferentes classes de linguagens e diferentes classes correspondentes de

    autmatos.

    Para as linguagens regulares, as mais simples, constroem-se autmatos finitos

    determinsticos, os autmatos tambm mais simples. Quando um autmato usado para

    reconhecer uma linguagem, mais exacto chamar-lhe aceitador.No entanto usaremos com

    frequncia o termo autmato, distinguindo-se a sua funo de aceitador dentro do contexto em

    que usado. Como veremos existem autmatos que no so aceitadores, isto , no so

    construdos para aceitar ou no uma linguagem, mas antes para executarem sobre as cadeias

    de caracteres uma dada operao (como alis j vimos no Cap. 1).

    2.2. Aceitadores determinsticos

    Um aceitador determinstico define-se como uma estrutura matemtica e desenha-se como um

    grafo.

    Exemplo 2.2.1.

    LinguagensL

    Gramticas GGeram as cadeias de L

    AutmatosReconhecem as cadeias

    deL

  • 7/21/2019 2. AutomatosFinitos_Apont

    5/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 47

    Por exemplo o grafo seguinte representa um aceitador determinstico. O seu alfabeto

    ={0,1}.

    Figura 2.2.1 Grafo de um aceitador determinstico.

    Vejamos como funciona.

    O autmato est no estado inicial, q0, e apresenta-se-lhe entrada uma cadeia de 0s e

    1s, com por exemplo 1100.

    Ele vai ler os caracteres da esquerda para a direita, isto 1 >1 > 0 >0. As arestas

    representam as transies de estado quando o autmato l o carcter etiqueta da aresta.

    Estando em q0 e lendo 1, transita para q1. Estando em q2 e lendo 1, transita para q2, isto , fica

    onde est. Lendo agora 0, estando em q1, transita para q2. Lendo depois 0 transita para q3 e afica, porque no h mais nada para ler.

    O estado q1 tem uma forma especial. Ele o estado aceitador. Se o autmato, partindo

    do estado inicial, leu a cadeia 1100 e terminou no estado aceitador, ento aceita essa cadeia.

    Poderemos ver outras que tambm aceita. Por exemplo 001, 0100, 1110001, etc. Se estiver

    em q0 e aparece um 1, vai para o aceitador; se estiver em q1 e aparece um 1, mantm-se no

    aceitador. Se estiver em q2 e aparece um 1, vai para o aceitador.

    Ento conclui-se que qualquer cadeia que termine num 1 aceite pelo autmato: de facto

    qualquer que seja o seu penltimo estado, o seu ltimo ser sempre o aceitador de ele ler

    apenas mais um 1. Mas h cadeias de outro tipo, como por exemplo 0100, que tambm, so

    aceites. Se depois do ltimo 1 aparecem dois zeros seguidos (e mais nada) ele termina

    tambm no estado aceitador. Portanto o autmato aceita as cadeias que terminam num 1 ou

    em 00 depois do ltimo 1.

    q0 q1q2

    0

    1

    10

    0

    1

    Incio

  • 7/21/2019 2. AutomatosFinitos_Apont

    6/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 48

    Note-se que em cada estado o aceitador determinstico sabe exactamente o que deve

    fazer, porque tido lhe dito: de cada estado h duas arestas definindo as duas transies

    possveis, uma para cada carcter do alfabeto. Essas duas transies podem ser iguais, com

    acontece no estado q2. Pode-se simplificar o grafo colocando apenas uma aresta com duas

    etiquetas, com o na figura seguinte.

    Figura 2.2.2 Grafo do mesmo aceitador da Fig. 2.2.1

    Se tivssemos uma alfabeto com trs caracteres (por exemplo {a,b,c}, ento de cada

    estado teriam que partir sempre trs arestas explicitamente definidas (ainda que pudessem ser

    iguais). Um aceitador determinstico no tem qualquer capacidade de decidir em qualquer

    circunstncia, da o nome de determinstico. Consequentemente todas as transies possveis

    tm que estar explicitamente definidas. A funo de transio por isso uma funo total, isto, est explicitamente definida para todos os valores do seu domnio.

    Note-se que esta definio que estamos a adoptar no seguida por todos os autores.

    Alguns admitem que possam existir transies no definidas. Nestes, se aparecer entrada,

    num dado estado, um carcter para o qual no esteja explicitamente definida uma transio, o

    DFA morre, isto , passa a um estado no aceitador e no sai mais de l, quaisquer que sejam

    os caracteres seguintes na cadeia lida (mais tarde chamaremos ratoeira a este estado).

    Vimos que um autmato finito determinstico facilmente definido e descrito por um

    grafo. Tem cinco partes: um conjunto de estados, um conjunto de regras para transitar entre

    eles, um alfabeto de entrada que define os caracteres aceitveis entrada, um estado inicial,

    um estado final. Veremos casos que tm vrios estados finais. Para definir formalmente o

    autmato, usaremos todas essas cinco partes que compem um quinteto.

    q0 q1q2

    0

    1

    10

    0,1

    Incio

  • 7/21/2019 2. AutomatosFinitos_Apont

    7/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 49

    Definio 2.2.1 Aceitador determinstico

    Um aceitador determinstico (usaremos o acrnimo dfa-, de deterministic finite

    accepter) definido pelo quinteto

    M=(Q,,, q0, F)

    em que : Q: o conjunto finito de estados internos

    : alfabeto de entrada (conjunto finito de caracteres)

    : Qx Q a funo total chamada funo de transio

    q0Q o estado inicial

    F Q o conjunto de estados finais ou aceitadores

    Uma funo total quando definida para todos os valores possveis dos seus

    argumentos; caso contrrio diz-se parcial. Ao dizer-se que a funo de transio total,

    atendendo sua definio, isso quer dizer que ela tem que estar definida para todas as

    combinaes possveis de um estado e um carcter do alfabeto, isto , para todos os elementos

    do produto cartesiano Qx.

    Exemplo 2.2.2. O interruptor do Cap. 1

    Retomemos aqui o exemplo do interruptor do Cap. 1. Se definirmos a linguagem das

    sequncias de Press(P) tais que o interruptor fica ligado aps a sua aplicao (partindo do

    estado inicialF), teremosP, PPP, PPPPP, etc., ou seja, um nmero mpar de accionamentos

    do interruptor. Agora poderemos definir o autmato como um aceitador dessa linguagem,

    colocando a dupla circunferncia no estadoA.

    Figura 2.2.3 Grafo do interruptor do Cap. 1.

    Aplicando-lhe a definio 2.1 v-se que

    F A

    P

    P

  • 7/21/2019 2. AutomatosFinitos_Apont

    8/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 50

    Q, conjunto de estados internos: {F,A}

    , alfabeto de entrada: {P}

    , funo de transio:FPA; APF

    q0 , o estado inicial:F

    F, o estado final: {A}

    Exemplo 2.2.3.

    Seja o autmato da Fig. 2.2.4.

    Figura 2.2.4. Autmato do exemplo 2.2.3

    Aplicando-lhe de igual modo a definio 2.1 v-se que:

    Q, conjunto de estados internos: {1,2,3,4}

    , alfabeto de entrada: {a,b}

    , funo de transio: 1 a 2; 1 b 4, 2 b 3, etc.

    q0 , o estado inicial: 1

    F, o estado final: {4}

    Neste caso a funo de transio tem muitos elementos. Usando uma tabela especifica-se

    mais facilmente.

    Note-se que pelo facto de a funo de transio der total, a tabela tem que ter todas as clulas

    preenchidas. Neste caso para cada estado existem duas arestas possveis, uma para a e outra

    para b.

    1 2 3

    4

    a

    b

    b

    a

    a

    b

    b a

  • 7/21/2019 2. AutomatosFinitos_Apont

    9/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 51

    Tabela 2.2.1. Tabela de transies do DFA da Fig. 2.2.3.

    Se estadoactual

    e a entradaactual

    o estadoseguinte ser

    1 a 2

    1 b 4

    2 a 4

    2 b 3

    3 a 3

    3 b 4

    4 a 4

    4 b 4

    Qual ser a linguagem aceite por este autmato ?

    O estado 4 tem uma caracterstica: se o autmato l chegar, nunca mais de l sai, e por

    isso chama-se estado ratoeira, ou armadilha (trap) ou poo.

    A figura seguinte reduz o esquema geral de um autmato que vimos no Cap. 1 ao caso

    particular de um dfa.

    Note-se que um dfa no tem nem dispositivo de memria nem cadeia de sada. Tem apenas

    dispositivo de leitura e unidade de controlo. Conforme o contedo actual da clula lida, d-se

    ou no uma transio de estado dentro da unidade de controlo.

  • 7/21/2019 2. AutomatosFinitos_Apont

    10/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 52

    Figura 2.2.5. O esquema de um DFA. Note-se a ausncia de qualquer dispositivo de

    memria.

    A transio de um estado para outro depende do estado actual (antes da transio) e do

    carcter lido entrada no instante actual.

    Figura 2.2.6. A funo de transio de um DFA.

    Tabela 2.2.2

    Um autmato representa-se por um

    grafo em que os vrtices (ns)

    representam os estados e as arestas

    orientadas tm como etiquetas os

    caracteres lidos na cadeia de entrada. Htrs tipos de vrtices, indicados na Tabela

    2.2.2., ao lado

    Smbolo Significado

    Estado normal

    Estado inicial

    Estadoaceitador (oufinal)

    Aresta

    cadeia de entrada a a b b a b

    q0

    q1q2

    estado seguinte,movida,

    smbolo na sada(caso a tenha)

    carcter de entradaestado actual

    [*] carcter

    q0

    qf

    qi

  • 7/21/2019 2. AutomatosFinitos_Apont

    11/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 53

    Exemplo 2.2.4

    Figura 2.2.7 DFA do exemplo 2.2.4.

    Temos um autmato com trs estados, um de cada tipo. O alfabeto do autmato =

    {0,1}. Lendo com ateno as etiquetas das arestas pode-se escrever a seguinte tabela detransies. O DFA pode-se assim definir formalmente como

    M= (Q, S,, ,q0,F) com

    Q = {q0,q1,q2},= {0,1},F= {q2} e definida pela Tabela 2.2.4.

    Tabela 2.2.3. Funo de transio do exemplo 2.2.4.

    Qual ser a linguagem aceite pelo autmato? Um bom desafio para o leitor ...

    No Captulo 3 estudaremos as expresses regulares, uma tcnica de especificao de

    linguagens que tem uma lgebra prpria muito adequada para deduzir a definio da

    linguagem a partir de um DFA qualquer. Neste momento poderemos fazer o seguinte

    procedimento heurstico:

    -colocamo-nos no estado aceitador e vemos como l poderemos chegar,

    incio

    0

    1q2

    0

    0

    1

    q1q0

    1

    Estados

    Entradas

    0 1

    q0

    q1

    q2

    q1 q0

    q2

    q0q1

    q0

  • 7/21/2019 2. AutomatosFinitos_Apont

    12/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 54

    -depois andamos para trs e em cada estado vemos o mesmo. At que se consiga

    visualizar mentalmente a linguagem do autmato.

    Chega-se ao estado final a partir de q1 com um 0, ou seja, com (****)0.

    Chega-se a q1 com um 0 depois de 1: (***10)0. De modo que sempre que uma

    cadeia termine em 100, termina no estado aceitador. Se terminar em 1000 no aceita a cadeia.

    Mas aceita se terminar em 10000, 1000000, ou qualquer nmero par de zeros

    precedido de 1.

    Poderemos definir formalmente linguagem de um autmato finito.

    Definio 2.2.2a. Linguagem de um DFA

    Dado um DFA qualquer, M, a linguagemL aceite (ou reconhecida) por M o conjunto

    de todas as cadeias que, comeando a ser lidas no estado inicial, fazem com que o autmato

    alcance um dos estados finais depois de toda a cadeia ter sido lida. Escreve-se L(M) para

    dizer queL a linguagem aceite ou reconhecida por M.

    Que linguagens aceitam os seguintes autmatos ?

    Exmplo 2.2.5

    Fig. 2.2.8.

    Exemplo 2.2.6

    Fig. 2.2.9.

    Exemplo 2.2.7

    Incio q0 q1

    0 01

    1

    Incio q0 q1

    0 1

    1

    0

  • 7/21/2019 2. AutomatosFinitos_Apont

    13/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 55

    Fig. 2.2.10

    Um DFA pode ser definido pela explicitao da funo de transio e, a partir dela,

    facialmente se desenha o seu grafo.

    Exemplo 2.2.8

    Seja o DFA M = ({q0, q1, q2}, {a,b},, q0, {q2}) cuja funo de transio a seguinte:

    (q0, a) = q

    1 Tabela de transies

    (q0, b) = q2

    (q1, a) = q

    0

    (q1, b) = q

    2

    (q2, a) = q2

    (q2, b) = q2 Nas transies aparecem trs estados q1, q2 e q3. O grafo do autmato

    desenha-se graficando as transies, depois de se desenharem os seus trs estados. Obtm-

    se assim a Fig. 2.2.11.

    Fig. 2 .2.11

    Ser possvel simplificar este DFA, isto , encontrar um outro com menos estados que

    aceite a mesma linguagem (e s a mesma) ?

    a b

    q0 q1 q2

    q1 q0 q2

    q2 q2 q2

    a

    a

    a,b

    q0q1

    bb

    q2q2

    q0 q1 q21 0

    0 0,11

  • 7/21/2019 2. AutomatosFinitos_Apont

    14/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 56

    Veremos em captulos posteriores algoritmos para simplificar autmatos, reduzindo ao

    mnimo possvel o nmero de estados. Neste momento poderemos apenas olhar com ateno

    para o DFA e verificar o que ele faz. Se aparecer um b, no estado inicial, vai para o aceitador

    q2. Se estiver em q1 e aparece um b, transita para q2 ; e se estiver em q2 e aparecer um b,

    mantm-se a. Portanto qualquer que seja o seu estado se parecer um b na cadeia de entrada,

    ele aceita-a: a sua linguagem portanto o conjunto de todas as cadeias em {a,b}* que

    contenham pelo menos um b. O autmato seguinte aceita essa linguagem.

    Fig. 2.2.12. Grafo equivalente ao

    da Fig. 2.2.11.

    Funo de transio estendida a cadeias de caracteres, *

    Na definio do DFA a funo de transio definida de tal forma que ela activada por um

    carcter. Se quisermos calcular a transio do DFA de uma configurao inicial para outra

    configurao aps um conjunto de transies, seria interessante dispor de uma forma de

    representao sucinta, compacta, que exprimisse essa transio salto resultante da leitura deum conjunto de caracteres ou de uma cadeia completa.

    Pode-se estender a noo de transio com esse objectivo. Em vez de escreve-se *,

    em que o asterisco quer dizer aps um certo nmero de transies.

    A funo de transio estendida assim definida por

    *: Q*Q

    a

    a,b

    b

    q2q2

    q0

  • 7/21/2019 2. AutomatosFinitos_Apont

    15/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 57

    em que

    - o seu segundo argumento uma cadeia em vez de um carcter, e

    - o seu valor de sada d o estado do autmato depois de ler a (sub)cadeia.

    Por exemplo, se tivermos num autmato tal que

    (q0, a) = q1 e (q1, b) = q2 ento *(q0, ab)=q2

    Representando por grafos, teremos a Fig. 2.2.13.

    Figura 2.2.13. Ilustrao da funo de transio estendida. Em a) grafo normal; em b) grafo

    compactado usando uma transio estendida.

    A funo de transio estendida pode definir-se recursivamente do modo seguinte:

    (i)*(q,)= q

    (ii) *(q,wa)=(* (q, w), a)

    para todo o qQ, w*, a.

    Para o exemplo anterior teremos :

    * (q0, ab)=(* (q0, a), b)

    *(q0, a)=* (q0, a)=(*(q0,), a)=(q0, a)=q1

    *(q0, ab)=( q1, b)=q2

    q0 q1 q2a b

    a) Funo de transio

    q0 q2ab

    *

    b) Funo de transio estendida

  • 7/21/2019 2. AutomatosFinitos_Apont

    16/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 58

    Definio 2.2.2b.Linguagens de um DFA (definio formal)

    A linguagemL aceite (ou reconhecida) por um DFA M=(Q,,, q0, F) o conjunto de todas

    as cadeias em aceites por M, i.e.,

    L(M) = {w* : *(q0, w)F}

    A funo de transio e * so funes totais (definidas para todos os elementos do

    seu domnio). Em cada passo define-se um e um s movimento, e por isso o autmato se

    chama determinstico, no podendo fazer escolhas. Um autmato processa todas as cadeias

    em *, aceitando-as ou no.

    Quando no aceita uma cadeia, pra num estado no aceitador. O conjunto das cadeiasem que isso se verifica constitui o complemento da linguagem L(M), que se pode definir

    formalmente por

    Complem(L(M)) = {w* : *(q0, w)F}

    Consideremos os autmatos da Fig. 2.2 14, diferentes apenas na identificao do estado

    final.

    O primeiro reconhece, como vimos, a linguagem das cadeias em {a,b}* que tenham pelo

    menos um b. O segundo aceita, no mesmo alfabeto, as cadeias que tenham apenas as. Isto ,

    a linguagem do segundo o complemento da linguagem do primeiro: se uma cadeia s tem

    as no tem nenhum b, e se tem pelo menos um b no contm s as.

    Figura. 2.2.14. Autmatos complementares no alfabeto {a,b}.

    a

    b

    q0

    a,b

    q1

    a,b

    a

    b

    q0

    q1

  • 7/21/2019 2. AutomatosFinitos_Apont

    17/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 59

    Repare-se que o estado no aceitador do primeiro autmato o estado aceitador do

    segundo; e o estado aceitador do primeiro o estado no aceitador do segundo. De facto,:

    - se uma cadeia aceite pelo primeiro no o pode ser pelo segundo: uma cadeia que

    termine no estado aceitador do primeiro tem que terminar no estado no aceitador do

    segundo;

    - e se uma cadeia recusada pelo primeiro tem que ser aceite pelo segundo: se uma

    cadeia termina no estado no aceitador do primeiro tem que terminar no estado aceitador do

    segundo.

    Para este autmato com dois estados, fcil de ver a relao entre os autmatos de

    linguagens complementares.

    Ser assim no geral ?

    De facto . Se um autmato Maceita uma linguagemL(M), ento o complemento de L

    ser reconhecida pelo autmato que se obtm de Minvertendo neste a funo dos estados: os

    no aceitadores passam a aceitadores e os aceitadores passam a no aceitadores.

    2.3. A arte de construir DFAs

    Os exemplos de autmatos que vimos at aqui parecem simples, e a sua construo (em grafo)

    relativamente expedita.

    Casos h em que bem mais difcil obter uma soluo simples (na medida do possvel) e

    apropriada para uma dada funo.

    A expertisepara desenhar DFAs depende mais da arte aprendida e treinada do que de

    uma teoria sofisticada.

    Vejamos um exemplo:

    Exemplo 2.2.9 Paridade individual

    Desenhar um autmato que, no alfabeto ={0,1}, aceite todas as cadeias com um nmero

    mparde 1s.

  • 7/21/2019 2. AutomatosFinitos_Apont

    18/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 60

    Podemos comear a desenhar estados e arestas, por tentativa e erro, at que consigamos,

    com mais ou menos remendos, uma soluo. Se o conseguirmos, muito provavelmente

    obteremos um autmato confuso, com mais estados do que o necessrio, difcil de interpretar

    por outrem.

    Em vez disso, pensemos numa abordagem mais sistemtica, partindo de um algoritmo

    mental para a folha de papel.

    Em primeiro lugar quantos estados ter que ter o nosso autmato ? Lembremo-nos do

    significado de um estado: o autmato chega l depois de um certo nmero de transies

    resultantes da leitura de uma cadeia. O estado contm por isso a histria at a um certo ponto

    da cadeia. Ora num problema qualquer, o que deve memorizar o autmato? Apenas a

    informao mnima para ser capaz de responder ao que se lhe pede: neste caso lembrar-se da

    paridade do nmero de 1s entrados at ao momento. Se for par deve estar num certo estado, se

    no for deve estar noutro. O estado que corresponde a mpar deve ser aceitador porque se no

    h mais nada para ler, a cadeia deve ser aceite porque entrou at ao momento um nmero

    mpar de 1s. Temos ento (pelo menos) dois estados: Par (P) e mpar (I), que podemos desde

    j desenhar.

    Figura 2.3.1. Os estados do autmato de paridade individual

    Se o DFA est emPe l 1 na entrada, o que acontece ? Se est em P, porque at ao

    momento entrou um nmero par de 1s. Se agora entra mais um, passa a mpar, naturalmente.

    E ento desenhe-se a transio correspondente: (P,1)=I. E se l um zero estando em P ?

    Como nada lhe pedido em relao aos zeros, -lhe perfeitamente indiferente e por isso deve

    manter-se emP. Logo (P,0)=P. Temos ento, para j,

    IP

  • 7/21/2019 2. AutomatosFinitos_Apont

    19/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 61

    Figura 2.3.2. Transies a partir de P

    Faa-se de seguida o mesmo raciocnio par ao estado I. Ele est l porque entrou um

    nmero mpar de 1s. Entrando mais um, fica um nmero par, e por isso (I,1)=P. Pela

    mesma razo de cima, (I,0)=I. Todas as transies possveis esto agora identificadas. O

    estado aceitador tambm. Falta apenas identificar o estado inicial, onde o DFA deve estar

    antes de iniciar a leitura da cadeia, ou seja, quando entraram zero 0s e zero 1s. Ora zero

    nmero par, e por issoP o estado inicial, pelo que se lhe coloca a setinha.

    Conclumos assim o desenho do DFA requerido na Fig. 2.3.3

    Figura 2.3.3 Autmato de paridade de 1s completo.

    Simulando o seu funcionamento verifica-se que cumpre a sua misso.

    E se quisssemos um DFA que aceitasse, no mesmo alfabeto, todas as cadeias com um

    nmero par de 1s ? Facilmente se obtm, seguindo o mesmo algoritmo mental, o autmato da

    Fig. 2.3.4.

    .

    PI

    1

    0

    PI

    10

    1

    0

    IP

    10

    1

    0

    Figura 2.3.4. Autmato deum nmero par de 1s.

    Notem-se as semelhanas ediferenas relativamente aoanterior

  • 7/21/2019 2. AutomatosFinitos_Apont

    20/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 62

    Fica o leitor desafiado a verificar que os autmatos seguintes aceitam, ainda no alfabeto

    ={0,1}, as cadeias com um nmero mpar de zeros e um nmero par de zeros.

    a) b)

    Figura 2.3.5. Autmatos de paridade de zeros. a) mpar, b) par

    Exemplo 2.3.2 Paridade de grupo

    Desenhar um DFA que no alfabeto ={0,1} aceite todas as cadeias com um nmero mpar de

    0s e um nmero mpar de 1s.

    Temos aqui uma situao mais complicada porque a imparidade exigida

    simultaneamente aos dois caracteres do alfabeto.

    A primeira questo, e a decisiva: quantos estados deve ter o autmato ? Ele tem que

    saber identificar a situao de paridade entre todas as situaes de paridade possveis. E quais

    so ? Tendo em conta que temos que medir simultaneamente a paridade de 0s e de 1s, elas

    so:

    - nmero par de 0s e nmero par de 1s;

    - nmero par de 0s e nmero mpar de 1s;

    - nmero mpar de 0s e nmero par de 1s;

    - nmero mpar de 0s e nmero mpar de 1s.

    IP

    01

    0

    1

    PI

    01

    0

    1

  • 7/21/2019 2. AutomatosFinitos_Apont

    21/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 63

    No havendo mais nenhuma situao relevante para o caso, conclumos que quatro

    estados sero suficientes; chamem-se PP, PI, IP, II, sendo aceitador oII.

    Figura 2.3.6. Os estados necessrios para o exemplo 2.3.6.

    Se o autmato est emPP porque leu at ao momento um nmero par de 0s e umnmero par de 1s, se esto em PI, leu um nmero par de 0s e um nmero mpar de 1s; etc.

    Calculemos agora as suas transies.

    Estando emPP, at a leu um nmero par de 0s e um nmero par de 1s. Se aparece agora

    um 0, fica um nmero mpar de zeros e um nmero par de 1s e por isso tem que transitar para

    IP. Se pelo contrrio aparece um 1, fica um nmero mpar se 1s e um nmero par de zeros e

    vai assim paraPI. Podemos ento desenhar as arestas que partem dePP.

    Se o DFA est emPI(par 0s mpar 1s) , se l 1 passa aPPe se l 0 passa aII.

    II

    PP PI

    IP

    II

    PP PI

    IP

    1

    0

    II

    PP PI

    IP

    1

    00

    1

    Figura 2.3.7. Transies a partirdePP

    Figura 2.3.8. Transies a partirdePI

  • 7/21/2019 2. AutomatosFinitos_Apont

    22/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 64

    agora fcil de ver que o autmato completo representado pelo grafo seguinte. O estadoinicial (zero 0s e zero 1s) PP porque zero um nmero par.

    Exemplo 2.3.3. Desenhar o autmato aceitador da linguagem composta por todas as cadeias

    com um nmero mpar de 0s e um nmero mpar de 1s.

    Se quisermos o DFA que aceita as cadeias com um nmero impar de 0s e um nmeropar de 1s (IP), basta mudar o estado aceitado no autmato anterior, obtendo-se

    E juntando as duas condies, mpar-mpar ou mpar-par, obtm-se o autmato com dois

    estados finais:

    II

    PP PI

    IP

    1

    00

    1

    0 0

    1

    1

    IP

    PP PI

    II

    1

    0

    0

    1

    00

    1

    1

    Figura 2.3.9. Grafo completo doexemplo 2.3.2.

    Figura 2.3.10. Grafo completodo exemplo 2.3.3.

  • 7/21/2019 2. AutomatosFinitos_Apont

    23/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 65

    Exemplo 2.2.3. Contagem de sequncias (corridas) de caracteres.

    Desenhe-se um DFA que em ={a,b} aceite todas as cadeias que tenham corridas de trs ou

    mais as. Uma corrida de trs aaa. No caso aaaa temos uma corrida de 4.Portanto

    baabbaaababab, bbbbbbabababaaaaabab , pertencem linguagem, mas baabaababbabbbb,

    aabbbbbaabbabbbaab, no pertencem.

    A questo aqui mais complicada do que a simples paridade. O autmato tem que ser

    capaz de contar uma corrida de trs as : zero, um, dois, trs. Como pode contar ? Tem que ter

    memria para isso (contar tem memria implcita). A memria de um DFA s existe nos

    estados, e por isso para contar at trs so precisos quatro estados a que chamaremos 0, 1, 2 e

    3. O nmero do estado o nmero de as seguidos contados at a.

    Figura 2.3.12. Como contar 3 as.

    Sero estes quatro estados suficientes? o que vamos ver.

    IP

    PP PI

    1

    00

    1

    0 0

    1

    1

    II

    0 1 2a a a 3

    Figura 2.3.11. Grafo do DFAaceitador deIIou deIP

  • 7/21/2019 2. AutomatosFinitos_Apont

    24/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 66

    Se depois de 3 as vier um quarto, a cadeia continua aceite. De facto depois da corrida

    de trs as a cadeia aceite independentemente do que acontecer a partir da, venham mais as

    ou mais bs. Por isso pode-se colocar uma aresta do estado 3 para si mesmo com a ou com b.

    Por outro lado, se a cadeia comea por b, bb, bbb, o autmato conta sempre zero as e

    por isso existe uma aresta de 0 para 0 com b. Temos para j a Fig. 2.3.13.

    Figura 2.3.13.

    E o autmato j vai tomando forma.

    E se aparece bab?

    Interessam-nos as corridas de as. Se aparece um a temos uma corrida de um a, mas se

    de seguida aparece um b ele anula a corrida, obrigando ao reincio da contagem. Quer isso

    dizer que do estado 1 se volta ao estado 0 se aparecer um b na entrada.

    Se aparece baab este ltimo b obriga de igual modo ao reincio da contagem. Teremos

    portanto completo o grafo do autmato na Fig. 2.3.14.

    Figura 2.3.14. DFA que conta corridas de 3 ou mais as.

    0 1 2a a a 3

    b a,b

    0 1 2a a a 3

    b a,b

    b

    b

  • 7/21/2019 2. AutomatosFinitos_Apont

    25/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 67

    Fica o leitor desafiado a encontrar uma qualquer cadeia com uma corrida de trs as que

    no seja aceite por este autmato.

    Se em vez de uma corrida de trs tivssemos uma corrida de quatro ou cinco, o autmato

    teria uma forma semelhante, com cinco ou seis estados, respectivamente.

    Se em vez de corridas de as quisssemos corridas de b,bastaria trocar os as pelos bs e

    os bs pelos as nas arestas do grafo.

    Figura 2.3.15. DFA aceitador das cadeias com corridas de quatro ou mais bs.

    Exemplo 2.3.4.

    Desenhar o autmato que aceita no mesmo alfabeto {a, b} qualquer cadeia que tenha uma

    corrida de trs as ou uma corrida de trs bs.

    A situao aqui complicou-se um pouco. Vejamos o problema por partes.

    Para corridas de trs as, sabemos como fazer. No autmato respectivo, quando surge

    um b, reinicia-se a contagem com retorno ao estado 0. Mas agora quando aparece um b duas

    coisas tm que acontecer: por um lado a anulao da contagem de as e por outro lado o incio

    da contagem de bs.

    Para corridas de trs bs tambm sabemos como fazer. E de modo anlogo, quando

    aparece um apor um lado anula-se a contagem de bs e por outro lado inicia-se a contagem de

    as.

    Para iniciar, cria-se um estado inicial 0. Se aparece um a, inicia-se a contagem de as, se

    for um b, inicia-se a contagem de bs, como na Fig.2.3.16. Os nomes dos estados foram

    alterados para os relacionar com a sua funo: chega a 2a depois de uma corrida de dois as e

    chega a 2b depois de uma corrida de dois bs.

    0 1 2b b b 4

    a a,b

    aa

    3b

    a

  • 7/21/2019 2. AutomatosFinitos_Apont

    26/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 68

    Agora vamos corrida de as e quando aparece l um b transita-se para o estado

    correspondente a um b, ou seja, 1b.

    Finalmente, na corrida de bs procede-se de modo semelhante quando aparece um a e obtm-

    se o autmato da Fig. 2.3.18 que completa a resoluo do exemplo.

    Figura 2.3. 18. Autmato completo do exemplo 2.3.4: aceita corridas de trs ou mais as oucorridas de trs ou mais bs

    a b

    0

    1a 2aa a 3a

    1b 2b

    b

    b b 3b

    a

    a b

    0

    1a 2aa a 3a

    1b 2b

    b

    b b 3b

    a

    a b

    b b

    a b

    0

    1a 2aa a 3a

    1b 2b

    b

    b b 3b

    a

    bba

    a

    Figura 2.3.16. A caminhoda soluo do exemplo

    2.3.4

    Figura 2.3.17. A caminhoda soluo do exemplo

    2.3.4

  • 7/21/2019 2. AutomatosFinitos_Apont

    27/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 69

    Exemplo 2.2.4 Deteco de uma sub cadeia de caracteres

    Pretende-se um autmato que aceite todas as cadeias no alfabeto {0,1} que contenham a sub

    cadeia 001.

    Por exemplo 10010, 010010, 1010101010001111 pertencem a esta linguagem; mas

    11010100 e 0101010 no pertencem.

    A primeira tarefa determinar quais os estados que o autmato deve ter. Ele tem que

    reconhecer 001. Pode ainda no ter encontrado nenhum dos caracteres da sequncia, ou pode

    j ter encontrado um, dois ou os trs. So por isso necessrios pelo menos quatro estados.

    Chamem-se Nada, 0, 00, 001. O Nada ser o estado inicial.

    Iniciado, se l um 1 isso no lhe interessa e deixa-se ficar. Se l um 0, ento pode ser o

    primeiro da sequncia procurada e por isso transita para o estado de j ter lido um 0; o estado

    0. Se de seguida lhe aparece um outro 0, est no bom caminho e transita para o estado 00.

    Mas se em vez do 0 lhe aparece um 1, ento no leu um nmero suficiente de zeros e tem que

    reiniciar o escrutnio, voltando assim ao estado inicial. Estamos na Fig. 2.3.19

    Estando em 00 se aparece 1 ento apareceu 001 e a cadeia deve ser desde j aceite,

    independentemente do que acontecer depois, transitando por isso para o estado aceitador

    001 e no saindo de l mais. Este ltimo requisito alcana-se colocando uma aresta de

    001 para si mesmo, seja com 0 seja com 1.

    Figura 2.3.20. DFA que reconhece a sub-cadeia 001.

    Ini 0 00

    1

    0 0

    1

    Ini 0 00 001

    1

    0 0 1

    1

    0, 1

    Figura 2.3.19.Incio da resoluo doexemplo 2.2.4.

  • 7/21/2019 2. AutomatosFinitos_Apont

    28/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 70

    Contagem em mdulo n.

    A contagem em mdulo n uma contagem de nmeros inteiros cclica que se inicia em zero

    e volta a zero npassos frente.

    Por exemplo a contagem mdulo 3 0, 1, 2, 0, 1, 2, . A tabela seguinte ilustra a

    contagem em mdulo para nmeros inteiros positivos e negativos.

    Tabela 2.3.1 . Contagem em mdulo.

    N Contagem dos nmeros inteiros positivos e negativos

    -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10

    M

    d

    u

    l

    o

    2 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

    5 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0

    6 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4

    7 4 5 6 0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1 2 3

    10 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0

    12 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10

    Exemplo 2.2.5. Desenhar um autmato que seja capaz de contar em mdulo 2.

    Sem perda de generalidade consideraremos apenas os nmeros positivos. Os nmeros a

    contar so codificados em binrio, ={0, 1}, ou seja, teremos a Tabela 2.3.2.

    Tabela 2.3.2 Contagem em mdulo 2

    N 0 1 2 3 4 5 6 7 8 9 10

    Cdigo 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 10010

    Mod2 0 1 0 1 0 1 0 1 0 1 0

  • 7/21/2019 2. AutomatosFinitos_Apont

    29/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 71

    A contagem em mdulo dois tem dois resultados possveis: 0 ou 1. Por isso o autmato

    s necessita de dois estados, o 0 (para contar 0) e o 1 (para contar 1). O nmero a contar est

    codificado em binrio, iniciando-se a sua leitura da esquerda para a direita: o DFA l, por

    exemplo, 10101111 pela ordem 1-0-1-0-1-1-1-1. Isto quer dizer que o LSB (Least Significant

    Bit) o lido mais direita, e s conhecido no fim da leitura. O DFA conta com qualquer

    nmero de bits: s quando a cadeia acaba se conhece o seu tamanho.

    Inicialmente est no estado 0. Se aparece um 0, mantm-se no estado 0; se aparece um 1,

    conta 1 e por isso vai para o estado 1.

    Estando no estado 1, se aparece um 0 (leu at agora 10, modulo 2 d 0), transita para o

    estado 0. Se aparece um 1 (leu at agora 11=3, modulo 2 d 1) mantm-se no estado 1.

    Estando no estado 0 depois de ler 10: se aparece 1 (101=5, mod2(5)=1) vai para o estado

    1; se aparece 0 (100=4, mod2(4)=0), mantm-se no estado 0.

    Estando no estado 1 depois de ler 11: se aparece 0 (110) vai para o estado 0), se aparece

    1 (111) mantm-se no estado 1.

    Para que o DFA esteja completo, falta definir o estado aceitador, que depende da

    linguagem especificada:

    - se forem as cadeias que em mdulo 2 dem zero, o estado final ser o estado 0

    - se forem as cadeias que em mdulo 2 dem um, o estado final ser o estado 1. Nestecaso teremos a Fig. 2.3.23.

    0 1

    0

    1

    0 1

    0

    1

    1

    0

    Figura 2.3.21. Incio daconstruo do DFA contador emmdulo 2

    Figura 2.3.22. Continuao daconstruo do DFA contador em

    mdulo 2

  • 7/21/2019 2. AutomatosFinitos_Apont

    30/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 72

    Figura 2.3.23. DFA da linguagemL(M)={w{0,1}* : mod2(w)=1}

    Exemplo 2.2.6. Desenhar o DFA capaz de contar os nmeros inteiros (no negativos)

    correctamente em mdulo 4.

    A contagem mdulo 4 tem quatro valores possveis: 0, 1, 2, 3. Quatro estados sero emprincpio suficientes. O nome do estado o valor da contagem que lhe corresponde. A leitura

    da cadeia feita da esquerda para a direita.

    No incio temos o estado inicial 0.

    Aparece 0, mantm-se no estado 0; aparece 1, vai para o estado 1.

    Estando no estado 1 (depois de ler 1): aparece 0 (10) vai para o estado 2, aparece 1 (11)

    vai para o estado 3.

    Estando no estado 2 (depois de ler 10): aparece 0 ( 100) vai para o estado 0, aparece 1

    (101=5, mod4(5)=1) vai para o estado 1.

    Estando no estado 3 (depois de ler 11): aparece 0 (110=6, mod4(6)=2) vai para o estado

    2, aparece 1 (111=7, mod4(7)=3) vai para o estado 3.

    0

    0

    1

    1

    0

    1

    0 1

    23

    0

    1

    01

    Figura 2.3.24. Construo doDFA contador em mdulo 4.

  • 7/21/2019 2. AutomatosFinitos_Apont

    31/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 73

    Se continuarmos veremos que o autmato no se engana. O estado final ser

    determinado pela linguagem requerida. Se for por exemplo 2, ela ser composta pelas cadeias(binrias, em que o LSB o primeiro direita) que valem 2 em mdulo 4.

    curioso verificarmos esta periodicidade, quando a cadeia binria lida da direita para

    a esquerda. E se fosse lida da esquerda para a direita ?

    Exemplo 2.2.7. Contagem mdulo 7

    Neste caso precisaremos de um autmato com 7 estados 0,1,2,3,4,5,6,7, sendo 0 o estado

    inicial.

    Estando em 0: se aparece 0 mantm-se em zero, se aparece 1 vai para 1.

    Estando em 1 (lido 1): com 0 (10) vai para 2, com 1 (11) vai para 3.

    Estando em 2 (lido 10): com 0 (100) vai para 4, com 1 (101) vai para 5.

    0 1

    23

    0

    1

    0

    1

    1

    0

    01

    0

    1 2

    3

    4

    5

    6

    0

    0

    11

    01

    Figura 2.3.25. DFA contador em mdulo 4.

    Figura 2.3.26. Construo doDFA contador em mdulo 7.

  • 7/21/2019 2. AutomatosFinitos_Apont

    32/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 74

    Continuando,

    Estando em 3 (lido 11): com 0 (110) vai para 6, com 1 (111) vai para 0.

    Estando em 4 (lido 100): com 0 (1000=8, 8mod7=1) vai para 1, com 1 (1001=9,9mod7=2) vai para 2.

    Estando em 5 (lido 101): com 0 (1010=10, 10mod7=3) vai para 3, com 1 (1011=11,

    11mod7=4) vai para 4.

    Falta apenas definir o que acontece no estado 6.

    Estando em 6 (lido 110): com 0 (1100=12, 12mod7=5) vai para 5, com 1 (1101=13,

    13mod7=6) vai para 6.

    Testemos o DFA para :

    1110101 =64+32+16+4+1=117 117mod7=5; d certo.

    0

    1 2

    3

    4

    5

    6

    0

    0

    11

    01

    0

    0

    1

    0

    101

    0

    1 2

    3

    4

    5

    6

    0

    0

    11

    01

    0

    0

    1

    0

    1

    Figura 2.3.27. Continuao daconstruo do DFA contador

    em mdulo 7.

  • 7/21/2019 2. AutomatosFinitos_Apont

    33/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 75

    1010101011=512+128+32+8+2+1=683, 683mod7=4; confere.

    Em resumo, numa boa estratgia de projecto de um DFA:

    - A primeira e decisiva operao determinar quanto estados ter o DFA e qual a funode cada um.

    - A etiqueta que atribumos a cada estado deve exprimir a funo do estado.

    - Depois colocamo-nos dentro de cada estado e imaginamo-nos a ler a cadeia de entrada

    e a imitar o DFA.

    2.4. Linguagens regulares

    Qualquer DFA reconhece uma linguagem. Tal afirmao fcil de provar: uma linguagem

    um conjunto de cadeias. Um DFA aceita sempre alguma cadeia, mesmo que seja a cadeia

    nula, como o caso do autmato seguinte, em ={a,b}:

    Figura 2.4.1. DFA aceitador da linguagem L={}, s com a cadeia vazia.

    E dada uma linguagem qualquer, definida por um conjunto de cadeias, existir sempre

    um DFA, autmato finito determinstico, que a reconhea ? Nem sempre.

    H uma famlia de linguagens em que tal acontece sempre: as linguagens regulares.

    Uma linguagemL diz-se regular se e s se existir um DFA Mque a reconhea, ou seja,

    L=L(M)

    A famlia das linguagens regulares composta por todas as linguagens que so aceites

    por algum DFA.

    1a

    a,b

    b

    0

  • 7/21/2019 2. AutomatosFinitos_Apont

    34/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 76

    E como se pode provar que uma linguagem regular? Por prova construtiva: se formos

    capazes de construir um autmato que a reconhea, ento ela regular. E se no formos

    capazes? Aqui que a porca torce o rabo, pois pode ser por falta de percia nossa. Mas

    tambm pode ser porque impossvel (o que acontece se a linguagem for no regular).

    Exerccios de construo de DFAs.

    1. Construir um DFA que aceite a linguagem L em = {0, 1} tal que

    (a) L contm apenas 010 e 1.

    (b) L o conjunto de todas as cadeias que terminam com 00.

    (c) L o conjunto de todas as cadeias sem 1s consecutivos nem 0s consecutivos.

    2. Desenhar o DFA que aceita todas as cadeias em {0,1}, com excepo das que contm 010:

    0111101100 , 0000, 1011000 L(M)

    10101000, 111100010

    L(M)

    3. Desenhar o grafo do DFA que aceite as cadeias binrias que valem 5 em mdulo 6.

    2.5. Autmatos finitos no-determinsticos

    Um DFA sabe sempre o que fazer: o seu caminho est completamente definido no seu grafo,

    nunca h qualquer situao em que o DFA exite, por poder escolher entre dois caminhosalternativos, ou por no saber o que fazer.

    Nem todos os autmatos assim so. Poderemos imaginar uma situao em que a partir

    de um estado sejam possveis zero, uma ou mais transies com o mesmo smbolo do

    alfabeto, isto , em que h caminhos alternativos (para a mesma situao na entrada). Quando

    isso acontece o autmato deixa de ser determinstico. Diz-se autmato no-determinstico ou

    indeterminstico.

  • 7/21/2019 2. AutomatosFinitos_Apont

    35/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 77

    Havendo caminhos alternativos pode haver, entre o estado inicial e o estado aceitador,

    zero, um ou vrios caminhos. Pode aceitar uma cadeia seguindo um dado caminho e no

    aceitar a mesma cadeia seguindo um outro caminho alternativo.

    Como definir neste caso a condio de aceitao de uma cadeia?

    Do modo seguinte: uma cadeia de entrada aceite se houver para ela (pelo menos) um

    caminho que leve a um estado aceitador quando ela toda lida.

    Definio 2.5.1: Um aceitador no-determinstico (NFANondeterministic Finite Accepter)

    definido pelo quinteto

    M= (Q,,, q0, F)

    em que a funo de transio definida por

    : Q({}) 2Q

    Os restantes membros do quinteto definem-se do mesmo modo que no caso do DFA.

    Lendo com ateno a definio constatam-se as seguintes diferenas em relao ao DFA

    (definio 2.2.1):

    1- O contradomnio de a potncia 2Q do conjunto Q, e no Q, precisamente porque o

    resultado de pode ser no limite um qualquer subconjunto de Q. A potncia 2Q de um

    conjunto composta por todos os seus subconjuntos possveis, incluindo o vazio.

    2- O conjunto (qi, a) pode ser vazio, significando que no h qualquer transio nesta

    situao. No grafo no h uma aresta partindo de qi com o smbolo a. No obrigatrio que

    exista uma aresta a partir de qipara cada um dos smbolos do alfabeto.

    a

    a

    Figura 2.5.1 Parte de umautmato finito com doiscaminhos alternativos paraa mesma leitura na entrada.

  • 7/21/2019 2. AutomatosFinitos_Apont

    36/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 78

    3- tambm pode ser argumento de , ou seja, pode dar-se uma transio sem consumir

    um smbolo de entrada ( o mecanismo de leitura pode ficar parado em alguns movimentos).

    No grafo do NFA pode existir uma ou mais arestas com o smbolo .

    Os NFAs podem representar-se por grafos tal como o DFA. Os ns so os estados e as

    arestas as transies. Por exemplo, a transio (q1, a) = {q2, q3} s pode existir num NFA,

    dado que h dois caminhos alternativos: de q1 lendo a ou se transita para q2 ou se transita para

    q3. Com um grafo ser

    Num NFA pode dar-se uma transio com o carcter . Este facto parece estranho na

    medida em que aceitar o nada numa primeira anlise parece at contrariar a prpria noo de

    aceitao. Mas veremos a utilidade deste facto.

    Consequncias da possibilidade de transio com

    H algumas consequncias da possibilidade de transio com o que convm aqui referir.

    1 - de um qualquer estado para ele mesmo pode-se sempre transitar com .

    Suponhamos que estamos no estado qi depois de ler o prefixo aba da cadeia ababb.

    Lendo agora o carcter b o autmato transita par o estado qj.

    a

    a

    q1 q2

    q3

    qi qjb

    Figura 2.5.2. Grafo da transio(q1, a) = {q2, q3}

    Figura 2.5.3. Grafo (NFA) da transio(qi, b) = qj

  • 7/21/2019 2. AutomatosFinitos_Apont

    37/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 79

    Mas repare-se que a cadeia ababb a mesma que ababb ou que ababb ou que

    ababb e por a alm. Como representar esse facto no grafo? Simplesmente colocando uma

    transio do estado qipara ele mesmo.

    O mesmo ir depois acontecer em qj . Por isso o grafo completo ter a forma da Fig.

    2.5.4.

    Em qualquer NFA existe essa caracterstica: h uma transio com de um qualquer

    estado para ele mesmo. Por ser sempre verdade, geralmente no se desenha, considerando-se

    que a transio est l implicitamente.

    Nunca esquecer no entanto que no caso de um DFA no h transies-.

    2 Quando a transio- for uma alternativa a uma transio com um outro carcter, o

    autmato escolhe comer um carcter ou no. Suponhamos, por exemplo, que um NFAchega a um estado q1, da figura seguinte, e se lhe apresenta de seguida o carcter b. O NFA

    tem dois caminhos alternativos: ou consome b e vai para q2, ou no consome b (consome

    que est implcito na cadeia aabab, aabab) e vai para q3.

    Havendo (por vezes tantas) escolhas, como se pode saber se uma cadeia aceite pelo

    DFA? Se ele escolhe um caminho e no consegue chegar ao estado final conclui-se que no

    aceita a cadeia? E se ele tivesse escolhido outro, aceitaria ou no? Teria que tentar todos os

    caminhos alternativos possveis. Se encontrasse um que o levasse a um estado aceitador ento

    aceitaria a cadeia.

    qi qjb

    q1

    b q2

    q3

    aabab

    aabab

    aabab

    Figura 2.5.4. Grafo (NFA) da transio(qi, b) = qj , com explicitao (em relao

    ao da Fig. 2.5.3) das transies com .

    Figura 2.5.5.

  • 7/21/2019 2. AutomatosFinitos_Apont

    38/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 80

    A diferena entre uma computao determinstica (podendo terminar ou no num estado

    aceitador) e uma computao no determinstica em que existe um caminho aceitador

    ilustrada pela Figura 2.5.6 (de Sipser).

    Figura 2.5.6. Uma computao determinstica cria um caminho, enquanto que uma

    computao no-determinstica cria uma rvore.

    Na computao determinstica nunca h escolhas. A cadeia lida ou aceite ou no,

    conforme o ltimo estado seja aceitador ou no. Na computao no determinstica cria-se

    uma rvore, com sucessivas ramificaes sempre que haja uma escolha possvel. Se um dos

    caminhos de uma computao terminar num estado aceitador, o NFA aceita a cadeia. Casonenhum caminho termine num estado aceitador, a cadeia rejeitada.

    Uma cadeia aceite pela NFA se houver alguma sequncia de movimentos possveis

    que coloquem o autmato num estado final (aceitador) no fim da cadeia. Caso contrrio

    rejeitado.

    H uma outra forma de concebermos uma computao no determinstica. Sempre que

    h uma escolha possvel, o NFA replica-se uma vez por cada escolha, de modo que o nmerode configuraes vai aumentado em cada ramificao da rvore supra. Cada configurao est

    aceita ou rejeita

    Computaodeterminstica

    aceita

    Computao nodeterminstica

  • 7/21/2019 2. AutomatosFinitos_Apont

    39/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 81

    no estado consequente da escolha feita e na sua entrada esto aos caracteres ainda no lidos.

    Se um dos autmatos replicados est numa configurao tal que no pode transitar para

    qualquer estado (seja com seja com um outro carcter), e se a leitura ainda no chegou ao

    fim, ento esse autmato morre. Se no fim da computao houver algum autmato

    sobrevivente e se pelo menos um deles estiver num estado aceitador, a cadeia aceite.

    Funo de transio estendida *

    Tal como no caso do DFA, tambm num NFA se pode introduzir o conceito de funo de

    transio estendida *. Ela resulta da leitura de uma cadeia w que o seu segundo argumento

    (em vez de um carcter),

    * (qi, w) = Qj

    sendo Qj o conjunto de todos os estados possveis do autmato que podem ser alcanados a

    partir de qi e pela leitura de w. Isto * (qi, w) contm o estado qj se e s se existir um

    caminho no grafo de transies desde qi at qj com etiqueta w, para todos os qi, qj Q e

    w*, como na Fig. 2.5.7.

    Definio 2.5.2. Linguagem aceite por um NFA

    A linguagemL aceite pelo NFA M= (Q,, , q0, F) definida como o conjunto de todas as

    cadeias w que levem o autmato a um estado final aceitador, ou seja,

    L(M) = {w* :*(q0, w)F }

    i.e., composta por todas as cadeias w para as quais existe pelo menos um caminho

    etiquetado w desde o vrtice inicial at algum vrtice final.

    Exemplo 2.5.1 (Linz)

    O autmato da Figura 2.5.8 no determinstico porque:

    qi qjw

    Figura 2.5.7.

  • 7/21/2019 2. AutomatosFinitos_Apont

    40/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 82

    - de q1partem duas arestas etiquetadas por 0

    - de q0parte uma aresta etiquetada por

    - de q2 no definida qualquer transio, (q2, 0) =

    - existe sempre a transio (qi,) = { qi}, para todo o i, mesmo se no desenhada.

    Figura 2.5.8. Um aceitador no-determinstico

    Se escrevermos todas as transies possveis, teremos:

    (q0, 1) = {q1}

    (q0, 0) =

    (q1, 0) = {q0, q2}

    (q1, 1) = {q2}

    (q1,) = {q1}

    (q0,) = { q0, q2}

    (q2, 0) =

    (q2, 1) =

    (q2,) = {q2}

    O autmato aceita:

    10, porque dos dois estados alcanados um final.

    q1 q2q0

    0

    1

    0, 1

  • 7/21/2019 2. AutomatosFinitos_Apont

    41/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 83

    1010, 101010,

    No aceita : 1, 11, 01,

    A sua linguagem composta palas cadeias de potncias de 10, ou seja,

    L(M) = { (10)n : n 0 }

    E se aparece a cadeia 110 ?

    Depois de ler 11 chega a q2. Como no est definida a transio (q2, 0), obtm-se uma

    configurao morta (dead configuration), em que se transita para o estado vazio, . Mais

    formalmente

    * (q0, 110)=.

    Como no se pode atingir um estado final processando 110, esta cadeia no aceite pelo

    NFA.

    Exemplo 2.5.2.: (Linz).

    Considere-se o autmato da Fig. 2.5.9, com o alfabeto ={a}. Ele no-determinsticoporque (i) no estado inicial h uma escolha possvel com o carcter a e (ii) no esto definidas

    todas as transies possveis.

    Figura 2.5.9. Exemplo 2.5.2

    Qual a linguagem aceite pelo autmato?

    q1q3

    q5

    a

    a

    a a

    a

    a

    q2

    q0

    q4

  • 7/21/2019 2. AutomatosFinitos_Apont

    42/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 84

    Pela parte de cima aceita a cadeia aaa e s essa.

    Pela parte de baixo aceita aa, aaaa, aaaaaa, , a2n, n1

    O conjunto das duas, ou seja a unio das duas, d a linguagem aceite pelo autmato

    L(M) = {a3} {a2n: n1}

    Se o NFA pode escolher, na prtica com o se constri? Para que servem?

    Os NFA so construes matemticas que no passam disso: no se pode construir um

    NFA para uma aplicao prtica. Pense-se por exemplo o que aconteceria a um autmato que

    controlasse uma porta automtica se ele no fosse determinstico

    No entanto tm uma grande utilidade em Teoria da Computao. Usam-se como um

    ferramenta matemtica muito til para

    - modelizar algoritmos em que tem que se fazer escolhas (search-and-backtracking, por

    exemplo)

    - definir linguagens compostas por conjuntos bastante diferentes (como no exemplo

    anterior {a3}{a2n : n1}.

    - descrever de forma simples e concisa linguagens complicadas. Na definio de uma

    gramtica pode existir um elemento de no-determinismo, como na produo

    SaSb |

    em qualquer ponto pode-se escolher a primeira ou a segunda produo. Podemos assim

    especificar um grande nmero de cadeias usando apenas duas regras. Se quisermos construir

    um autmato equivalente (estudaremos como num captulo posterior) ser mais fcil atravs

    de um NFA.

    - construir DFAs complicados. Como veremos de seguida no h nenhuma diferena

    essencial entre NFAs e DFAs: dado um NFA possvel encontrar um DFA equivalente. Se

    quisermos construir um DFA, poderemos numa primeira etapa construir um NFA, mais fcil

    de desenhar, e depois obter, pela tcnica que estudaremos, um DFA equivalente.

  • 7/21/2019 2. AutomatosFinitos_Apont

    43/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 85

    2.6. Equivalncia entre autmatos (aceitadores) finitos determinsticos e

    no-determinsticos

    Como vamos ver, a partir de um qualquer NFA com um dado alfabeto pode-se obter um DFA

    que aceita as mesmas cadeias e rejeita as mesmas cadeias no mesmo alfabeto. Diz-se que o

    DFA equivalente ao NFA. Vejamos mais formalmente a definio de equivalncia entre

    autmatos.

    Definio 2.6.1. Aceitadores equivalentes : dois aceitadores M1 e M2 so equivalentes se

    L(M1) =L(M2)

    isto , se ambos aceitam a mesma linguagem.

    Existem geralmente muitos aceitadores para uma dada linguagem, e por isso qualquer

    DFA ou NFA tem muitos aceitadores equivalentes.

    Os DFA podem-se considerar casos especiais de NFA, em que os caminhos possveis se

    reduzem sempre a um. Por isso se uma linguagem aceite por um DFA ento existe um NFA

    que tambm a aceita.

    E o contrrio? Se uma linguagem aceite por um NFA, existir um DFA que a aceite?

    Ser que o no-determinismo eliminou esta possibilidade ?

    De facto no eliminou: se uma linguagem aceite por um NFA ento existe um DFA

    que tambm a aceita.

    Como encontr-lo ? Como converter um NFA num DFA ? Como transformar uma

    situao de multi-escolha numa escolha nica ?

    Um NFA pode escolher vrios caminhos. Depois de um NFA ler uma cadeia w, no se

    sabe precisamente em que estado est, mas sabe-se apenas que est num estado entre um

    conjunto Qw de estados possveis

    Qw={qi, qj, ..., qk}.

    Em contrapartida depois de um DFA ler a mesma cadeia tem que estar num estado bemdefinido, qw.

  • 7/21/2019 2. AutomatosFinitos_Apont

    44/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 86

    Como encontrar uma correspondncia entre estas duas situaes?

    Pode-se conceber um truque simples: cria-se um estado no DFA equivalente ao conjunto

    Qw, isto , etiqueta-se, no DFA, um estado por Qw. Se isso for possvel temos o problema

    resolvido.

    Mas resultar isso num autmato finito? Qual o nmero mximo de estados do DFA que

    se podem obter por este processo?

    Se no NFA existem no total Q estados, o nmero mximo de estados que se podem obter

    no DFA igual potncia de conjuntos de Q, isto 2|Q|, e portanto finito. No caso extremo de

    total indeterminismo no NFA, o nmero de estados no DFA ser 2|Q|.Se tivermos 6 estados

    no NFA teremos 26=64 estados no DFA ! Como geralmente o indeterminismo apenas

    parcial, o DFA equivalente tem um nmero de estados substancialmente inferior.

    Vejamos um exemplo.

    Exemplo 2.6.1.

    Construir um DFA que aceite a linguagem L composta pelas cadeias em ={0,1} que

    contenham trs 0s seguidos ou trs 1s seguidos , como por exemplo

    000, 111, 10100010, 00111101000.

    A procura directa deste DFA pode tornar-se numa operao bastante complicada, mesmo

    para um projectista experiente. relativamente fcil desenhar um DFA para o caso de 000, ou

    para o caso de 111, mas no assim para ambos os casos simultaneamente. No entanto

    usando o no determinismo a soluo surge de forma bastante simples.

    Primeiro, poderemos desenhar o NFA que aceita as cadeias com 000. O NFA, vendo um

    zero, decide uma de duas coisas: ele no o incio de 000 (e neste caso deixa-se ficar onde

    est), ele o incio de 000 (e ento transita para o estado seguinte na corrida de trs zeros).

    Ser ento:

    Figura 2.6.1. Primeira parte do exemplo 2.6.1

    1,0

    0

    0

    0

    0,1

    q0

    qf

    q1q2

  • 7/21/2019 2. AutomatosFinitos_Apont

    45/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 87

    Este NFA aceita todas as cadeias que contenham 000, e s essas. De facto:

    - se uma cadeia contm 000, h sempre um caminho aceitador para ela. Por exemplo no

    caso da cadeia 1001110110001101010 deixa-se ficar em q0 at ao nono carcter e depois

    transita sucessivamente para q1, q2 e qf, ficando a at ao fim da cadeia.

    - se uma cadeia no contm 000 no possvel chegar ao estado aceitador. Por exemplo

    para a cadeia 1100101001, se o NFA transita com algum dos zeros para o estado q1, ele acaba

    por morrer porque lhe aparece um 1 em q1 ou em q2 e no est a definida qualquer transio

    com 1.

    Se o autmato no tivesse a possibilidade de ficar em q0 com 0, avanaria sempre para

    q1 quando lesse um 0 (por exemplo em 1010001). Mas se a seguir aparece 1, ele entra numa

    configurao morta, dado que no h sada de q1 com 1, e por isso terminaria a computao

    no aceitando a cadeia 1010001). Ora acontece que a sequncia 000 aparece mais frente e a

    cadeia deveria ser aceite. O facto de poder esperar em q0, palpitando-lhe que aquele 0 no

    ainda da sequncia pretendida, evita esta situao.

    Segundo, desenhamos o NFA que aceita as cadeias com 111 (e s essas). Por razes

    anlogas ele ser

    Figura 2.6.2. Segunda parte do exemplo 2.6.1

    Agora, para termos a possibilidade das duas situaes, basta-nos juntar os dois

    autmatos, a partir do estado inicial comum, obtendo-se a Fig 2.6.3. O estado final aceitador

    pode tambm ser comum (embora este facto no seja obrigatrio).

    11 1

    0,1

    qf

    q0

    q1 q2

    1

    0,1

    1,0

    0

    0

    0

    0,1

    q0

    q3

    q1q2

    1

    1 1q4 q5

    1

    Figura 2.6.3. Exemplo 2.6.1.completo

  • 7/21/2019 2. AutomatosFinitos_Apont

    46/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 88

    E temos o NFA procurado.

    Vamos agora procurar um DFA equivalente.

    Para isso construa-se a tabela de transies:

    Tabela 2.6.1. Transies da Fig. 2.6.3

    N 0 1

    q0 q0, q1 q0, q4

    q1 q2 -

    q2 q3 -

    q3 q3 q3

    q4 - q5

    q5 - q3

    A primeira dificuldade deriva do facto de algumas transies terem vrios estados

    alternativos de chegada, que so por isso co-alcanveis. O significado dos estados definido

    pelo projectista. Assim sendo, nada nos impede de criarmos estados no DFA que

    correspondam a conjuntos de estado do NFA. E ser lgico que todos os estados do NFA co-

    alcanveis pela mesma transio componham um estado do DFA alcanvel por essa mesma

    transio, como na Fig. 2.6.4.

    a) no NFA b) no DFA equivalente

    Figura 2.6.4. Pormenor do clculo do DFA equivalente: dois estados q2 e q3 do NFA co-alcanveis pela transio aproduzem um s estado q23 no DFA equivalente.

    a

    a

    q1 q2

    q3

    a

    q1 q23

  • 7/21/2019 2. AutomatosFinitos_Apont

    47/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 89

    Para definir as transies no DFA, etiquetem-se os seus estados com ndices agrupando

    os ndices dos estados do NFA co-alcanveis pelas mesmas transies.

    Na Fig. 2.6.3 de q0 com 0, pode-se ir ou para q0 ou para q1, ou seja para o conjunto {q0,

    q1} Crie-se um estado equivalente a este conjunto. Vamos chamar-lhe q01para sabermos a que

    corresponde.

    De q0 com 1, pode-se ir ou para q0 ou para q4, ou seja para o conjunto {q0, q4} Crie-se de

    igual modo um estado equivalente a este conjunto, q04.

    Estes estados q01 e q04vo integrar o DFA. Temos que saber o que se passa neles quando

    aparece 1 ou 0. Para isso colocamo-los na primeira coluna da tabela de transies, como

    indicado na Tabela 2.6.2..

    Tabela 2.6.2. Transies do DFA equivalente.

    0 1

    q0 {q0, q1} = q01 {q0, q4}= q04

    q01

    q04

    Agora temos que imaginar o seguinte: se o DFA est em q01 e aparece 0, o que se

    passar?

    Sabemos que q01

    corresponde do conjunto {q0, q

    1} do NFA. E portanto aquela pergunta

    equivalente a: se o NFA est ou em q0 ou em q1 e aparece um 0, o que se passar?

    Se est em q0pode ir para q0 ou para q1. Se est em q1pode ir para q2. Portanto estando

    em {q0, q1} pode ir para {q0, q1, q2}. Crie-se por isso no DFA o estado q012.

    E se o DFA est em q01 e aparece 1, o que se passar? Fazendo uma anlise semelhante

    conclui-se que estar em q04. Neste caso h uma nuance que convm realar: se est em q1,

    com 1 vai para o vazio,

    .Mas{

    , q0, q4}={q0, q4}.

  • 7/21/2019 2. AutomatosFinitos_Apont

    48/72

  • 7/21/2019 2. AutomatosFinitos_Apont

    49/72

  • 7/21/2019 2. AutomatosFinitos_Apont

    50/72

  • 7/21/2019 2. AutomatosFinitos_Apont

    51/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 93

    O NFA est no estado inicial at que lhe palpita que vm a os dois ltimos caracteres e

    que eles sero 10. Logo,

    Figura 2.6.7. Exemplo 2.6.2

    Vamos agora calcular a tabela de transies do DFA equivalente:

    Tabela 2.6.5.Transioes da Fig. 2.6.7

    Estadoactual

    0 1

    0 0 01

    01 03 01

    03 0=0 0=0

    O DFA ter 3 estados, os que se obtm na primeira coluna da Tabela 2.6.5.

    Figura 2.6.8. O DFA equivalente ao NFA da Fig. 2.6.7.

    Exemplo 2.6.3.

    Desenhar o DFA que aceita em ={0,1} todas as cadeias em que o 3 smbolo a contar do fim

    1. Por exemplo1000101 pertence, mas no 010101011.

    Por muito que tenhamos treinado a nossa arte de desenhar DFAs no fcil encontrar de

    imediato uma soluo. No entanto no contexto no determinstico simples: imaginemos o

    0 1 3

    0,1

    1

    0

    0

    1 0010

    1 0,1

    03

  • 7/21/2019 2. AutomatosFinitos_Apont

    52/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 94

    NFA que est a ler a cadeia, no se move at que lhe palpita que o 1 que a vem o

    antepenltimo carcter da cadeia e ento avana para o estado aceitador. Teremos ento o

    seguinte NFA com trs estados, Fig. 2.6.9.

    Figura 2.6.9. NFA do exemplo 2.6.3

    Vamos agora calcular o DFA equivalente. Comeamos pela tabela de transies, usando

    a tcnica descrita acima, nomeadamente quanto etiquetagem dos estados.

    Tabela 2.6.6. Transies do NFA da Fig. 2.6.9.

    0 1

    0 0 01

    01 02 012

    02 03 013

    012 023 0123

    03 0 0

    013 02 012

    023 03 013

    0123 023 0123

    O DFA ter 9 estados e est desenhado na Fig.2.6.10.

    Todos os estados que contenham 3 na sua etiqueta sero aceitadores.

    0 1 2 3

    0,1

    1

    0, 1 0, 1

  • 7/21/2019 2. AutomatosFinitos_Apont

    53/72

  • 7/21/2019 2. AutomatosFinitos_Apont

    54/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 96

    Ao conjunto {2,3,4,5} chama-se o fecho-a (a-closure) do estado 1. Ao conjunto {1,3}

    chama-se fecho- ( -closure), sendo composto por todos os estados que se podem alcanar

    de 1 com (inclui naturalmente o prprio); pode ter um nmero qualquer de estados,

    dependendo do caso, usando transies, at ao nmero total de estados do autmato. Natabela de transies, quando calcularmos o DFA equivalente, tem que se ter muita ateno

    para com o fecho- de um estado quando estamos a calcular as transies do estado com os

    caracteres do alfabeto. Se houver uma transio- a partir do estado inicial no NFA, ento o

    estado inicial do DFA equivalente ser o estado composto pelo inicial do NFA mais o fecho-

    do estado inicial do NFA.

    Exemplo 2.6.4. Seja o autmato anterior com um estado 6 aceitador e uma transio-

    do estado inicial para o estado 6, Fig. 2.6.12 . Calcule-se o DFA equivalente. A primeira

    tarefa ser vermos qual o estado inicial do DFA. Como se vai de 1 para 6 aceitador com ,

    quer isto dizer que o NFA aceita . Ora a nica forma de o DFA tambm aceitar fazendo o

    seu estado inicial aceitador. O estado 3 do NFA pode ser alcanado sem consumir caracteres,

    ele faz parte do fecho-de 1. Portanto o estado inicial do DFA ser 136 e ser por ele que

    iniciaremos a construo da sua tabela de transies.

    Figura 2.6.12. Exemplo 2.6.4.

    Tabela 2.6.6. Transies da Fig. 2.6.12.

    Estado a b

    136 245 4

    245 2 45

    4 46

    2 2

    45 46

    46 46

    1

    2

    3

    4

    a

    a

    ab

    b

    5

    6

    b

  • 7/21/2019 2. AutomatosFinitos_Apont

    55/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 97

    O DFA equivalente ter 7 estados, dos quais dois sero aceitadores: 136 e 46. Fica ao

    cuidado do leitor o seu desenho e a identificao da linguagem que ele aceita.

    2.7. Reduo do nmero de estados em Autmatos Finitos

    Qualquer DFA define uma nica linguagem. Mas uma linguagem no define um nico DFA.

    Para uma linguagem existem muitos possveis DFAs, isto , existem muitos DFAs

    equivalentes, cujo nmero de estados pode ser bem diferente. Por razes de simplicidade,

    importa obter o de menor nmero de estados. Por exemplo se quisermos programar um DFA,

    o espao necessrio para computar proporcional ao nmero de estados. Por razes de

    eficincia deve-se reduzir o nmero de estados ao mnimo possvel.

    Vejamos alguns exemplos simples.

    Exemplo 2.7.1

    O autmato da Fig. 2.7.1 aceita todas as cadeias no seu alfabeto, porque todos os estados so

    aceitadores.

    Figura 2.7.1.

    Ele tem um equivalente com um s estado:

    Figura 2.7.2. Autmato equivalente ao da Fig. 2.7.1

    Exemplo 2.7.2.

    No autmato DFA seguinte h estados a mais.

    a, b

    a, b

    q0 q1

    a, b

    q0

  • 7/21/2019 2. AutomatosFinitos_Apont

    56/72

  • 7/21/2019 2. AutomatosFinitos_Apont

    57/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 99

    Figura 2.7.6. Simpificao do DFA da Fig. 2.7.5.

    Em segundo lugar chega-se a q34 com b, quer de q1, quer de q2. Por outro lado de q1 com

    a vai-se para q2 e de q2 com a vai-se para q2. Se fundirmos q1 e q2 em q12, mantendo essas

    transies, o DFA resultante, Fig. 2.7.7 com apenas 3 estados, equivalente ao inicial.

    Figura 2.7.7. DFA final no exemplo 2.7.2

    Este procedimento heurstico, baseado na nossa habilidade, pode formalizar-se numalgoritmo de minimizao do nmero de estados de um DFA. Para o seu desenvolvimento

    vejamos algumas definies prvias.

    Estados indistinguveis

    Dois estadosp e q dizem-se indistinguveis se:

    - se a partir de um deles se chega a um estado aceitador com uma cadeia w , tambm se

    chega a um estado aceitador a partir do outro com a mesma cadeia w, formalmente,

    * (p,w)F * (q,w)F, para todas as cadeias w *.

    e

    - se a partir de um deles se chega a um estado no aceitador com uma cadeiax, tambm

    se chega a um estado no aceitador a partir do outro com a mesma cadeiax:

    * (p,x)F * (q,x)F, para todas as cadeiasx *.

    q0

    q34b q2

    a

    b

    a, b

    q1a

    b

    a

    q0q34

    a, bq12

    a

    a, b b

  • 7/21/2019 2. AutomatosFinitos_Apont

    58/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 100

    Num grafo teremos a seguinte situao:

    Figura 2.7.8. Os estadosp e q so indistinguveis.

    Estados distinguveis por uma cadeia

    Se existir uma cadeia w tal que de p se chegue a um estado aceitador e de q a um no

    aceitador,

    * (p,w)F * (q,w )F

    ou tal que dep se chegue a um no aceitador e de q a um aceitador,

    * (p,w)F * (q,w )F

    ento os estadosp e q so distinguveis pela cadeia w.

    Dois estados ou so distinguveis ou so indistinguveis. A indistino tem as

    propriedades de uma relao de equivalncia R:

    1.p Rp (reflexiva)

    2.p Rqq Rp (simtrica)

    3.p Rq e q Rr p Rr (transitiva)

    Para reduzir a dimenso de um DFA, procuram-se os estados indistinguveis e

    combinam-se entre si. A racionalidade desta operao evidente: se so indistinguveis para

    que se ho-de ter l ambos?

    O algoritmo divide-se em duas etapas:

    - primeiro marcam-se os estados distinguveis,

    v q

    pu

    w

    wv q

    pu x

    x

  • 7/21/2019 2. AutomatosFinitos_Apont

    59/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 101

    - segundo, fundem-se os estados indistinguveis.

    Procedimento de marcao dos estados distinguveis

    1- Removem-se todos os estados inacessveis (limpeza do DFA). Pode fazer-seenumerando todos os caminhos simples no grafo (caminhos sem ciclos fechados) que partem

    do estado inicial. Um estado acessvel tem que estar num desses caminhos. Se um estado no

    est em qualquer caminho, quer dizer que no se pode l chegar a partir do estado inicial, e

    portanto inacessvel.

    2 Consideram-se todos os pares de estados (p, q). Se p aceitador, pF, e se q no

    aceitador, qF, ento o par (p, q) distinguvel. De facto que maior distino poderia haver

    entre dois estados? Marcam-se todos esses pares como distinguveis. Marcam-se os pares, no

    os estados individualmente. Um estado individual pode pertencer a um par distinguvel e ao

    mesmo tempo a um par indistinguvel.

    3 Considere-se um par de estados (p, q). Calculem-se as transies a partir deles para

    todos os caracteres do alfabeto, tomados um de cada vez.

    Figura 2.7.9. Transies dep e de q com a.

    Se houver pelo menos um carcter a tal que o par (pa, qa) resultante dessas transies

    seja distinguvel, ento o par (p, q) distinguvel.

    Este procedimento faz-se para todos os pares de estados (p, q) em Q.

    No fim todos os pares distinguveis esto marcados como tal. Ver a demonstrao por

    exemplo em Linz, Teorema 2.3 (pg. 64). Note-se que a marcao para os pares, no para os

    estados individualmente.

    Depois de se fazer a marcao dos estados distinguveis, particiona-se o conjunto Q dos

    estados do DFA num certo nmero de subconjuntos disjuntos Q1={qi,qj,, qk},Q2={ql,qm,, qn} , , Qx={qo,qp,, qr} tais que

    p

    q

    pa

    qa

    a

    a

  • 7/21/2019 2. AutomatosFinitos_Apont

    60/72

  • 7/21/2019 2. AutomatosFinitos_Apont

    61/72

  • 7/21/2019 2. AutomatosFinitos_Apont

    62/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 104

    Da 1 etapa, nestas duas tabelas todos os pares que contenham o estado 6 devem ser

    marcados como distinguveis (colorido), dado que 6 o nico aceitador, excepto o par (6,6)

    que indistinguvel.

    Os pares que correspondem s clulas sombreadas sero agora marcados distinguveis.

    Na tabela de transies com b marcam-se todos os distinguveis com a. Basta faz-lo na

    metade superior (ou inferior) da tabela. Neste caso no h nenhum..

    Ser o par (1,2) distinguvel ? (1,2) com a d (2,4), (2, 4) com a d (4, 4), nenhum

    distinguvel; portanto no se marca. Vai-se ver tabela de b se o par (2,4) distinguvel.

    Para o par (3,4): (3,4) com a d (6,4), j marcado e portanto (3,4) marca-se como

    distinguvel.

    O mesmo para todos os outros pares. Obtm-se a tabela seguinte, em que 1 identifica os

    distinguveis.

    Tabela 2.7.3. Estados distinguveis (1)e indistinguveis (0)

    1 2 3 4 5 6 7

    1 0 0 1 0 1 0 1

    2 0 0 1 0 1 0 1

    3 1 1 0 1 0 1 0

    4 0 0 1 0 1 0 1

    5 1 1 0 1 0 1 0

    6 0 0 1 0 1 0 1

    7 1 1 0 1 0 1 0

    Agora particiona-se o conjunto dos estados em subconjuntos que obedeam s trs

    condies acima enunciadas. No uma tarefa fcil.

  • 7/21/2019 2. AutomatosFinitos_Apont

    63/72

  • 7/21/2019 2. AutomatosFinitos_Apont

    64/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 106

    conjunto de palavras, que poderemos chamar palavras chave, queremos encontrar todas as

    ocorrncias delas num certo texto. Os autmatos finitos no determinsticos permitem faz-lo

    de um modo expedito e simples. Para uma palavra chave, por exemplo chave, desenha-se um

    autmato com:

    - um estado inicial que transita para si prprio com todo e qualquer carcter do alfabeto,

    - uma corrida de estados aos quais se chega depois de ler sucessivamente um carcter da

    palavra chave

    Figura 2.8.1. NFA para busca da palavra chave.

    Para se implementar o NFA, pode-se escrever um programa que simula o seu

    funcionamento, calculando os estados em que est aps ler um carcter. Sempre que h uma

    escolha, faz-se uma ou vrias rplicas do NFA.

    no entanto mais prtico calcular o DFA equivalente e ento simul-lo. Para isso aplica-se

    a tcnica padro: constri-se a tabela de transies e desenha-se o grafo depois.

    Se o alfabeto for composto pelos 26 caracteres do portugus (a b c d e f g h i j k l m n o p q

    r s t u v w x y z ), teremos muitas etiquetas para as arestas do autmato. Para simplificar a sua

    escrita poderemos usar a notao-a-e querendo dizer todos os caracteres do alfabeto menos

    a e e. Esta notao aceite pelo DEM (Deus Ex-Mquina).

    Assim sendo, o DFA equivalente ao NFA da Fig. 2.8.1 tem o aspecto da Fig. 2.8.2. Fica ao

    cuidado do leitor verificar, construtivamente, que assim .

    1 2 3 4 6

    c h a

    5

    v e

    1 2 3 4 6

    -c

    c h a

    5v e

    -h

    -a

    -a

    -e

    -v

    -c

    c

    Figura 2.8.2. DFAequivalente ao NFA

    da Fig. 2.8.1.

  • 7/21/2019 2. AutomatosFinitos_Apont

    65/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 107

    Exerccio 2.8.1

    O seguinte NFA encontra num texto as palavras doce e mel. Desenhar o o DFA equivalente.

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

    Desenhar o DFA equivalente.

    Exerccio 2.8.2.

    Desenhar o DFA que aceita as palavras amarga e carta.= { a, b, c, ...., z}.

    2.9 Autmatos finitos transdutores

    Os DFA e NFA que estudmos at aqui so aceitadores e no tm sada. Apenas lem cadeias,

    reconhecendo-as ou no como pertencentes a uma dada linguagem.

    H outros tipos de autmatos, como vimos j no Cap. 1, que tm um registo de sada, cujo

    contedo pode variar conforme a evoluo da configurao do autmato. So os transdutores,

    de que se conhecem dois tipos: as mquinas de Mealy e de More. Ambos se podem enquadrar

    no esquema geral que vimos no Cap. 1 e aqui se reproduz na Fig. 2.9.1

    Unidade de Controlo

    qk

    Ficheiro de entrada

    Memria

    Ficheiro de sada

    0

    1 2 3

    5 6

    4

    7

    dc e

    m

    e l

    o

    Figura 2.9.1. Esquemageral da um autmato

    finito

    Figura 2.8.3 NFA parao exemplo 2.8.1.

  • 7/21/2019 2. AutomatosFinitos_Apont

    66/72

  • 7/21/2019 2. AutomatosFinitos_Apont

    67/72

    Teoria da Computao Captulo 2 . Autmatos Finitos

    LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 109

    - transita para o estado qj

    - envia 0 para a sada.

    Exemplo 2.9.1

    Considere-se a mquina de Mealy da Fig.2.9.3

    Figura 2.9.3. Mquina de Mealy do exemplo 2.9.1.

    Isto , deslocou a cadeia para a direita uma casa (shift right).

    As mquinas de Mealy podem implementar-se por circuitos lgicos, e funcionam em modo

    assncrono: logo que a entrada variar pode variar a sada.

    2.9.2. Mquinas de Moore

    As mquinas de Moore distinguem-se das de Mealy pelo facto de a sua sada depender apenas

    do estado actual

    yk=f(qk)

    q0

    q1

    0/q2

    1/

    0/0

    0/11/0

    1/1

    Figura 2..9.4. Esquema geral de uma mquina de Mealy.( em http://www2.ele.ufes.br/~ailson/digital2/cld/chapter8/chapter08.doc4.html)

    Se lhe dermos a ler a cadeia 10111 ela faz:- l 1 e escreve na sada transitando

    para o estado q1,- l 0, escreve 1, passando a q2- l 1, escreve 0, passa a q1,- l 1, escreve 1, mantm-se em q1,

    - l 1, escreve 1, mantm-se em q1

    No fim da leitura est em q1 e escreveu nasada 1011.

  • 7/21/2019 2. AutomatosFinitos_Apont

    68/72

  • 7/21/2019 2. AutomatosFinitos_Apont

    69/72

  • 7/21/2019 2. AutomatosFinitos_Apont

    70/72

  • 7/21/2019 2. AutomatosFinitos_Apont

    71/72

  • 7/21/2019 2. AutomatosFinitos_Apont

    72/72