Mova uma torre respeitando uma regra simples e um custo inevitável.
LR / 04Hanoi
pergunta de entrada
Quantos movimentos são necessários para transferir todos os discos?
Para mover n discos, mova n−1 para o auxiliar, mova o maior para o destino e repita o processo.
instrumentação / estado atual
passo01 / 04Separar o maior disco
focon = 3Antes de mover o disco 3, os menores precisam sair do caminho.
complexidadeO(2ⁿ)caso médio
subprobleman − 1observado agora
/ visualização em execução
Separar o maior disco
frame 01
origem / auxiliar / destino
↘
/ chamada abertaO problema foi reduzido a uma pergunta menor.
Passo 1 · Antes de mover o disco 3, os menores precisam sair do caminho.
Passo 1: Antes de mover o disco 3, os menores precisam sair do caminho.
Como ler esta réguaEla não mede o tempo do seu aparelho: compara como o trabalho tende a crescer quando n, a quantidade de elementos na estrutura, aumenta.
operações
O(2ⁿ) · Ramificação exponencial
Cada chamada recursiva pode gerar novas chamadas. Em Fibonacci ingênuo e Towers of Hanoi, o total de trabalho cresce muito mais rápido que n.
Adicionar uma unidade a n pode quase dobrar o trabalho; memoização em Fibonacci evita recomputações e reduz o tempo para O(n).
comparação / duas técnicas
Compare o crescimento lado a lado
Escolha duas técnicas diferentes. As curvas usam a mesma escala visual para explicar como o custo tende a aumentar.
Comparações prontasaplique um par didático
A · Stacks & Queues (O(1))B · Towers of Hanoi (O(2ⁿ))
Use este par para contrastar operações locais de extremidade com uma decomposição recursiva cujo número de movimentos cresce exponencialmente. Stacks & Queues tende a crescer mais devagar do que Towers of Hanoi quando aumentam quantidade de itens (n). Isso descreve tendência assintótica, não mede o tempo do seu aparelho.
/ raciocínio sincronizado
A mesma ideia, três leituras.
01hanoi(n, origem, destino, auxiliar)
02se n == 0: pare
03hanoi(n - 1, origem, auxiliar, destino)
04mova o disco n para destino
05hanoi(n - 1, auxiliar, destino, origem)
O destaque acompanha o passo atual; leia a linha destacada antes de avançar.
/ leitura técnica · necessidade e prova
O disco maior só se move quando todo o resto saiu do caminho.
Torres de Hanoi parece uma sequência de pequenos movimentos, mas sua solução clássica organiza uma prova completa: as regras preservam um invariante, a decomposição alcança o objetivo e a própria necessidade de liberar o maior disco determina o mínimo de passos.
n − 1 → auxiliar→disco n → destino→n − 1 → destino
CONTRATO / TRÊS PINOS
Legal não é, por si só, mínimo.
Um movimento retira apenas o topo de um pino e o deposita em um pino vazio ou sobre um disco maior. A meta exige a pilha inteira, ordenada, no destino. Antes do disco n se mover, os n − 1 menores precisam estar juntos no único pino auxiliar; depois, eles precisam voltar sobre ele. Essa necessidade transforma uma sequência válida em uma sequência obrigatória.
01
O invariante é a regra de segurança.
Cada pino se comporta como uma pilha: somente o topo fica acessível e os tamanhos descem da base ao topo. Se cada chamada começa com pilhas ordenadas, move discos apenas em destinos permitidos e termina, ela preserva a legalidade de toda a configuração.
02
Indução prova que a decomposição chega lá.
Para n = 0, não há movimento. Assumindo que n − 1 discos podem ser transferidos legalmente, o maior fica livre, move uma vez e a mesma hipótese leva a pilha menor para cima dele. A prova cobre corretude, não só um exemplo.
03
O mínimo vem da necessidade.
Qualquer solução precisa liberar o maior disco, movê-lo uma vez e restaurar os menores sobre ele. Portanto, M(n) = 2M(n − 1) + 1, com M(0) = 0; assim, M(n) = 2ⁿ − 1 é simultaneamente o custo da solução e um limite inferior.
MEDIDA CRÍTICA / MOVIMENTOS
2ⁿ − 1mínimo clássico
A pilha cresce linearmente; a tarefa, não.
3 discos7
Uma sequência curta o bastante para observar a decomposição inteira.
10 discos1.023
A recursão ainda é simples de descrever, mas a animação já requer muitos passos.
64 discos2⁶⁴ − 1
Mais de 18 quintilhões de movimentos; trocar a implementação não remove esse limite de saída.
001010011100101O bit menos significativo do contador indica qual disco se move em uma geração iterativa.
ITERATIVO / GRAY CODE
Remover chamadas não remove movimentos.
Uma pilha explícita pode simular a recursão, e uma regra baseada no bit menos significativo do passo identifica o disco a mover. Pela leitura de código de Gray, passos consecutivos mudam uma coordenada. Essas formulações evitam a pilha de chamadas, mas continuam emitindo 2ⁿ − 1 movimentos: quando a sequência inteira é necessária, esse custo é inevitável.
EXTENSÕES / NÃO MISTURAR OS TEOREMAS
Mais pinos mudam a pergunta.
Com quatro pinos, uma estratégia pode estacionar uma parte dos discos, resolver o restante e recuperar a primeira parte. A recorrência Frame–Stewart escolhe um ponto de divisão, mas a argumentação elementar que prova a fórmula 2ⁿ − 1 vale especificamente para os três pinos clássicos.
Também é útil olhar o puzzle como um grafo: cada configuração legal é um vértice e cada movimento legal é uma aresta. A solução mínima é um caminho entre os estados inicial e final; essa leitura conecta o exercício a busca em grafos sem confundir uma regra local com progresso global.
/ escolher a representação pela finalidade
O problema é um laboratório de provas e de estado.
Ensinar recursão
Use a formulação clássica para tornar explícitos caso-base, redução do problema, retorno e indução. A visualização é mais útil quando cada uma das três fases é nomeada.
Gerar passos
Use a versão recursiva ou um gerador iterativo. Para uma animação longa, emitir movimentos sob demanda evita armazenar toda a sequência, embora não reduza o total produzido.
Estudar grafos
Modele configurações legais como estados e movimentos como arestas. Isso ajuda a distinguir um algoritmo que encontra um caminho de uma prova que mostra que esse caminho é mínimo.
/ conexões de estudo
Continue pela mesma ideia.
Estas bancadas usam conceitos próximos e ajudam a comparar decisões, estruturas e custos.