Atividade I

Estrutura de Dados - Algoritmo

Entrega de Atividade via Moodle
Autor

Professor: Yuri Sampaio Maluf

Data de Publicação

16 de outubro de 2024

Atividade I

Construa um algoritmo, escrito em PHP, tal que resolva o seguinte problema:

Em uma base são postos 3 pinos, A, B e C. Inicialmente, no pino A encontram-se empilhados um total de n discos organizados em ordem crescente de diâmetro de cima para baixo. A Figura 1 ilustra a disposição dos discos e dos três pinos. A partir desta organização, o problema é encontrar quais são as movimentações necessárias para transferir todos os discos do pino A para o pino C.

Figura 1: Disposição de 5 discos e 3 pinos.

Para transferir os n discos, as movimentações devem respeitar as seguintes regras:

  1. Não é permitido movimentar mais de 1 disco por vez

  2. Um disco maior nunca pode ficar em cima de outro menor

  3. Não há limites para o número de movimentações de discos entre os pinos.

O algoritmo a ser construído deverá ter como entrada a quantidade de discos empilhados e ter como saída uma lista com toda a sequência de movimentos (ex. 27. A \rightarrow B, 28. C \rightarrow B) para resolver o problema. Deve constar também a exibição de cada elemento desta lista na tela no computador incluindo seu respectivo índice e começando a partir do número 1.

Dicas

Antes de começar a planejar quais comandos utilizar, faça um esboço do mecanismo de solução do problema encontrado por você. Esse esboço pode ser em palavras, em diagrama ou mesmo em desenho. O importante é que sua ideia de estratégia para resolver o problema fique claro. Na sequência, escreva as rotinas e procedimentos que transcreva a lógica desenvolvida no passo anterior. Por fim, passe para a parte de implementação do seu algoritmo.

A pilha de discos de tamanho n é uma réplica de uma pilha de tamanho n+m, em que n,\,m\in\mathbb{N}. Desta forma, não há diferença na estrutura entre as pilhas, apenas no valor de um atributo, mas não em suas naturezas.

Figura 2: Pilhas de tamanho 7, 3 e 2 discos

Logo, o algoritmo que resolve o problema para uma pilha de n discos deve ter a mesma mecânica para uma pilha de tamanho n+m. A diferença entre ambas deve ser apenas o número de passos executados para equacionar cada uma das pilhas.

Tente montar a estrutura lógica de um algoritmo onde o problema se restringe a apenas 2 discos. Ao terminar de montar, perceba que as configurações exibida na Figura 3 são indiferentes para solucionar a transferência de 2 discos.

Configuração com A:2, B:0, C:0

Configuração com A:0, B:4, C:0

Configuração com A:1, B:1, C:2
Figura 3: Três diferentes configurações para um mesmo problema.