Algoritmo de Wilson: Guia completo, diferenças com EOQ e o teorema

Última atualização: 14 outubro 2025
  • O algoritmo de Wilson gera labirintos como árvores aleatórias uniformes usando caminhadas de exclusão de loop.
  • O Modelo de Wilson (EOQ) calcula o tamanho ideal do lote com demanda e preços estáveis, mas não leva em consideração descontos ou sazonalidade.
  • O teorema de Wilson caracteriza primos com (n−1)! ≡ −1 (mod n) e tem generalizações clássicas.

Algoritmo de Wilson e conceitos relacionados

Na internet, o termo "Wilson" é usado para muitas coisas diferentes, o que pode ser bastante confuso: existe o algoritmo de Wilson para gerar labirintos, o Modelo de Inventário de Wilson (ou EOQ) e o teorema de Wilson na teoria dos números. Neste artigo, esclarecemos tudo, começando pelo seu uso original em labirintos e distinguindo cuidadosamente os outros significados, pois não são a mesma coisa e não se aplicam ao mesmo campo.

Se você já viu uma demonstração ou aplicativo onde um labirinto "cresce" sozinho, provavelmente já se deparou com o algoritmo de Wilson. Você também pode ter ouvido falar do Modelo de Wilson para calcular a quantidade econômica de pedido ou até mesmo do teorema que caracteriza os números primos usando fatoriais. Aqui você encontrará uma explicação completa com exemplos, para que possa identificar cada conceito e usá-lo corretamente.

O que é o algoritmo de Wilson para labirintos?

O algoritmo de Wilson é um método de geração de labirintos baseado em caminhadas aleatórias sem laços. Sua principal vantagem é produzir uma árvore geradora aleatória uniforme em toda a grade: em outras palavras, cada labirinto possível aparece com a mesma probabilidade , sem viés em relação a direções ou padrões específicos.

A ideia principal é que caminhos são adicionados à rede existente, mas quando um caminho aleatório se cruza, o loop é "apagado" e a rota continua do ponto onde ficou livre. Esse detalhe impede que o processo favoreça caminhos longos redundantes ou crie ciclos, mantendo a estrutura como uma árvore que conecta todas as células. O resultado é um labirinto "justo": nenhum caminho ou curva tem vantagem estatística sobre outro.

Existem projetos e aplicativos criados pela comunidade que demonstram o algoritmo em ação de forma visual e divertida. Entre eles, alguns dos aplicativos de Cruz Godar se destacam, nos quais você pode escolher o tamanho da grade e executá-los para ver como o labirinto emerge passo a passo. Observar a execução ajuda a entender por que a eliminação de loops nivela as probabilidades em cada extensão do grafo.

Construir e resolver labirintos, embora pareçam jogos, estão intimamente ligados a problemas de busca e otimização. Projetá-los exige um equilíbrio entre clareza e intriga, evitando soluções triviais ou becos sem saída impossíveis; explorando um espaço finito com vastas combinações. Portanto, tanto no papel quanto em simulações digitais, eles servem como excelentes exercícios de lógica, probabilidade e paciência.

Como funciona (em termos práticos)

A seguir, uma descrição geral do algoritmo, sem código, mas com os mecanismos essenciais para entender seu comportamento. Lembre-se de que o objetivo é construir uma árvore (sem ciclos) que conecte todas as células, de forma que exista apenas um caminho simples entre quaisquer dois pontos.

  • Começa com uma grade vazia: uma célula é escolhida aleatoriamente e marcada como parte da árvore.
  • Outra célula é escolhida aleatoriamente, uma caminhada aleatória passo a passo é iniciada e, se o caminho se cruzar, os loops são imediatamente removidos (apagamento de loops).
  • Quando a caminhada atinge a árvore já gerada, todo o caminho refinado (sem loops) é “colado” à árvore.
  • Repete-se: escolhemos uma nova célula desconectada, caminhamos com a exclusão do loop e juntamos a árvore.
  • No final, todas as células estão conectadas e o labirinto é uma árvore de extensão aleatória uniforme, então não há vieses direcionais ou topológicos.
  Diferença entre energia elétrica e potência elétrica

Em comparação com outros métodos (como Aldous-Broder, Prim ou Kruskal adaptados a labirintos), o método de Wilson destaca-se pela uniformidade da amostragem da árvore geradora. Seu custo computacional é razoável em grades típicas e, sobretudo, garante que cada solução seja equiprovável , algo altamente valorizado em contextos acadêmicos e de simulação.

Outros significados: Modelo de Wilson ou EOQ (estoques)

Em logística, o modelo de Wilson (também chamado de EOQ, Quantidade Econômica de Pedido) não tem nada a ver com labirintos. É um método clássico para determinar a quantidade ideal de pedido para minimizar os custos totais de estoque. Foi popularizado em 1934 por R.H. Wilson, embora o conceito inicial tenha sido proposto por Ford Whitman Harris em 1913.

Seu objetivo é encontrar o tamanho do lote Q que equilibra o custo de fazer pedidos e o custo de manter o estoque. Com base na demanda anual (D), no custo por pedido (K) e no custo de armazenamento por unidade por período (G), obtém-se uma quantidade que, dentro do escopo de suas premissas, reduz o custo total do estoque.

A fórmula mais comum é expressa como Q = √(2·D·K/G). Este valor fornece o tamanho de cada lote; a partir daí, o número de pedidos anuais será D/Q, e com isso você pode calcular o ciclo de pedidos. Também é importante definir o ponto de reposição (levando em consideração o prazo de entrega) e o estoque de segurança para evitar rupturas de estoque, embora a fórmula básica não incorpore explicitamente a incerteza.

Aplicações típicas: É utilizado com matérias-primas ou qualquer tipo de mercadoria para a qual os custos de compra e armazenamento possam ser determinados com confiabilidade. Na prática, ao conhecer D, K e G com precisão suficiente, a empresa pode dimensionar seus lotes e programar suas aquisições com maior controle.

Suposições, vantagens e limitações do Modelo Wilson

As premissas são cruciais para a validade do resultado. O modelo EOQ pressupõe que a demanda seja constante e conhecida, que o preço unitário permaneça estável, que os custos de armazenamento sejam conhecidos e dependam do nível de estoque, que os prazos de entrega sejam constantes e, além disso, não considera descontos por volume.

  • Demanda estável e independente, sem sazonalidade ou picos repentinos.
  • Preço de compra fixo ou praticamente inalterado durante o período analisado.
  • Custos de armazenamento conhecidos por unidade e período.
  • Sem descontos por quantidade e reposição imediata ou constante.

Principais vantagens: É simples de implementar, amplamente utilizado e ajuda a minimizar os custos de pedidos e estoque, conforme suas condições. Os benefícios incluem a redução do excesso de estoque, a diminuição do risco de ruptura de estoque (quando combinado com um ponto de reposição e estoque de segurança) e maior clareza no planejamento de compras. Muitas organizações o valorizam porque fornece uma base numérica direta para determinar as quantidades de pedidos.

Desvantagens: Não funciona bem com demanda sazonal ou irregular, ignora descontos por volume e pressupõe reabastecimento imediato (ou fixo), o que é irrealista em muitas cadeias de suprimentos. Portanto, em ambientes como o do grupo Toyota, a fórmula do Lote Econômico de Compra (EOQ) foi substituída por sistemas mais robustos, como Kanban ou Just-in-Time, que lidam melhor com a variabilidade real e o fluxo contínuo.

Exemplos práticos do EOQ (Wilson)

Exemplo 1 (típico): Uma empresa com uma produção anual de 10.000 unidades adquire 1.000 kg de matéria-prima. Se cada pedido custa €200 e o custo total anual de armazenamento é de €2.000, aplicando a fórmula Q = √(2·D·K/G) com D=1.000, K=200 e G=2.000, obtém-se Q ≈ 14,14. Isso sugere lotes de 14 kg e aproximadamente 71 pedidos por ano. Trata-se de um exercício ilustrativo onde, com números modestos, podemos ver como o tamanho do lote equilibra os pedidos e o estoque.

  10 funções do departamento de marketing que impulsionarão seu negócio

Exemplo 2: A Sillas Grandes World SL distribui 6.000 cadeiras (D), cada pedido custa €300 (K) e o custo anual de armazenamento por unidade é de €5 (G). Aplicando a equação, Q ≈ 848,52, o que significa que a empresa faria aproximadamente 7,07 pedidos por ano. Com esse tamanho de lote, a empresa tende a um nível de estoque mais eficiente , reduzindo os custos de armazenamento sem aumentar significativamente os custos de preparação de pedidos.

Além da própria fórmula, é aconselhável calcular o ponto de reposição considerando o prazo de entrega e manter um estoque de segurança, pois o modelo puro não leva em conta a incerteza. Ele também não estima o impacto dos descontos por volume, que às vezes podem compensar os custos de estoque se lotes maiores forem utilizados.

Não deve ser confundido com o teorema de Wilson (teoria dos números)

O teorema de Wilson pertence à aritmética modular e essencialmente afirma que um inteiro n > 1 é primo se e somente se (n − 1)! ≡ −1 (mod n). A implicação "se n é primo, então (n − 1)! ≡ −1 (mod n)" é geralmente chamada estritamente de "teorema de Wilson", e a implicação inversa também é verdadeira. Historicamente, Edward Waring atribuiu o resultado a John Wilson (1770), embora a primeira demonstração conhecida tenha sido dada por Lagrange (1771), e a formulação remonte a Alhazen no século XI.

Exemplo concreto: para p = 11, agrupando cada elemento com seu inverso multiplicativo no conjunto {1, 2, …, p − 1}, o produto total é ≡ −1 (mod p). Todos os fatores se cancelam aos pares, pois g·g^{-1} ≡ 1, exceto para 1 e p − 1, e portanto 10! ≡ −1 (mod 11) . Essa abordagem utiliza o fato de que, com p primo, (Z/pZ)^× é um grupo multiplicativo e cada elemento (exceto 1 e p − 1) possui um inverso distinto.

Existem várias demonstrações. Uma técnica polinomial considera g(x) = (x − 1)(x − 2)···(x − (p − 1)) e f(x) = g(x) − (x^{p−1} − 1). Módulo p, f(x) teria no máximo p − 2 raízes se não fosse o polinômio nulo, mas todos os valores 1, 2, …, p − 1 tornam f(x) zero pelo Pequeno Teorema de Fermat. Portanto, f(x) é identicamente 0 módulo p; o termo constante leva a (p − 1)! ≡ −1 (mod p).

Não é usado como um teste prático de primalidade porque calcular (n − 1)! mod n para n grande é custoso, e existem testes mais rápidos (como Miller-Rabin ou testes determinísticos para postos específicos). Mesmo assim, pode ser usado para deduzir propriedades úteis: por exemplo, se p = 2n + 1 é primo, obtemos ∏_{j=1}^{n} j^2 ≡ (−1)^{n+1} (mod p). E, como um corolário parcial, −1 é um resíduo quadrático módulo p se p ≡ 1 (mod 4), já que pode ser escrito como o quadrado do produto 1·2···2k quando p = 4k + 1, o que se mostra quando −1 é elevado ao quadrado em Z/pZ.

Existe também um "inverso" prático: para qualquer número composto n > 5, n divide (n − 1)!. O caso n = 4 é a exceção clássica (3! não é múltiplo de 4). Uma maneira de ver isso é contar as potências de um primo q que divide n: em (n − 1)! existem múltiplos suficientes de q para cobrir a potência que aparece em n, exceto pela exceção mencionada, o que leva ao resultado, exceto para n = 4.

  Marketing Emocional: 7 Estratégias Poderosas para se Conectar com seu Público

Gauss generalizou o teorema: o produto de todas as unidades módulo n, ∏_{1≤a<n, (a,n)=1} a, é ≡ −1 (mod n) se n ∈ {4, p^k, 2p^k} com p primo ímpar, e ≡ 1 (mod n) em todos os outros casos. Da perspectiva de grupos abelianos finitos, o produto de todos os seus elementos é a identidade, a menos que exista exatamente um elemento de ordem 2, caso em que o produto é esse elemento de ordem 2.

Tabela ilustrativa de (n − 1)! mod n para n = 2…30

A tabela a seguir mostra valores específicos para n entre 2 e 30. Para números primos, o resto da divisão de (n − 1)! por n é igual a n − 1 (que é ≡ −1 mod n). Para números compostos, o resto é frequentemente 0. −1 mod n também é incluído para comparação. Esses dados ilustram claramente como o teorema de Wilson se comporta em casos pequenos e ajudam a consolidar a intuição.

n> 1 (n − 1)! (n − 1)! mod n −1 mod n
2 1 1 1
3 2 2 2
4 6 2 3
5 24 4 4
6 120 0 5
7 720 6 6
8 5040 0 7
9 40320 0 8
10 362880 0 9
11 3628800 10 10
12 39916800 0 11
13 479001600 12 12
14 6227020800 0 13
15 87178291200 0 14
16 1307674368000 0 15
17 20922789888000 16 16
18 355687428096000 0 17
19 6402373705728000 18 18
20 121645100408832000 0 19
21 2432902008176640000 0 20
22 51090942171709440000 0 21
23 1124000727777607680000 22 22
24 25852016738884976640000 0 23
25 620448401733239439360000 0 24
26 15511210043330985984000000 0 25
27 403291461126605635584000000 0 26
28 10888869450418352160768000000 0 27
29 304888344611713860501504000000 28 28
30 8841761993739701954543616000000 0 29

Aplicações, limites e recomendações

Se você busca gerar labirintos imparciais, utilize o algoritmo de Wilson: sua base em caminhadas aleatórias com eliminação de laços garante árvores uniformes. Para gestão de estoque, o modelo de Wilson é útil quando a demanda, os preços e os custos são estáveis ​​e precisamente conhecidos; em ambientes voláteis, metodologias como Kanban, Just-in-Time ou softwares avançados de planejamento podem ser mais adequadas. E em matemática, o teorema de Wilson é uma joia teórica com derivações interessantes (como resíduos quadráticos), mas não é prático como teste de primalidade para números grandes.

Não existe uma fórmula única para calcular os custos de pedidos e armazenamento: cada empresa deve detalhar horas, processos, transporte, recebimento, pessoal, aluguel, energia, seguro e custos financeiros. Muitos profissionais estimam as horas por operação e aplicam uma taxa horária para monetização. Essa personalização é fundamental para garantir que a quantidade de pedido (Q) calculada seja útil e, juntamente com um bom ponto de reposição e estoque de segurança, ajude a evitar rupturas de estoque ou excesso de inventário.

Vale lembrar que o termo "algoritmo de Wilson" em buscas geralmente se refere ao gerador de labirintos, enquanto "modelo de Wilson" ou "EOQ" se referem a estoques, e "teorema de Wilson" à teoria dos números. Distinguir esses termos desde o início evita confusão e permite que você aproveite melhor cada abordagem: labirintos não enviesados, lotes ótimos sob suposições realistas e uma caracterização elegante de números primos que, embora não seja uma prova prática de primalidade, continua sendo uma peça valiosa do quebra-cabeça matemático.

Algoritmo de Kruskal
Artigo relacionado:
Algoritmo de Kruskal e sua aplicação em grafos