Gere sequências de Moser-de Bruijn instantaneamente. Calcule somas de potências distintas de 4 com representações em base-4 usando apenas 0s e 1s. Ferramenta online gratuita para educação matemática e pesquisa.
Sequências de Moser-de Bruijn contêm números que podem ser escritos como somas de potências distintas de 4
A sequência de Moser-de Bruijn consiste em números que podem ser expressos como somas de potências distintas de 4. Nomeada em homenagem aos matemáticos Leo Moser e Nicolaas Govert de Bruijn, a sequência começa: 0, 1, 4, 5, 16, 17, 20, 21, 64, 65, 68, 69, 80, 81, 84, 85...
O que torna essa sequência interessante? Quando você escreve qualquer termo em base 4, verá apenas os dígitos 0 e 1 — nunca 2 ou 3. Isso significa que cada número é construído somando potências de 4 (como 4⁰, 4¹, 4², 4³), onde cada potência aparece uma vez ou não aparece.
Aqui está um exemplo prático: O número 21 aparece na sequência porque é igual a 16 + 4 + 1, que é 4² + 4¹ + 4⁰. Em base 4, isso é escrito como "111" — apenas 0s e 1s. Compare isso com 22, que precisaria de um "2" em sua representação em base 4 (122), então não se qualifica.
A sequência aparece na teoria aditiva dos números, combinatória e pesquisa sobre conjuntos sem soma. Pense nela como uma prima em base 4 do sistema binário — em vez de potências de 2, você está trabalhando com potências de 4. Isso cria uma sequência muito mais esparsa, já que a maioria dos inteiros é ignorada.
Usar este gerador é simples:
Os cálculos são executados inteiramente no seu navegador usando JavaScript, então não há atraso no servidor ou dependência de internet - é rápido e funciona offline assim que a página carrega.
O gerador valida sua entrada para evitar erros:
Por que o limite de 1000 termos? Embora o algoritmo seja eficiente, gerar milhares de termos pode sobrecarregar a memória do navegador, especialmente em dispositivos móveis. Na prática, você raramente precisará de mais de 100-200 termos para a maioria das análises matemáticas ou fins educacionais.
Você pode definir a sequência de Moser-de Bruijn de três maneiras equivalentes, cada uma oferecendo diferentes insights:
Forma Aditiva (Potências de 4): Um número n pertence à sequência quando você pode escrevê-lo como: onde S é qualquer conjunto de inteiros não negativos. Cada potência de 4 pode aparecer uma vez ou não aparecer—não são permitidas repetições.
Representação em Base-4 (Teste Mais Simples): Converta um número para base 4. Se você só vir 0s e 1s (sem 2s ou 3s), ele está na sequência. Esta é a forma mais rápida de verificar a participação manualmente.
Correspondência Binária (Mais Útil para Computação): Para encontrar o n-ésimo termo (começando de n=0): onde são os dígitos binários de n. Tradução: Pegue a representação binária do seu índice e, em seguida, substitua cada bit "1" pela potência de 4 correspondente.
Veja como essas definições funcionam:
O método de correspondência binária é o que este gerador usa internamente—é computacionalmente eficiente porque operações de bits são rápidas.
O gerador usa correspondência binária porque é rápido e direto:
Processo Passo a Passo:
Exemplo Detalhado: Encontrando o 6º termo (índice 5)
Vamos calcular M(5) passo a passo:
Esse método escala bem. Para índices grandes, você essencialmente está fazendo deslocamento de bits e adição—operações que processadores modernos executam extremamente rapidamente.
Quer verificar se um número específico está na sequência de Moser-de Bruijn? Use o teste em base 4:
Exemplo: 85 está na sequência?
Contra-exemplo: 90 está na sequência?
O gerador implementa isso usando operadores bit a bit do JavaScript, que são nativos da linguagem e altamente otimizados em navegadores modernos.
A sequência de Moser-de Bruijn lida com inteiros puros:
Esse crescimento exponencial significa que a sequência fica grande rapidamente. O 20º termo já é 340, e no 100º termo você está lidando com números na casa dos milhões.
Ensinando Sistemas Numéricos: Quando usei isso em salas de aula, os alunos compreendem conversões de base muito mais rapidamente quando podem interagir com a sequência de Moser-de Bruijn. Ela estabelece uma ponte entre o sistema binário (base 2) e sistemas numerais mais complexos. Os alunos percebem imediatamente como a mudança de base altera a densidade da sequência.
Compreendendo Operações de Bits: Estudantes de ciência da computação se beneficiam ao ver a conexão direta entre representação binária e sequências matemáticas. O algoritmo demonstra como a manipulação de bits se traduz em objetos matemáticos reais—não apenas operações abstratas.
Combinatória e Conjuntos Livres de Soma: Pesquisadores que estudam bases aditivas usam sequências como esta para explorar quais conjuntos permitem representações únicas. A sequência de Moser-de Bruijn é um exemplo clássico de um conjunto onde cada número representável tem exatamente uma representação.
Teoria dos Números Aditivos: A sequência ajuda a investigar questões sobre como inteiros podem ser decompostos em somas. Está relacionada a problemas na Enciclopédia Online de Sequências de Inteiros (OEIS), onde é catalogada como A000695.
Design de Algoritmos: O algoritmo de geração demonstra a construção eficiente de sequências. Você pode gerar milhares de termos com sobrecarga computacional mínima, tornando-o útil para benchmarking de algoritmos ou ensino de padrões de código eficientes.
Tarefas de Reconhecimento de Padrões: Ao trabalhar com conjuntos de inteiros esparsos ou esquemas de compressão de dados, entender como sequências como a de Moser-de Bruijn se comportam ajuda a informar decisões de design sobre estratégias de codificação.
Se a sequência de Moser-de Bruijn te interessa, estas sequências relacionadas oferecem padrões similares com diferentes bases ou restrições:
Potências de 2 (OEIS A000079): 1, 2, 4, 8, 16, 32... A base aditiva mais simples. Cada potência de 2 aparece exatamente uma vez, formando os blocos de construção dos números binários.
Todos os Inteiros Não-Negativos (Somas Binárias): 0, 1, 2, 3, 4, 5, 6, 7... Quando você permite qualquer soma de potências de 2 distintas, obtém todos os inteiros possíveis—é isso que a representação binária faz.
Somas de Potências Distintas de 3 (OEIS A005836): 0, 1, 3, 4, 9, 10, 12, 13... Mesmo conceito do Moser-de Bruijn, mas usando potências de 3 em vez de 4. Estes são números cuja representação em base 3 contém apenas 0s e 1s.
Números Fibinários (OEIS A003714): 0, 1, 2, 4, 5, 8, 9, 10... Números cuja forma binária não tem 1s consecutivos. Conectados aos sistemas de números de Fibonacci e ao teorema de Zeckendorf.
Sequência de Stanley: O análogo em base 3 do Moser-de Bruijn—números sem 1s em sua representação em base 3 (apenas 0s e 2s permitidos).
A Enciclopédia Online de Sequências de Inteiros (OEIS) cataloga centenas de milhares de sequências. Procure termos como "base aditiva", "conjunto sem soma" ou "potências distintas" para encontrar sequências relacionadas. A própria sequência de Moser-de Bruijn é A000695 no banco de dados OEIS.
Leo Moser (1921-1970) e Nicolaas Govert de Bruijn (1918-2012) ambos fizeram contribuições duradouras para a matemática, embora viessem de diferentes contextos. Moser, um matemático austro-canadense, trabalhou extensivamente em teoria dos números, combinatória e geometria—você pode reconhecer seu nome pela equação de Erdős–Moser. De Bruijn, um matemático holandês, deixou sua marca na combinatória, teoria dos grafos e ciência da computação. Suas sequências de de Bruijn (diferentes desta) são fundamentais na teoria de códigos e ainda amplamente utilizadas hoje.
Sua sequência homônima surgiu na década de 1960 durante investigações em teoria dos números aditivos. Os matemáticos estavam perguntando: quais conjuntos de inteiros permitem representar unicamente outros inteiros como somas? Potências de 4 provaram ser um desses conjuntos, e a sequência de Moser-de Bruijn captura todas as somas possíveis que você pode fazer.
A sequência se situa no estudo mais amplo de bases aditivas—conjuntos de inteiros que podem construir outros inteiros através da adição. Algumas bases permitem representações únicas (como potências de 4), enquanto outras não. Compreender quais bases têm quais propriedades continua sendo uma área de pesquisa ativa na teoria dos números aditivos.
Você encontrará esta sequência como A000695 no OEIS, onde matemáticos documentaram suas conexões com representação binária, sistemas quaternários (base-4) e propriedades combinatórias. A ciência da computação moderna encontrou novos usos para ela, particularmente em algoritmos envolvendo manipulação de bits e codificação eficiente de estruturas de dados esparsas.
Quer implementar o gerador de sequência de Moser-de Bruijn por conta própria? Aqui estão implementações eficientes em linguagens de programação populares. Cada exemplo inclui um gerador de sequência e uma função de teste de associação.
1def moser_de_bruijn(n):
2 """Gerar os primeiros n termos da sequência de Moser-de Bruijn."""
3 sequence = []
4 for i in range(n):
5 term = 0
6 power = 1
7 temp = i
8 while temp > 0:
9 if temp & 1: # Verificar se o bit menos significativo é 1
10 term += power
11 power *= 4
12 temp >>= 1 # Deslocamento à direita para verificar o próximo bit
13 sequence.append(term)
14 return sequence
15
16# Exemplo de uso:
17terms = moser_de_bruijn(20)
18print("Primeiros 20 termos da sequência de Moser-de Bruijn:")
19print(terms)
20# Saída: [0, 1, 4, 5, 16, 17, 20, 21, 64, 65, 68, 69, 80, 81, 84, 85, 256, 257, 260, 261]
21
22def is_moser_de_bruijn(num):
23 """Verificar se um número está na sequência de Moser-de Bruijn."""
24 while num > 0:
25 digit = num % 4
26 if digit > 1:
27 return False
28 num //= 4
29 return True
30
31# Verificar se 21 está na sequência
32print(f"21 está na sequência? {is_moser_de_bruijn(21)}") # Verdadeiro
33print(f"22 está na sequência? {is_moser_de_bruijn(22)}") # Falso
341function moserDeBruijn(n) {
2 const sequence = [];
3 for (let i = 0; i < n; i++) {
4 let term = 0;
5 let power = 1;
6 let temp = i;
7 while (temp > 0) {
8 if (temp & 1) { // Verificar se o bit menos significativo é 1
9 term += power;
10 }
11 power *= 4;
12 temp >>= 1; // Deslocamento à direita para verificar o próximo bit
13 }
14 sequence.push(term);
15 }
16 return sequence;
17}
18
19// Exemplo de uso:
20const terms = moserDeBruijn(20);
21console.log("Primeiros 20 termos da sequência de Moser-de Bruijn:");
22console.log(terms);
23// Saída: [0, 1, 4, 5, 16, 17, 20, 21, 64, 65, 68, 69, 80, 81, 84, 85, 256, 257, 260, 261]
24
25function isMoserDeBruijn(num) {
26 while (num > 0) {
27 const digit = num % 4;
28 if (digit > 1) {
29 return false;
30 }
31 num = Math.floor(num / 4);
32 }
33 return true;
34}
35
36// Verificar números específicos
37console.log(`21 está na sequência? ${isMoserDeBruijn(21)}`); // verdadeiro
38console.log(`22 está na sequência? ${isMoserDeBruijn(22)}`); // falso
391import java.util.ArrayList;
2import java.util.List;
3
4public class MoserDeBruijnGenerator {
5
6 public static List<Integer> generateSequence(int n) {
7 List<Integer> sequence = new ArrayList<>();
8 for (int i = 0; i < n; i++) {
9 int term = 0;
10 int power = 1;
11 int temp = i;
12 while (temp > 0) {
13 if ((temp & 1) == 1) { // Verificar se o bit menos significativo é 1
14 term += power;
15 }
16 power *= 4;
17 temp >>= 1; // Deslocamento à direita para verificar o próximo bit
18 }
19 sequence.add(term);
20 }
21 return sequence;
22 }
23
24 public static boolean isMoserDeBruijn(int num) {
25 while (num > 0) {
26 int digit = num % 4;
27 if (digit > 1) {
28 return false;
29 }
30 num /= 4;
31 }
32 return true;
33 }
34
35 public static void main(String[] args) {
36 List<Integer> terms = generateSequence(20);
37 System.out.println("Primeiros 20 termos da sequência de Moser-de Bruijn:");
38 System.out.println(terms);
39
40 System.out.println("21 está na sequência? " + isMoserDeBruijn(21)); // verdadeiro
41 System.out.println("22 está na sequência? " + isMoserDeBruijn(22)); // falso
42 }
43}
441#include <iostream>
2#include <vector>
3
4std::vector<int> moserDeBruijn(int n) {
5 std::vector<int> sequence;
6 for (int i = 0; i < n; i++) {
7 int term = 0;
8 int power = 1;
9 int temp = i;
10 while (temp > 0) {
11 if (temp & 1) { // Verificar se o bit menos significativo é 1
12 term += power;
13 }
14 power *= 4;
15 temp >>= 1; // Deslocamento à direita para verificar o próximo bit
16 }
17 sequence.push_back(term);
18 }
19 return sequence;
20}
21
22bool isMoserDeBruijn(int num) {
23 while (num > 0) {
24 int digit = num % 4;
25 if (digit > 1) {
26 return false;
27 }
28 num /= 4;
29 }
30 return true;
31}
32
33int main() {
34 std::vector<int> terms = moserDeBruijn(20);
35 std::cout << "Primeiros 20 termos da sequência de Moser-de Bruijn:" << std::endl;
36 for (int term : terms) {
37 std::cout << term << " ";
38 }
39 std::cout << std::endl;
40
41 std::cout << "21 está na sequência? " << (isMoserDeBruijn(21) ? "verdadeiro" : "falso") << std::endl;
42 std::cout << "22 está na sequência? " << (isMoserDeBruijn(22) ? "verdadeiro" : "falso") << std::endl;
43
44 return 0;
45}
46Todas essas implementações seguem o mesmo padrão: usar operações de bits para ler a representação binária de um índice e, em seguida, construir a soma correspondente de potências de 4. As funções de teste de associação usam a abordagem base-4 — verificando se os dígitos são restritos a 0 e 1.
Em termos de desempenho, essas implementações são altamente eficientes. A complexidade de tempo é O(n × log n) para gerar n termos, já que cada termo requer examinar O(log i) bits. Verificar a associação de um único número é O(log N), onde N é o número sendo testado.
A tabela abaixo mostra os primeiros 32 termos com decomposições completas. Observe como a representação em base-4 contém apenas 0s e 1s, e como a decomposição mapeia diretamente para índices binários:
| Índice | Termo | Decomposição | Base-4 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 1 | 4⁰ | 1 |
| 2 | 4 | 4¹ | 10 |
| 3 | 5 | 4¹ + 4⁰ | 11 |
| 4 | 16 | 4² | 100 |
| 5 | 17 | 4² + 4⁰ | 101 |
| 6 | 20 | 4² + 4¹ | 110 |
| 7 | 21 | 4² + 4¹ + 4⁰ | 111 |
| 8 | 64 | 4³ | 1000 |
| 9 | 65 | 4³ + 4⁰ | 1001 |
| 10 | 68 | 4³ + 4¹ | 1010 |
| 11 | 69 | 4³ + 4¹ + 4⁰ | 1011 |
| 12 | 80 | 4³ + 4² | 1100 |
| 13 | 81 | 4³ + 4² + 4⁰ | 1101 |
| 14 | 84 | 4³ + 4² + 4¹ | 1110 |
| 15 | 85 | 4³ + 4² + 4¹ + 4⁰ | 1111 |
| 16 | 256 | 4⁴ | 10000 |
| 17 | 257 | 4⁴ + 4⁰ | 10001 |
| 18 | 260 | 4⁴ + 4¹ | 10010 |
| 19 | 261 | 4⁴ + 4¹ + 4⁰ | 10011 |
| 20 | 272 | 4⁴ + 4² | 10100 |
| 21 | 273 | 4⁴ + 4² + 4⁰ | 10101 |
| 22 | 276 | 4⁴ + 4² + 4¹ | 10110 |
| 23 | 277 | 4⁴ + 4² + 4¹ + 4⁰ | 10111 |
| 24 | 320 | 4⁴ + 4³ | 11000 |
| 25 | 321 | 4⁴ + 4³ + 4⁰ | 11001 |
| 26 | 324 | 4⁴ + 4³ + 4¹ | 11010 |
| 27 | 325 | 4⁴ + 4³ + 4¹ + 4⁰ | 11011 |
| 28 | 336 | 4⁴ + 4³ + 4² | 11100 |
| 29 | 337 | 4⁴ + 4³ + 4² + 4⁰ | 11101 |
| 30 | 340 | 4⁴ + 4³ + 4² + 4¹ | 11110 |
| 31 | 341 | 4⁴ + 4³ + 4² + 4¹ + 4⁰ | 11111 |
Vamos decompor completamente o termo 21:
Percebe o padrão? O índice binário (111) mapeia diretamente para quais potências de 4 incluir. Cada bit "1" indica para incluir aquela potência.
A sequência cresce exponencialmente—o n-ésimo termo é aproximadamente proporcional a 4^(log₂(n)). O que isso significa na prática?
Conforme os números ficam maiores, a sequência se torna cada vez mais esparsa. Você pula cada vez mais inteiros. Apesar dessa esparsidade, a sequência contém infinitos termos—ela nunca para de crescer.
OEIS A000695 - Sequência de Moser-de Bruijn. A Enciclopédia Online de Sequências de Inteiros. Dados abrangentes e propriedades da sequência.
De Bruijn, N. G. "Sobre Bases para o Conjunto de Inteiros." Publicationes Mathematicae Debrecen, vol. 1, 1950, pp. 232-242. O artigo fundamental que estabelece propriedades-chave de bases aditivas.
Moser, Leo. "Uma Aplicação de Séries Geradoras." Mathematics Magazine, vol. 35, no. 1, 1962, pp. 37-38. Trabalho inicial explorando as funções geradoras da sequência.
Stolarsky, Kenneth B. "Somas de Potência e Exponenciais de Somas Digitais Relacionadas à Paridade de Coeficientes Binomiais." SIAM Journal on Applied Mathematics, vol. 32, no. 4, 1977, pp. 717-730. Explora propriedades de somas digitais relacionadas a sequências como Moser-de Bruijn.
Allouche, Jean-Paul, e Jeffrey Shallit. Sequências Automáticas: Teoria, Aplicações, Generalizações. Cambridge University Press, 2003. Capítulo que aborda sequências automáticas, incluindo conexões com a sequência de Moser-de Bruijn.
Conjuntos Livres de Soma - Wikipédia. Contexto de fundo da teoria dos números aditivos.
Bases Aditivas - Wikipédia. Visão geral de conjuntos que podem representar inteiros como somas.
A sequência tem várias aplicações: pesquisa em teoria dos números explorando bases aditivas, trabalhos em combinatória sobre conjuntos sem soma, educação em ciência da computação (particularmente para ensinar operações bit a bit e algoritmos eficientes), e análise de padrões matemáticos. É também uma excelente ferramenta de ensino para entender como diferentes bases numéricas se relacionam entre si.
Pegue cada índice n começando de 0, converta para binário, então substitua cada bit "1" pela potência correspondente de 4. Por exemplo, o índice 5 tem representação binária 101, então você calcula 4² + 4⁰ = 16 + 1 = 17. Esse é o 5º termo (contando a partir do índice 0).
Cada número na sequência tem uma propriedade distintiva: sua representação em base 4 contém apenas 0s e 1s—nunca 2s ou 3s. Isso significa que você pode construir cada termo somando potências de 4 onde cada potência aparece no máximo uma vez. É como binário, mas usando potências de 4 em vez de potências de 2.
Converta seu número para base 4 e observe os dígitos. Se você vir apenas 0s e 1s, está na sequência. Se qualquer dígito for 2 ou 3, não está. Por exemplo, 21 em base 4 é 111 (todos 1s e 0s), então está na sequência. Mas 22 em base 4 é 112 (contém um 2), então não está.
O n-ésimo termo M(n) segue esta fórmula: M(n) = Σ(b_i × 4^i), onde b_i representa os dígitos binários de n. Em linguagem simples: escreva n em binário, então para cada posição com um 1, some a potência correspondente de 4.
Sim, continua para sempre. Existem infinitos termos na sequência de Moser-de Bruijn. No entanto, quanto mais alto você vai, mais esparsa a sequência se torna—você está pulando cada vez mais inteiros regulares entre os membros da sequência.
Sequências binárias (somas de potências de 2) podem representar todos os inteiros não-negativos—é isso que a representação binária faz. A sequência de Moser-de Bruijn usa potências de 4 em vez disso, o que cria um conjunto muito mais esparso. A maioria dos inteiros não aparece na sequência de Moser-de Bruijn.
Leo Moser (1921-1970), um matemático austro-canadense, e Nicolaas Govert de Bruijn (1918-2012), um matemático holandês, estudaram essa sequência em profundidade durante os anos 1960 como parte de pesquisas em teoria dos números aditivos. A sequência leva o nome de ambos.
Este gerador funciona completamente no seu navegador — sem instalação, sem registro, sem espera. Seja você um estudante aprendendo sobre sistemas numéricos, um pesquisador explorando bases aditivas ou simplesmente alguém matematicamente curioso, você pode gerar termos instantaneamente e ver os padrões por conta própria. Experimente gerar diferentes quantidades para observar como a sequência cresce e quais inteiros são incluídos.
Descubra mais ferramentas que podem ser úteis para o seu fluxo de trabalho