7.9. Exercício de Implementação O primeiro passo para irmos de encontro a uma "solução" para problemas complexos, é você ganhar um "feeling" para estes problemas.
Para poder ter uma noção de o que significa resolver um problema complexo, nós vamos implementar o problema do caixeiro viajante, que todos vimos em Teoria dos Grafos, e observar o seu comportamento no tempo:
Para a solução do Problema do Caixeiro Viajante existem
muitos algoritmos, dentre eles o "Método Algébrico de
Christofides", o Algoritmo de Rubin e o Algoritmo de Roberts e Flores.
O mais interessante é o de Roberts e Flores pois pode ser implementado
de forma recursiva bastante simples em uma linguagem como Prolog. Podemos
também implementá-lo em "C" ou Pascal sem muitos
problemas.
Exercício 2.1 (prazo: 2 semanas):
Exercício 2.2 (prazo: 2 semanas):
Torres de Hanoi
Este é um jogo milenar consistindo de três pinos e de um conjunto variável de discos, todos de tamanhos diferentes. Inicialmente os discos estão empilhados em um extremo, o maior embaixo, o menor em cima. O objetivo é colocar todos os discos no outro lado do tabuleiro, na mesma ordem, seguindo as seguintes regras:
O único prerequisito é que nunca um disco maior poderá estar sobre um menor.
Resolva este exercício da mesma forma que o anterios, implementando-o (pesquise na literatura - o mais simples é usar Prolog), rodando-o para 2,3,4,5,10,15,20,30 e 50 discos e plotando o sresultados em uma curva. Identifique a complexidade do problema justificando.