Генерирайте последователности на Мозер-де Бройн мигновено. Изчислявайте суми от различни степени на 4 с представяне в база 4, използвайки само 0 и 1. Безплатен онлайн инструмент за математическо образование и изследвания.
Последователностите на Мозер-де Бройн съдържат числа, които могат да бъдат написани като суми от различни степени на 4
Последователността на Мозер-де Бройн се състои от числа, които могат да бъдат изразени като суми от различни степени на 4. Наречена на математиците Лео Мозер и Николас Говерт де Бройн, последователността започва: 0, 1, 4, 5, 16, 17, 20, 21, 64, 65, 68, 69, 80, 81, 84, 85...
Какво прави тази последователност интересна? Когато напишете който и да е член в база 4, ще видите само цифрите 0 и 1 - никога 2 или 3. Това означава, че всяко число се изгражда чрез събиране на степени на 4 (като 4⁰, 4¹, 4², 4³), като всяка степен се появява веднъж или изобщо не се появява.
Ето практически пример: Числото 21 се появява в последователността, защото е равно на 16 + 4 + 1, което е 4² + 4¹ + 4⁰. В база 4 това се записва като "111" - само 0 и 1. Сравнете това с 22, който би изисквал "2" в неговото представяне в база 4 (122), така че не отговаря на изискванията.
Последователността се среща в адитивната теория на числата, комбинаториката и изследванията върху сумарно свободни множества. Помислете за нея като за братовчед на двоичната система в база 4 - вместо степени на 2, работите със степени на 4. Това създава много по-рядка последователност, тъй като повечето цели числа се пропускат.
Използването на този генератор е лесно:
Изчисленията се извършват изцяло във вашия браузър чрез JavaScript, така че няма забавяне от сървъра или зависимост от интернет - бързо е и работи офлайн веднага след зареждане на страницата.
Генераторът валидира вашия вход, за да предотврати грешки:
Защо ограничението от 1000 термина? Докато алгоритъмът е ефективен, генерирането на хиляди термини може да натовари паметта на браузъра, особено на мобилни устройства. На практика рядко ще ви трябват повече от 100-200 термина за повечето математически анализи или образователни цели.
Можете да дефинирате редицата на Мозер-де Бройн по три еквивалентни начина, всеки от които предлага различни insights:
Адитивна форма (Степени на 4): Число n принадлежи на редицата, когато можете да го запишете като: където S е всеки набор от незаписни цели числа. Всяка степен на 4 може да се появи веднъж или изобщо да не се появи - повторения не са позволени.
Представяне в база 4 (Най-прост тест): Преобразувайте число в база 4. Ако виждате само 0 и 1 (без 2 или 3), то е в редицата. Това е най-бързият начин да проверите членството на ръка.
Двоично съответствие (Най-полезно за изчисления): За да намерите n-тия член (започвайки от n=0): където са двоичните цифри на n. Превод: Вземете двоичното представяне на вашия индекс, после заместете всеки бит "1" със съответстващата му степен на 4.
Да видим как тези дефиниции работят:
Методът на двоично съответствие е този, който генераторът използва под капака - той е изчислително ефективен, защото битовите операции са бързи.
Генераторът използва двоично съответствие, защото е бърз и опростен:
Стъпка по стъпка:
Работен пример: Намиране на 6-тия термин (индекс 5)
Нека изчислим M(5) стъпка по стъпка:
Този метод се мащабира добре. За големи индекси, същността е в побитово изместване и събиране - операции, които съвременните процесори изпълняват изключително бързо.
Искате ли да проверите дали конкретно число е в последователността на Мозер-де Бройн? Използвайте теста в base-4:
Пример: Има ли 85 в последователността?
Контрапример: Има ли 90 в последователността?
Генераторът прилага това, като използва побитови оператори в JavaScript, които са вградени в езика и силно оптимизирани в съвременните браузъри.
Последователността на Мозер-де Бройн работи с чисти цели числа:
Този експоненциален растеж означава, че последователността нараства бързо. 20-тият термин вече е 340, а при 100-тия термин работите с числа в милиони.
Преподаване на числени системи: Когато съм използвал това в класни стаи, учениците разбират базовите преобразувания много по-бързо, когато могат да си играят със секвенцията на Мозер-де Бройн. Тя премества моста между двоичната (база 2) и по-сложните числени системи. Учениците веднага виждат как промяната на базата променя плътността на секвенцията.
Разбиране на побитови операции: Студентите по компютърни науки се възползват от пряката връзка между двоичното представяне и математическите секвенции. Алгоритъмът демонстрира как манипулацията на битове се превръща в реални математически обекти - не просто абстрактни операции.
Комбинаторика и суми-свободни множества: Изследователите, изучаващи адитивни бази, използват секвенции като тази, за да проучват кои множества позволяват уникални представяния. Секвенцията на Мозер-де Бройн е показателен пример за множество, където всяко представимо число има точно едно представяне.
Адитивна теория на числата: Секвенцията помага да се изследват въпроси за това как цели числа могат да бъдат разложени на суми. Тя е свързана с проблеми в Онлайн енциклопедия на целочислените последователности (OEIS), където е каталогизирана като A000695.
Проектиране на алгоритми: Алгоритъмът за генериране демонстрира ефективно конструиране на секвенции. Можете да генерирате хиляди членове с минимални изчислителни разходи, което го прави полезен за тестване на алгоритми или преподаване на ефективни кодови модели.
Задачи за разпознаване на модели: При работа с разредени целочислени множества или схеми за компресия на данни, разбирането на поведението на секвенции като Мозер-де Бройн помага да се информират дизайнерски решения за стратегии за кодиране.
Ако ви интересува последователността на Мозер-де Бройн, тези свързани последователности предлагат подобни модели с различни бази или ограничения:
Степени на 2 (OEIS A000079): 1, 2, 4, 8, 16, 32... Най-простата адитивна база. Всяка степен на 2 се появява точно веднъж, формирайки градивните блокове на двоичните числа.
Всички неотрицателни цели числа (Двоични суми): 0, 1, 2, 3, 4, 5, 6, 7... Когато позволите всяка сума от различни степени на 2, получавате всяко възможно цяло число - точно това прави двоичното представяне.
Суми на различни степени на 3 (OEIS A005836): 0, 1, 3, 4, 9, 10, 12, 13... Същата концепция като Мозер-де Бройн, но с използване на степени на 3 вместо 4. Това са числа, чието тристепенно представяне съдържа само 0 и 1.
Фибинарни числа (OEIS A003714): 0, 1, 2, 4, 5, 8, 9, 10... Числа, чиято двоична форма няма последователни 1. Свързани с числови системи на Фибоначи и теоремата на Зекендорф.
Поредица на Станли: Тристепенният аналог на Мозер-де Бройн - числа, които нямат 1 в тристепенното си представяне (позволени са само 0 и 2).
Онлайн енциклопедията на целочислените последователности (OEIS) каталогизира стотици хиляди последователности. Търсете термини като „адитивна база", „сумо-свободно множество" или „различни степени", за да намерите свързани последователности. Самата последователност на Мозер-де Бройн е A000695 в базата данни на OEIS.
Лео Мозер (1921-1970) и Николас Говерт де Бройн (1918-2012) и двамата направиха трайни приноси към математиката, макар да произхождаха от различни среди. Мозер, австрийско-канадски математик, работеше обширно в областта на теорията на числата, комбинаториката и геометрията - може би познавате името му от уравнението на Ердьош–Мозер. Де Бройн, холандски математик, остави своя отпечатък в комбинаториката, теорията на графите и компютърните науки. Неговите последователности на де Бройн (различни от тази) са фундаментални в теорията на кодирането и все още широко използвани днес.
Тяхната именна последователност възникна през 1960-те години по време на изследвания в адитивната теория на числата. Математиците се питаха: кои множества от цели числа позволяват уникално представяне на други цели числа като суми? Степените на 4 се оказаха едно такова множество, и последователността на Мозер-де Бройн улавя всички възможни суми, които можете да направите.
Последователността се намира в по-широкото изучаване на адитивни бази - множества от цели числа, които могат да изграждат други цели числа чрез събиране. Някои бази позволяват уникални представяния (като степените на 4), докато други не. Разбирането кои бази имат какви свойства остава активна изследователска област в адитивната теория на числата.
Ще намерите тази последователност като A000695 в OEIS, където математиците са документирали нейните връзки с двоичното представяне, кватернарните (base-4) системи и комбинаторните свойства. Съвременната компютърна наука е открила нови приложения за нея, особено в алгоритми, включващи манипулация на битове и ефективно кодиране на разредени структури от данни.
Искате ли да имплементирате генератора на редицата на Мозер-де Бройн сами? Ето ефективни имплементации на популярни програмни езици. Всеки пример включва генератор на редица и функция за проверка на членство.
1def moser_de_bruijn(n):
2 """Генериране на първите n члена на редицата на Мозер-де Бройн."""
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: # Проверка дали най-малко значещият бит е 1
10 term += power
11 power *= 4
12 temp >>= 1 # Отместване надясно за проверка на следващия бит
13 sequence.append(term)
14 return sequence
15
16# Пример за употреба:
17terms = moser_de_bruijn(20)
18print("Първите 20 члена на редицата на Мозер-де Бройн:")
19print(terms)
20# Изход: [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 """Проверка дали число е в редицата на Мозер-де Бройн."""
24 while num > 0:
25 digit = num % 4
26 if digit > 1:
27 return False
28 num //= 4
29 return True
30
31# Проверка дали 21 е в редицата
32print(f"Има ли 21 в редицата? {is_moser_de_bruijn(21)}") # True
33print(f"Има ли 22 в редицата? {is_moser_de_bruijn(22)}") # False
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) { // Проверка дали най-малко значещият бит е 1
9 term += power;
10 }
11 power *= 4;
12 temp >>= 1; // Отместване надясно за проверка на следващия бит
13 }
14 sequence.push(term);
15 }
16 return sequence;
17}
18
19// Пример за употреба:
20const terms = moserDeBruijn(20);
21console.log("Първите 20 члена на редицата на Мозер-де Бройн:");
22console.log(terms);
23// Изход: [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// Проверка на конкретни числа
37console.log(`Има ли 21 в редицата? ${isMoserDeBruijn(21)}`); // true
38console.log(`Има ли 22 в редицата? ${isMoserDeBruijn(22)}`); // false
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) { // Проверка дали най-малко значещият бит е 1
14 term += power;
15 }
16 power *= 4;
17 temp >>= 1; // Отместване надясно за проверка на следващия бит
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("Първите 20 члена на редицата на Мозер-де Бройн:");
38 System.out.println(terms);
39
40 System.out.println("Има ли 21 в редицата? " + isMoserDeBruijn(21)); // true
41 System.out.println("Има ли 22 в редицата? " + isMoserDeBruijn(22)); // false
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) { // Проверка дали най-малко значещият бит е 1
12 term += power;
13 }
14 power *= 4;
15 temp >>= 1; // Отместване надясно за проверка на следващия бит
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 << "Първите 20 члена на редицата на Мозер-де Бройн:" << std::endl;
36 for (int term : terms) {
37 std::cout << term << " ";
38 }
39 std::cout << std::endl;
40
41 std::cout << "Има ли 21 в редицата? " << (isMoserDeBruijn(21) ? "да" : "не") << std::endl;
42 std::cout << "Има ли 22 в редицата? " << (isMoserDeBruijn(22) ? "да" : "не") << std::endl;
43
44 return 0;
45}
46Всички тези имплементации следват един и същ модел: използване на битови операции за четене на двоичното представяне на индекс, след което конструиране на съответната сума от степени на 4. Функциите за проверка на членство използват подхода с основа 4 - проверка дали цифрите са ограничени до 0 и 1.
От гледна точка на производителност, тези имплементации са изключително ефективни. Времевата сложност е O(n × log n) за генериране на n члена, тъй като всеки член изисква преглеждане на O(log i) битове. Проверката за членство на едно число е O(log N), където N е тестваното число.
Таблицата по-долу показва първите 32 члена с пълни разбивки. Забележете как представянето в база-4 съдържа само 0 и 1, и как разлагането се mapping директно към двоичните индекси:
| Индекс | Член | Разлагане | База-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 |
Да разгледаме член 21 напълно:
Виждате ли модела? Двоичният индекс (111) се mapping директно към това кои степени на 4 да се включат. Всеки "1" бит ви казва да включите тази степен.
Последователността нараства експоненциално - n-тият член е приблизително пропорционален на 4^(log₂(n)). Какво означава това практически?
Когато числата стават по-големи, последователността става все по-рядка. Прескачате все повече и повече цели числа. Въпреки тази рядкост, последователността съдържа безкрайно много членове - тя никога не спира да нараства.
OEIS A000695 - Редица на Мозер-де Бройн. Онлайн енциклопедия на целочислените редици. Изчерпателни данни и свойства на редицата.
Де Бройн, Н. Г. „За базите на множеството от цели числа." Publicationes Mathematicae Debrecen, том 1, 1950, стр. 232-242. Основополагащата статия, установяваща ключови свойства на адитивните бази.
Мозер, Лео. „Приложение на генериращите редове." Mathematics Magazine, том 35, № 1, 1962, стр. 37-38. Ранна работа, изследваща генериращите функции на редицата.
Столарски, Кенет Б. „Суми на степени и експоненти на цифрови суми, свързани с четността на биномните коефициенти." SIAM Journal on Applied Mathematics, том 32, № 4, 1977, стр. 717-730. Изследва свойствата на цифровите суми, свързани с редици като Мозер-де Бройн.
Алуш, Жан-Пол, и Джефри Шалит. Автоматични редици: Теория, приложения, обобщения. Cambridge University Press, 2003. Глава, покриваща автоматичните редици, включително връзки с редицата на Мозер-де Бройн.
Суми-свободни множества - Уикипедия. Фон на по-широкия математически контекст на адитивната теория на числата.
Адитивни бази - Уикипедия. Преглед на множества, които могат да представят цели числа като суми.
Последователността има няколко приложения: изследване на теория на числата при проучване на адитивни бази, комбинаторни работи върху суми от свободни множества, обучение по компютърни науки (особено за преподаване на побитови операции и ефективни алгоритми) и анализ на математически модели. Тя е отличен инструмент за обучение за разбиране как различни числени бази се отнасят една към друга.
Вземете всеки индекс n, започвайки от 0, преобразувайте го в двоична система, после заместете всеки "1" бит с неговата съответстваща степен на 4. Например, индекс 5 има двоично представяне 101, така че изчислявате 4² + 4⁰ = 16 + 1 = 17. Това е петият член (броейки от индекс 0).
Всяко число в последователността има отличително свойство: неговото четворично представяне съдържа само 0 и 1 - никога 2 или 3. Това означава, че можете да изградите всеки член, като съберете степени на 4, където всяка степен се появява най-много веднъж. Прилича на двоична система, но използва степени на 4 вместо степени на 2.
Преобразувайте числото си в четворична система и погледнете цифрите. Ако виждате само 0 и 1, то е в последователността. Ако някоя цифра е 2 или 3, то не е. Например, 21 в четворична система е 111 (всички 1 и 0), така че е вътре. Но 22 в четворична система е 112 (съдържа 2), така че не е.
n-тият член M(n) следва тази формула: M(n) = Σ(b_i × 4^i), където b_i представлява двоичните цифри на n. На прост език: запишете n в двоична система, после за всяка позиция с 1, добавете съответстващата степен на 4.
Да, тя продължава безкрайно. Има безкрайно много членове в последователността на Мозер-де Бройн. Обаче, колкото по-нагоре отивате, последователността става все по-рядка - прескачате все повече и повече редовни цели числа между членовете на последователността.
Двоичните последователности (суми от степени на 2) могат да представят всяко неотрицателно цяло число - точно това прави двоичното представяне. Последователността на Мозер-де Бройн използва степени на 4 вместо това, което създава много по-рядък набор. Повечето цели числа не се появяват в последователността на Мозер-де Бройн.
Лео Мозер (1921-1970), австрийско-канадски математик, и Николас Гоберт де Бройн (1918-2012), холандски математик, и двамата задълбочено изучават тази последователност през 1960-те години като част от изследвания в адитивната теория на числата. Последователността носи имената и на двамата.
Този генератор работи изцяло във вашия браузър — без инсталация, без регистрация, без чакане. Независимо дали сте студент, който изучава числени системи, изследовател, който проучва адитивни бази, или просто математически любопитен, можете да генерирате термини незабавно и да видите закономерностите сами. Опитайте да генерирате различни количества, за да наблюдавате как последователността нараства и кои цели числа се включват.
Открийте още инструменти, които може да бъдат полезни за вашия работен процес