Autómatos Finitos Deterministas

Um modelo computacional simples, com memória limitada.

Introdução

Exemplo de um Autómato Finito
Exemplo de um AFD
O que acontece quando a entrada é ?

Para resolver o Problema Principal de ALP é necessário formalizar a noção de "computador/programa", de forma a representar PL = Super(e).

Os Autómatos Finitos são modelos formais de "computadores/programas" simples de descrever mas capazes de resolver vários problemas teóricos e com algumas aplicações práticas (ver o artigo na wikipedia).

Um autómato tem como entrada uma palavra que é processada símbolo a símbolo até que termina num certo estado. Em certos estados do autómato a palavra, depois de completamente "lida", é aceite e noutros é rejeitada.

Um autómato pode ser representado por um grafo orientado. Os vértices "são" os estados do autómato e as "arestas" indicam como são "lidos" os símbolos.

Autómato Finito Determinista

Autómato Finito Determinista (AFD). Um Autómato Finito Determinista (AFD) ou Autómato de Estados Finitos (Em inglês: Determinist Finite State Machine (DFSM) ou Determinist Finite State Automaton (DFSA)) é um tuplo onde:

  • Estados de Controlo é um conjunto finito.
  • Alfabeto de Entrada é um alfabeto.
  • Transição é uma função.
  • Estado Inicial .
  • Estados Finais ou de Aceitação .

Intuitivamente, um AFD "anda" de estado em estado, conforme "processa" os símbolos de uma palavra, de acordo com a transição. Esse "passeio" começa no estado inicial e "consome" um símbolo da palavra de cada vez. Quando todos os símbolos estão processados, o AFD fica num certo estado. Se for um dos estados finais a palavra é aceite, caso contrário é rejeitada.

Por exemplo, seja em que a transição é definida pela seguinte tabela:

  • Os estados de controlo são os elementos de .
  • O alfabeto de entrada é .
  • A transição é a função em que está na linha e coluna da tabela acima.
  • O estado inicial é .
  • Os estados finais são os elementos de .

A função de transição de um AFD é quase sempre representada por uma tabela como no exemplo acima. Mas por vezes é conveniente apresentá-la como um conjunto de triplos:

A transição acima como um conjunto de triplos fica:

Configuração, Computação, Aceitação

A computação da palavra por este autómato é a sequência

A notação indica que o autómato passa do estado para lendo o símbolo . Concatenado todos esses símbolos, da esquerda para a direita, obtém-se a palavra processada, neste caso . Também é indicado que o último estado é final, pelo que a palavra é aceite pelo autómato .

Configuração. Computação. Palavra Aceite. Seja um AFD.

Uma configuração de é um par onde é o estado atual e é o sufixo restante.

A computação da palavra pelo AFD é a sequência de configurações em que:

  • base (configuração inicial) .
  • passo (processamento do símbolo ativo) .

Se a palavra é aceite pelo autómato . Caso contrário, é rejeitada por .

Por exemplo, aplicando estas definições ao autómato anterior:

  1. De acordo com a base, a configuração inicial é . O "símbolo ativo" está sublinhado.
  2. Aplicando o passo obtém-se a configuração porque .
  3. O passo é repetidamente aplicado, consumindo o símbolo ativo de cada vez, até que o sufixo restante é :
    1. .
    2. .

A computação pode ser visualizada numa tabela, com uma configuração por linha

ou de forma ainda mais compacta: ou ainda

A computação termina quando não é possível fazer mais transições. Neste exemplo o autómato fica no estado . Portanto é aceite por .

O que acontece com ? A computação é a sequência:

Neste caso a computação termina no estado . Portanto é rejeitada por .

Diagramas dos Autómatos Finitos Deterministas

Tal como com as expressões regulares, a visualização gráfica dos autómatos finitos deterministas é uma ferramenta útil.

Diagrama de um AFD. Seja um AFD. O diagrama de é um grafo orientado em que:

  • Os vértices são os estados de controlo .
  • Os arcos são definidos pela transição. Se então o diagrama tem o arco Fig: Diagrama AFD - transição
  • O (único) vértice com o estado inicial é assinalado por um arco órfã a entrar: Fig: Diagrama AFD - S
  • Os (vários) vértices com estados finais são assinalados por um círculo duplo: Fig: Diagrama AFD - F

Por exemplo, o AFD usado nos exemplos acima tem o seguinte diagrama:

Diagrama de um AFD
Fig: Diagrama AFD Exemplo

Transição Estendida

A transição de um AFD está definida para cada símbolo do alfabeto de entrada: . No entanto é mais conveniente estender as transições a palavras: .

Transição Estendida. Seja um AFD. A função de transição estendida tem assinatura e fica definida pelas seguintes regras recursivas:

  • base - palavra vazia .
  • base - símbolos Para cada .
  • passo Se então .

Intuitivamente, é o estado em que o AFD fica depois de processar a palavra a partir do estado .

Por exemplo, usando o AFD anterior: e

Com transições estendidas a escrita de certas definições e condições fica mais compacta e intuitiva:

  1. Computação .
  2. Aceitação é aceite pelo AFD se, e só se . Se então é rejeitada.

Linguagens Reconhecidas pelos AFD

É altura de começar a fazer a ligação entre as linguagens regulares e os AFD.

Linguagem Reconhecida por um AFD. Seja um AFD.

A linguagem reconhecida (ou aceite) por é

Dois AFD são equivalentes se aceitam a mesma linguagem.

Tal como com as expressões regulares, a definição de "equivalência" depende das linguagens associadas.

Conclusão

Nesta secção definiu-se um modelo de "computação" simples, os autómatos finitos deterministas e associou-se uma linguagem a cada AFD.

A intenção aqui é obter-se um modelo de computação das linguagens regulares. Portanto é preciso responder afirmativamente a estas duas questões:

  1. Qualquer linguagem regular é aceite por um AFD?
  2. Qualquer linguagem aceite por um AFD é regular?

Estas duas questões são tratadas na próxima secção.