Torre De Hanoi Regras - Regras da Torre de Hanói | PDF
Regras da Torre de Hanói | PDF

Como funciona a Torre de Hanói na prática

A torre de Hanói é um quebra-cabeça matemático criado pelo francês Édouard Lucas em 1883. O enredo com o templo e os monges que precisam mover 64 discos é mitologia — Lucas inventou isso para dar charme ao problema. O que importa são as regras, que parecem simples até você tentar resolver com discos demais e perceber que a coisa escala rápido demais para ser intuitiva. Vou explicar direto como funciona, sem rodeio. O jogo usa três hastes e um conjunto de discos de tamanhos diferentes. Todos começam empilhados em uma das hastes, do maior para o menor, formando uma pirâmide. As regras da torre de hanoi são poucas e rígidas.

torre de hanoi regras básicas

A primeira regra é que você só pode mover um disco de cada vez. A segunda é que todo movimento consiste em pegar o disco do topo de uma haste e colocá-lo no topo de outra haste. A terceira — e essa é a que quebra a cabeça das pessoas — é que você nunca pode colocar um disco maior sobre um disco menor. Se na haste de destino o disco do topo for menor que o que você está tentando mover, aquele movimento é ilegal. Pronto. Só isso. Parece fácil. É fácil de entender. Não é fácil de executar em grande escala. Com três discos, você resolve em sete movimentos. Com quatro, são 15. A sequência segue a fórmula 2^n - 1, onde n é o número de discos. Isso significa que 10 discos precisam de 1.023 movimentos, 20 discos precisam de 1.048.575 movimentos, e 64 discos — o cenário original do mito dos monges — precisariam de aproximadamente 18 quintilhões de movimentos. A isso tudo somado, se um movimento fosse feito por segundo, levaria cerca de 585 bilhões de anos para terminar. O universo tem 13,8 bilhões de anos. A analogia dos monges não passa de ficção bem intencionada.

O que as pessoas geralmente não entendem na primeira vez é que a estratégia ótima é recursiva por natureza. Para mover n discos da haste de origem para a haste de destino usando a haste auxiliar, você precisa primeiro mover os n-1 discos de cima para a haste auxiliar, depois mover o disco maior para a haste de destino, e então mover os n-1 discos da haste auxiliar para a haste de destino. Repita o processo para cada subconjunto. Essa é a solução ótima e é a única que atinge o mínimo de 2^n - 1 movimentos. Eu já perdi uma tarde tentando resolver um puzzle de 12 discos sem seguir a abordagem recursiva. Gastei uns 40 minutos fazendo movimentos que pareciam lógicos na hora mas que na verdade me afastavam da solução. Só entendi o padrão quando parei e tracei no papel o que acontecia com 3 discos, depois 4, e percebi a repetição estrutural. A recursão não é um detalhe teórico — ela é o jogo inteiro disfarçado.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Aqui vai algo que quase ninguém menciona: a solução alternada. Se o número de discos for par, o primeiro movimento obrigatório é sempre colocar o disco menor na haste de destino. Se for ímpar, o primeiro movimento do disco menor vai para a haste auxiliar. Esse detalhe parece inútil no papel mas faz diferença real quando você está resolvendo manualmente e sente que está girando em círculos. Seguir a direção correta desde o início elimina metade dos movimentos sem sentido que todo iniciante comete. Outro ponto que passa despercebido: não existe ambiguidade na solução ótima. Para qualquer configuração válida de torre de Hanói, o próximo movimento correto é sempre determinado. Você não está adivinhando. Você está seguindo um caminho único e previsível. Se você chega a um estado do tabuleiro que já viu antes, cometeu um erro anteriormente. Isso é útil para debugar quando você está resolvendo e sente que something está errado.

O problema real começa quando você tenta implementar isso em código ou automatizar. A solução recursiva é elegante mas ingenuamente eficiente — ela consome memória proporcional ao número de discos porque cada chamada recursiva empilha seu próprio estado. Para 20 discos, a profundidade da pilha é de 19 chamadas. Para 64 discos, você estoura a pilha em praticamente qualquer linguagem sem ajuste. A solução iterativa existe e é equivalente, mas exige que você simule a pilha manualmente usando uma estrutura de dados explícita. Em termos práticos, isso significa transformar uma função bonita de dez linhas em um loop com uma pilha que você gerencia diretamente. Se o seu objetivo é apenas verificar se uma configuração é válida — por exemplo, num problema de competitive programming onde recebem um estado do tabuleiro e perguntam se ele respeita as regras — você não precisa simular o jogo inteiro. Baste verificar duas coisas: que em cada haste os discos estão ordenados do maior na base para o menor no topo, e que não há discos duplicados entre as hastes. Se ambas as condições forem verdadeiras, o estado é legal. Leva tempo linear no número de discos, contra o tempo exponencial de simular o jogo até aquele estado.

Uma limitação séria da torre de Hanói é que ela só funciona bem como exercício pedagógico ou problema teórico. Ninguém usa esse modelo em logística real porque o crescimento exponencial torna qualquer aplicação prática inviável acima de dois ou três discos. Se você tem um problema de escalonamento que parece com a torre de Hanói, provavelmente é um sintoma de que a formulação está errada. Problemas reais de movimentação com restrições de ordem tendem a ter estruturas muito mais perdoáveis que a torre clássica. Existem variantes interessantes. A torre de Hanói com quatro hastes, conhecida como Frame-Stewart, reduz drasticamente o número de movimentos necessários. Para 4 discos, a versão clássica precisa de 15 movimentos; com quatro hastes, cai para 9. A conjectura de Frame-Stewart diz qual é o número ótimo para qualquer configuração, mas ela nunca foi provada rigorosamente para todos os casos. Ainda assim, na prática, a estratégia de dividir os discos em dois grupos, mover o menor grupo usando todas as hastes, mover o resto com uma haste a menos, e depois reposicionar o primeiro grupo, funciona extremamente bem.

Se você quer praticar, existem implementações gratuitas em qualquer linguagem. Um script Python de trinta linhas resolve o problema recursivamente e mostra cada movimento. Uma implementação JavaScript com interface visual ajuda a entender o padrão sem precisar manipular peças físicas. A versão física de madeira ou plástico vale o investimento se você quer treinar o reconhecimento intuitivo dos padrões — depois de resolver umas cinquenta vezes com as mãos, o movimento passa a ser quase automático e você começa a enxergar a estrutura sem calcular. O que eu recomendo de verdade é começar com três discos e ir aumentando um de cada vez. Anote o número de movimentos que cada resolução leva. Quando você chegar a seis ou sete discos, a recursão vai começar a fazer sentido não como fórmula mas como experiência. A torre de Hanói não é difícil porque as regras são complexas. Ela é difícil porque o cérebro humano não é naturalmente boas em recursão de profundidade elevada. Once you internalize the pattern, it's one of those problems que fica com você por anos.