Skip to content

3. Get Started: Escrevendo e convertendo um AFN para AFD (Hello World)

Allex Lima edited this page Oct 15, 2016 · 21 revisions

Com a estrutura básica já é possível obter a conversão equivalente do seu AFN. Caso a entrada seja um AFD, o algoritmo irá retornar o mesmo autômato da entrada, uma vez que não precisa de conversão. Segue um modelo possível de AFN, apenas com as propriedades obrigatórias, cujas descrições podem ser encontradas na página sobre a estrutura geral do algoritmo.

Traduzindo um Autômato Finito Não Determinístico (AFN) para um Autômato Finito Determinístico (AFD) através da estrutura intena do AutomataTranslator

Ao baixar o repositório, você conta com alguns exemplos na pasta models/, tanto em formato JSON, como o que vamos fazer aqui, quanto arquivos em formato JFLAP.

Nesse artigo, você irá aprender a obter um AFD equivalente do autômato abaixo (localizado em models/json/eg01.json) partir do AutomataTranslator.

{
	"structure": {
		"type": "fa",
		"automaton": {
			"state": [
				{
					"@id": 0,
					"@name": "q0",
					"initial": true,
					"final": false
				},
                {
                  "@id": 1,
                  "@name": "q1",
                  "initial": false,
                  "final": true
                }
			 ],
			"transition": [
				{
					"from": 0,
					"read": "0",
					"to": 0
				},
                                {
					"from": 0,
					"read": "0",
					"to": 1
				},
                                {
					"from": 0,
					"read": "1",
					"to": 1
				},
                {
                   "from": 1,
                   "read": "0",
                   "to": 0
                }
			]
		}
	}
}

Abra o AutomataTranslator com o comando

$ python app.py 

A seguinte interface será executada:

Ao clicar no menu Arquivo, você terá as seguintes opções:

  • Abrir
  • Salvar
  • Importar arquivo JFLAP
  • Exportar para formato JFLAP
  • Ver tabela de transição
  • Sair

Clique no opção Abrir para então navegar até a pasta models/json/ no repositório baixado

Selecione o arquivo eg01.json e o abra

Ao clicar no botão Converter para iniciar o processo de tradução para AFD equivalente, você verá a seguinte mensagem, caso tudo funcione bem:

No espaço à direita, você pode observar o resultado da conversão no formato JSON:

Para melhor visualização e compreensão da conversão, você pode visualizar a tabela de transições clicando na opção Ver tabela de transição no menu Arquivo