Autómatos Finitos Deterministas
Um modelo computacional simples, com memória limitada.
Introdução
Exemplo de um Autómato Finito |
---|
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:
- De acordo com a base, a configuração inicial é . O "símbolo ativo" está sublinhado.
- Aplicando o passo obtém-se a configuração porque .
- O passo é repetidamente aplicado, consumindo o símbolo ativo de cada vez, até que o sufixo restante é :
- .
- .
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
- O (único) vértice com o estado inicial é assinalado por um arco órfã a entrar:
- Os (vários) vértices com estados finais são assinalados por um círculo duplo:
Por exemplo, o AFD usado nos exemplos acima tem o seguinte diagrama:
Diagrama de um AFD |
---|
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:
- Computação .
- 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:
- Qualquer linguagem regular é aceite por um AFD?
- Qualquer linguagem aceite por um AFD é regular?
Estas duas questões são tratadas na próxima secção.