U.Minho M.P.-I - 2000/01 - Trabalho Prático Nr. 1
[ DI/UM ]

Preâmbulo

Este trabalho deve ser realizado por grupos com um máximo de três alunos. O trabalho deve ser entregue até ao dia 31 de Outubro na Recepção do Departamento de Informática (ext. 4430) e nele deve constar a listagem do código desenvolvido assim como um pequeno relatório.

Introdução

A máquina de Turing é um formalismo matemático introduzido por Alan Turing (1936) para captar a noção que hoje temos de algoritmo ou procedimento computável .  Alan Turing (1912-1954)

As máquinas de Turing são de uma natureza surpreendentemente concreta. Quase conseguimos imaginar dispositivos físicos que reagem conforme o comportamento que lhes é especificado - e.g. um leitor de 'cassettes', um 'robot' - o que é extraordinário se nos recordarmos que estas são anteriores aos primeiros computadores. O seu impacto na teoria da computação é enorme, nomeadamente na teoria da computabilidade e da complexidade (o que, aliás, justificará o seu estudo adiante na licenciatura).

Objectivo do Trabalho

O objectivo do trabalho é o de realizar um animador de máquinas de Turing em HASKELL .

Descrição

Uma máquina de Turing é constituída por:

Vejamos agora como funciona:

Pesquisa de informação

Este trabalho envolve uma certa pesquisa de informação adicional no WWW. Para um excelente simulador de máquinas de Turing aconselha-se a consulta de www.nmia.com/cgi-bin/cgiwrap/%7Esoki/turing . Aí é possível ver exemplos da execução de algumas máquinas de Turing assim como experimentar ``novos programas''. Outras referências à (e descrições da) máquina de Turing, incluindo exemplos de execução, são as seguintes:

A pesquisa no WWW permitirá identificar algumas centenas de outros sites potencialmente interessantes...

A equipa de avaliação espera que sejam codificados, no simulador em HASKELL a desenvolver no trabalho, alguns dos exemplos apresentados nas páginas acima referidas (e.g. a soma unária).

Sugestões para valorização

Os seguintes aspectos serão também tidos em conta na avaliação deste trabalho:

1.
Recurso a mónadas em HASKELL .
2.
Interacção com o utilizador (i.e. utilização da mónada IO).
3.
Definição de uma sintaxe simples (à escolha) para permitir carregar directamente ficheiros com a descrição do programa (i.e. acções para cada um dos estados internos).
4.
Teste do simulador com um programa que incremente um número (em notação binária) de uma unidade.
5.
Demonstração de outros exemplos de utilização do simulador.


Voltar à página principal de MP-I .
Outras disciplinas leccionadas pelo DIUM

10/11/2000
Jose Nuno Oliveira