Genereu seqüències de Moser-de Bruijn instantàniament. Calculeu sumes de potències de 4 distintes amb representacions en base 4 usant només 0s i 1s. Eina en línia gratuïta per a educació matemàtica i recerca.
Les seqüències de Moser-de Bruijn contenen nombres que es poden escriure com a sumes de potències de 4 distintes
La seqüència de Moser-de Bruijn consisteix en nombres que es poden expressar com a sumes de potències de 4 distintes. Nomenada en honor als matemàtics Leo Moser i Nicolaas Govert de Bruijn, la seqüència comença: 0, 1, 4, 5, 16, 17, 20, 21, 64, 65, 68, 69, 80, 81, 84, 85...
Què fa interessant aquesta seqüència? Quan escrius qualsevol terme en base 4, només veuràs els dígits 0 i 1—mai 2 o 3. Això significa que cada nombre es construeix sumant potències de 4 (com 4⁰, 4¹, 4², 4³), on cada potència apareix una vegada o cap.
Aquí hi ha un exemple pràctic: El nombre 21 apareix a la seqüència perquè és igual a 16 + 4 + 1, que és 4² + 4¹ + 4⁰. En base 4, s'escriu com "111"—només 0s i 1s. Compara-ho amb 22, que necessitaria un "2" a la seva representació en base 4 (122), així que no hi entra.
La seqüència apareix a la teoria additiva de nombres, combinatòria i recerca de conjunts sense suma. Pensa-hi com un cosí en base 4 del sistema binari—en lloc de potències de 2, treballes amb potències de 4. Això crea una seqüència molt més dispersa, ja que es salten la majoria dels enters.
Usar aquest generador és senzill:
Els càlculs es realitzen completament al vostre navegador mitjançant JavaScript, de manera que no hi ha retard del servidor ni dependència d'internet: és ràpid i funciona sense connexió un cop es carrega la pàgina.
El generador valida la vostra entrada per prevenir errors:
Per què el límit de 1000 termes? Mentre que l'algoritme és eficient, generar milers de termes pot sobrecarregar la memòria del navegador, especialment en dispositius mòbils. A la pràctica, rarament necessitareu més de 100-200 termes per a la majoria d'anàlisis matemàtiques o propòsits educatius.
Podeu definir la seqüència de Moser-de Bruijn de tres maneres equivalents, cadascuna oferint perspectives diferents:
Forma Additiva (Potències de 4): Un nombre n pertany a la seqüència quan podeu escriure'l com: on S és qualsevol conjunt d'enters no negatius. Cada potència de 4 pot aparèixer un cop o cap—no es permeten repeticions.
Representació en Base 4 (Test Més Simple): Convertiu un nombre a base 4. Si només veieu 0s i 1s (sense 2s o 3s), és a la seqüència. Aquesta és la forma més ràpida de comprovar la pertinença a mà.
Correspondència Binària (Més Útil per Calcular): Per trobar el terme n-èssim (començant des de n=0): on són els dígits binaris de n. Traducció: Agafeu la representació binària del vostre índex, després substituïu cada bit "1" amb la potència de 4 corresponent.
Vegem com funcionen aquestes definicions:
El mètode de correspondència binària és el que aquest generador utilitza internament—és computacionalment eficient perquè les operacions de bits són ràpides.
El generador utilitza correspondència binària perquè és ràpid i senzill:
Procés Pas a Pas:
Exemple Detallat: Trobant el 6è terme (índex 5)
Calculem M(5) pas a pas:
aquest mètode s'escala bé. Per a índexs grans, essencialment s'estan fent desplaçaments de bits i addicions, operacions que els processadors moderns gestionen extremadament ràpidament.
Vols comprovar si un nombre específic és a la seqüència de Moser-de Bruijn? Usa el test en base 4:
Exemple: És 85 a la seqüència?
Contraexemple: És 90 a la seqüència?
El generador implementa això usant operadors de bits de JavaScript, que són nadius al llenguatge i altament optimitzats en navegadors moderns.
La seqüència de Moser-de Bruijn tracta amb enters purs:
aquest creixement exponencial significa que la seqüència es fa gran ràpidament. El 20è terme ja és 340, i al 100è terme ja estàs tractant amb nombres en milions.
Ensenyament de Sistemes Numèrics: Quan he fet servir això a les aules, els estudiants comprenen les conversions de base molt més ràpidament quan poden jugar amb la seqüència de Moser-de Bruijn. Estableix un pont entre el sistema binari (base 2) i sistemes numerals més complexos. Els estudiants veuen immediatament com canviar la base modifica la densitat de la seqüència.
Comprensió d'Operacions de Bits: Els estudiants de ciències de la computació es beneficien en veure la connexió directa entre la representació binària i les seqüències matemàtiques. L'algoritme demostra com la manipulació de bits es tradueix en objectes matemàtics reals, no només en operacions abstractes.
Combinatòria i Conjunts Lliures de Suma: Els investigadors que estudien bases additives fan servir seqüències com aquesta per explorar quins conjunts permeten representacions úniques. La seqüència de Moser-de Bruijn és un exemple de llibre de text d'un conjunt on cada nombre representable té exactament una representació.
Teoria de Nombres Additiva: La seqüència ajuda a investigar qüestions sobre com els enters es poden descompondre en sumes. Està relacionada amb problemes de l'Enciclopèdia en Línia de Seqüències d'Enters (OEIS), on està catalogada com A000695.
Disseny d'Algoritmes: L'algoritme de generació mostra la construcció eficient de seqüències. Es poden generar milers de termes amb una sobrecàrrega computacional mínima, la qual cosa el fa útil per a proves comparatives d'algoritmes o per ensenyar patrons de codi eficients.
Tasques de Reconeixement de Patrons: En treballar amb conjunts enters dispersos o esquemes de compressió de dades, comprendre com es comporten seqüències com la de Moser-de Bruijn ajuda a informar decisions de disseny sobre estratègies de codificació.
Si la seqüència de Moser-de Bruijn us interessa, aquestes seqüències relacionades ofereixen patrons similars amb bases o restriccions diferents:
Potències de 2 (OEIS A000079): 1, 2, 4, 8, 16, 32... La base additiva més simple. Cada potència de 2 apareix exactament un cop, formant els blocs de construcció dels nombres binaris.
Tots els Enters No Negatius (Sumes Binàries): 0, 1, 2, 3, 4, 5, 6, 7... Quan es permet qualsevol suma de potències de 2 distintes, s'obtenen tots els enters possibles—això és el que fa la representació binària.
Sumes de Potències Distintes de 3 (OEIS A005836): 0, 1, 3, 4, 9, 10, 12, 13... El mateix concepte que Moser-de Bruijn, però usant potències de 3 en lloc de 4. Aquests són nombres la representació en base 3 dels quals conté només 0s i 1s.
Nombres Fibinaris (OEIS A003714): 0, 1, 2, 4, 5, 8, 9, 10... Nombres la forma binària dels quals no té 1s consecutius. Connectats als sistemes de nombres de Fibonacci i al teorema de Zeckendorf.
Seqüència de Stanley: L'anàleg en base 3 de Moser-de Bruijn—nombres sense 1s en la seva representació en base 3 (només es permeten 0s i 2s).
L'Enciclopèdia en Línia de Seqüències d'Enters (OEIS) cataloga centenars de milers de seqüències. Cerqueu termes com "base additiva", "conjunt sense suma" o "potències distintes" per trobar seqüències relacionades. La pròpia seqüència de Moser-de Bruijn és A000695 a la base de dades OEIS.
Leo Moser (1921-1970) i Nicolaas Govert de Bruijn (1918-2012) tots dos van fer contribucions duradores a les matemàtiques, tot i que provenien de contextos diferents. Moser, un matemàtic austríac-canadenc, va treballar extensivament en teoria de nombres, combinatòria i geometria—potser reconeixereu el seu nom per l'equació Erdős–Moser. De Bruijn, un matemàtic holandès, va deixar la seva empremta en combinatòria, teoria de grafs i ciència de la computació. Les seves seqüències de de Bruijn (diferents d'aquesta) són fonamentals en teoria de codis i encara s'utilitzen àmpliament avui en dia.
La seva seqüència homònima va sorgir als anys 60 durant investigacions en teoria de nombres additius. Els matemàtics es preguntaven: quins conjunts d'enters permeten representar únicament altres enters com a sumes? Les potències de 4 van resultar ser un d'aquests conjunts, i la seqüència Moser-de Bruijn captura totes les sumes possibles que es poden fer.
La seqüència es troba dins de l'estudi més ampli de bases additives—conjunts d'enters que poden construir altres enters mitjançant addició. Algunes bases permeten representacions úniques (com les potències de 4), mentre que altres no. Comprendre quines bases tenen quines propietats segueix sent una àrea de recerca activa en teoria de nombres additius.
Trobareu aquesta seqüència com a A000695 a l'OEIS, on els matemàtics han documentat les seves connexions amb representació binària, sistemes quaternaris (base-4) i propietats combinatòries. La ciència de la computació moderna ha trobat nous usos per a ella, particularment en algorismes que involucren manipulació de bits i codificació eficient d'estructures de dades disperses.
Voleu implementar el generador de la seqüència de Moser-de Bruijn vosaltres mateixos? Aquí hi ha implementacions eficients en llenguatges de programació populars. Cada exemple inclou tant un generador de seqüència com una funció de prova de pertinença.
1def moser_de_bruijn(n):
2 """Genera els primers n termes de la seqüè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: # Comprova si el bit menys significatiu és 1
10 term += power
11 power *= 4
12 temp >>= 1 # Desplaçament a la dreta per comprovar el proper bit
13 sequence.append(term)
14 return sequence
15
16# Exemple d'ús:
17terms = moser_de_bruijn(20)
18print("Primers 20 termes de la seqüència de Moser-de Bruijn:")
19print(terms)
20# Sortida: [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 """Comprova si un nombre és a la seqüè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# Comprova si 21 és a la seqüència
32print(f"21 és a la seqüència? {is_moser_de_bruijn(21)}") # Cert
33print(f"22 és a la seqüència? {is_moser_de_bruijn(22)}") # Fals
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) { // Comprova si el bit menys significatiu és 1
9 term += power;
10 }
11 power *= 4;
12 temp >>= 1; // Desplaçament a la dreta per comprovar el proper bit
13 }
14 sequence.push(term);
15 }
16 return sequence;
17}
18
19// Exemple d'ús:
20const terms = moserDeBruijn(20);
21console.log("Primers 20 termes de la seqüència de Moser-de Bruijn:");
22console.log(terms);
23// Sortida: [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// Comprova nombres específics
37console.log(`21 és a la seqüència? ${isMoserDeBruijn(21)}`); // cert
38console.log(`22 és a la seqüència? ${isMoserDeBruijn(22)}`); // fals
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) { // Comprova si el bit menys significatiu és 1
14 term += power;
15 }
16 power *= 4;
17 temp >>= 1; // Desplaçament a la dreta per comprovar el proper 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("Primers 20 termes de la seqüència de Moser-de Bruijn:");
38 System.out.println(terms);
39
40 System.out.println("21 és a la seqüència? " + isMoserDeBruijn(21)); // cert
41 System.out.println("22 és a la seqüència? " + isMoserDeBruijn(22)); // fals
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) { // Comprova si el bit menys significatiu és 1
12 term += power;
13 }
14 power *= 4;
15 temp >>= 1; // Desplaçament a la dreta per comprovar el proper 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 << "Primers 20 termes de la seqüè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 és a la seqüència? " << (isMoserDeBruijn(21) ? "cert" : "fals") << std::endl;
42 std::cout << "22 és a la seqüència? " << (isMoserDeBruijn(22) ? "cert" : "fals") << std::endl;
43
44 return 0;
45}
46Totes aquestes implementacions segueixen el mateix patró: utilitzen operacions de bits per llegir la representació binària d'un índex, i després construir la suma corresponent de potències de 4. Les funcions de prova de pertinença utilitzen l'enfocament base-4, comprovant si els dígits estan restringits a 0 i 1.
Quant al rendiment, aquestes implementacions són altament eficients. La complexitat temporal és O(n × log n) per generar n termes, ja que cada terme requereix examinar O(log i) bits. Comprovar la pertinença d'un únic nombre és O(log N), on N és el nombre que es prova.
La taula a continuació mostra els primers 32 termes amb descomposicions completes. Observeu com la representació en base 4 conté només 0s i 1s, i com la descomposició es mapeja directament als índexs binaris:
| Índex | Terme | Descomposició | 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 |
Desglossem completament el terme 21:
Veieu el patró? L'índex binari (111) es mapeja directament a quines potències de 4 incloure. Cada bit "1" us diu quina potència incloure.
La seqüència creix exponencialment—el terme n-èssim és aproximadament proporcional a 4^(log₂(n)). Què significa això a la pràctica?
A mesura que els nombres es fan més grans, la seqüència es torna cada vegada més dispersa. Esteu saltant més i més enters. Malgrat aquesta dispersió, la seqüència conté infinits termes—mai no deixa de créixer.
OEIS A000695 - Seqüència de Moser-de Bruijn. L'Enciclopèdia en Línia de Seqüències d'Enters. Dades i propietats completes de la seqüència.
De Bruijn, N. G. "Sobre Bases per al Conjunt d'Enters." Publicationes Mathematicae Debrecen, vol. 1, 1950, pp. 232-242. L'article fonamental que estableix propietats clau de bases additives.
Moser, Leo. "Una Aplicació de Sèries Generadores." Mathematics Magazine, vol. 35, no. 1, 1962, pp. 37-38. Treball primerenc que explora les funcions generadores de la seqüència.
Stolarsky, Kenneth B. "Sumes de Potència i Exponencials de Sumes Digitals Relacionades amb la Paritat de Coeficients Binomials." SIAM Journal on Applied Mathematics, vol. 32, no. 4, 1977, pp. 717-730. Explora propietats de sumes digitals relacionades amb seqüències com la de Moser-de Bruijn.
Allouche, Jean-Paul, i Jeffrey Shallit. Seqüències Automàtiques: Teoria, Aplicacions, Generalitzacions. Cambridge University Press, 2003. Capítol que cobreix seqüències automàtiques incloent connexions amb la seqüència de Moser-de Bruijn.
Conjunts Sense Suma - Viquipèdia. Rerefons del context matemàtic més ampli de la teoria de nombres additiva.
Bases Additives - Viquipèdia. Visió general de conjunts que poden representar enters com a sumes.
La seqüència té diverses aplicacions: recerca en teoria de nombres que explora bases additives, treball en combinatòria sobre conjunts sense suma, educació en ciències de la computació (especialment per ensenyar operacions de bits i algorismes eficients), i anàlisi de patrons matemàtics. A més, és una excel·lent eina didàctica per entendre com es relacionen entre si les diferents bases numèriques.
Agafeu cada índex n a partir de 0, convertiu-lo a binari, i després substituïu cada bit "1" amb la potència de 4 corresponent. Per exemple, l'índex 5 té representació binària 101, així que calculeu 4² + 4⁰ = 16 + 1 = 17. Aquest és el cinquè terme (comptant des de l'índex 0).
Cada nombre de la seqüència té una propietat distintiva: la seva representació en base 4 conté només 0s i 1s, mai 2s o 3s. Això significa que podeu construir cada terme sumant potències de 4 on cada potència apareix com a màxim un cop. És com el binari, però usant potències de 4 en lloc de potències de 2.
Convertiu el nombre a base 4 i mireu els dígits. Si veieu només 0s i 1s, és a la seqüència. Si algun dígit és 2 o 3, no ho és. Per exemple, 21 en base 4 és 111 (tots 1s i 0s), així que hi és. Però 22 en base 4 és 112 (conté un 2), així que no hi és.
El terme n-èssim M(n) segueix aquesta fórmula: M(n) = Σ(b_i × 4^i), on b_i representa els dígits binaris de n. En llenguatge planer: escriviu n en binari, i per a cada posició amb un 1, sumeu la potència de 4 corresponent.
Sí, continua per sempre. Hi ha infinits termes a la seqüència de Moser-de Bruijn. Tanmateix, a mesura que aneu més amunt, la seqüència es torna cada vegada més dispersa: salteu més i més enters regulars entre membres de la seqüència.
Les seqüències binàries (sumes de potències de 2) poden representar tots els enters no negatius, que és el que fa la representació binària. La seqüència de Moser-de Bruijn utilitza potències de 4 en lloc d'això, la qual cosa crea un conjunt molt més dispers. La majoria dels enters no apareixen a la seqüència de Moser-de Bruijn.
Leo Moser (1921-1970), un matemàtic austríac-canadenc, i Nicolaas Govert de Bruijn (1918-2012), un matemàtic holandès, van estudiar a fons aquesta seqüència durant els anys 60 com a part de la recerca en teoria de nombres additius. La seqüència porta el nom d'ambdós.
Aquest generador funciona completament al teu navegador: sense instal·lació, sense registre, sense espera. Tant si ets un estudiant que aprèn sobre sistemes numèrics, un investigador que explora bases additives, o simplement algú matemàticament curiós, pots generar termes instantàniament i veure els patrons per tu mateix. Prova de generar quantitats diferents per observar com creix la seqüència i quins enters s'hi inclouen.
Descobreix més eines que podrien ser útils per al teu flux de treball