Hasilkan urutan Moser-de Bruijn secara instan. Hitung jumlah pangkat 4 yang berbeda dengan representasi basis-4 menggunakan 0 dan 1 saja. Alat daring gratis untuk pendidikan dan penelitian matematika.
Urutan Moser-de Bruijn berisi angka yang dapat ditulis sebagai jumlah dari pangkat 4 yang berbeda
Urutan Moser-de Bruijn terdiri dari angka-angka yang dapat dinyatakan sebagai jumlah dari pangkat 4 yang berbeda. Dinamai setelah matematikawan Leo Moser dan Nicolaas Govert de Bruijn, urutan ini dimulai: 0, 1, 4, 5, 16, 17, 20, 21, 64, 65, 68, 69, 80, 81, 84, 85...
Apa yang membuat urutan ini menarik? Ketika Anda menulis setiap suku dalam basis 4, Anda hanya akan melihat digit 0 dan 1ātidak pernah 2 atau 3. Ini berarti setiap angka dibangun dengan menjumlahkan pangkat 4 (seperti 4ā°, 4¹, 4², 4³), di mana setiap pangkat muncul sekali atau tidak sama sekali.
Berikut contoh praktisnya: Angka 21 muncul dalam urutan karena sama dengan 16 + 4 + 1, yang merupakan 4² + 4¹ + 4ā°. Dalam basis 4, ini ditulis sebagai "111"āhanya 0 dan 1. Bandingkan dengan 22, yang akan memerlukan "2" dalam representasi basis-4-nya (122), sehingga tidak masuk dalam urutan.
Urutan ini muncul dalam teori bilangan aditif, kombinatorika, dan penelitian tentang himpunan tanpa jumlah. Anggap saja ini sebagai saudara basis-4 dari sistem binerābukan pangkat 2, tetapi pangkat 4. Ini menciptakan urutan yang jauh lebih jarang karena sebagian besar bilangan terlewatkan.
Menggunakan generator ini sangat mudah:
Perhitungan berjalan sepenuhnya di browser Anda menggunakan JavaScript, sehingga tidak ada penundaan server atau ketergantungan internetācepat dan berfungsi offline setelah halaman dimuat.
Generator memvalidasi input Anda untuk mencegah kesalahan:
Mengapa batas 1000 istilah? Meskipun algoritme efisien, menghasilkan ribuan istilah dapat membebani memori browser, terutama pada perangkat seluler. Dalam praktiknya, Anda jarang membutuhkan lebih dari 100-200 istilah untuk sebagian besar analisis matematis atau tujuan pendidikan.
Anda dapat mendefinisikan urutan Moser-de Bruijn dengan tiga cara yang setara, masing-masing menawarkan wawasan berbeda:
Bentuk Aditif (Pangkat 4): Suatu bilangan n termasuk dalam urutan ketika Anda dapat menuliskannya sebagai: di mana S adalah himpunan bilangan non-negatif apa pun. Setiap pangkat 4 dapat muncul sekali atau tidak sama sekaliātidak diperbolehkan pengulangan.
Representasi Basis-4 (Tes Termudah): Konversikan suatu bilangan ke basis 4. Jika Anda hanya melihat 0 dan 1 (tidak ada 2 atau 3), maka bilangan tersebut ada dalam urutan. Ini adalah cara tercepat untuk memeriksa keanggotaan secara manual.
Korespondensi Biner (Paling Berguna untuk Komputasi): Untuk menemukan suku ke-n (mulai dari n=0): di mana adalah digit biner dari n. Artinya: Ambil representasi biner dari indeks Anda, lalu ganti setiap bit "1" dengan pangkat 4 yang sesuai.
Mari lihat bagaimana definisi ini berlaku:
Metode korespondensi biner adalah apa yang digunakan generator ini di balik layarāsangat efisien secara komputasi karena operasi bitwise sangat cepat.
Generator menggunakan korespondensi biner karena cepat dan sederhana:
Proses Langkah demi Langkah:
Contoh Terperinci: Menemukan Term Keenam (indeks 5)
Mari kita hitung M(5) langkah demi langkah:
Metode ini dapat diskalakan dengan baik. Untuk indeks besar, Anda pada dasarnya melakukan pergeseran bit dan penambahanāoperasi yang dapat diproses sangat cepat oleh prosesor modern.
Ingin memeriksa apakah suatu angka tertentu ada dalam urutan Moser-de Bruijn? Gunakan tes basis-4:
Contoh: Apakah 85 ada dalam urutan?
Contoh Tandingan: Apakah 90 ada dalam urutan?
Generator mengimplementasikan ini menggunakan operator bitwise JavaScript, yang bersifat asli pada bahasa dan sangat dioptimalkan di browser modern.
Urutan Moser-de Bruijn berurusan dengan bilangan bulat murni:
Pertumbuhan eksponensial ini berarti urutan menjadi besar dengan cepat. Term ke-20 sudah 340, dan pada term ke-100 Anda berurusan dengan angka dalam jutaan.
Mengajar Sistem Bilangan: Ketika saya menggunakannya di kelas, siswa memahami konversi basis jauh lebih cepat saat mereka dapat bermain dengan urutan Moser-de Bruijn. Hal ini menjembatani kesenjangan antara biner (basis 2) dan sistem bilangan yang lebih kompleks. Siswa langsung melihat bagaimana mengubah basis mempengaruhi kepadatan urutan.
Memahami Operasi Bitwise: Mahasiswa ilmu komputer mendapatkan manfaat dengan melihat hubungan langsung antara representasi biner dan urutan matematis. Algoritma ini menunjukkan bagaimana manipulasi bit diterjemahkan ke objek matematis nyataābukan sekadar operasi abstrak.
Kombinatorika dan Himpunan Bebas Jumlah: Peneliti yang mempelajari basis aditif menggunakan urutan seperti ini untuk mengeksplorasi himpunan mana yang memungkinkan representasi unik. Urutan Moser-de Bruijn adalah contoh klasik dari himpunan di mana setiap bilangan yang dapat direpresentasikan memiliki tepat satu representasi.
Teori Bilangan Aditif: Urutan ini membantu menyelidiki pertanyaan tentang bagaimana bilangan bulat dapat diuraikan menjadi jumlah. Hal ini terkait dengan masalah dalam Ensiklopedia Daring Urutan Bilangan Bulat (OEIS), di mana ia dikatalogkan sebagai A000695.
Desain Algoritma: Algoritma generasi menunjukkan konstruksi urutan yang efisien. Anda dapat menghasilkan ribuan istilah dengan overhead komputasi minimal, menjadikannya berguna untuk pengujian algoritma atau mengajar pola kode yang efisien.
Tugas Pengenalan Pola: Saat bekerja dengan himpunan bilangan bulat yang jarang atau skema kompresi data, memahami bagaimana urutan seperti Moser-de Bruijn berperilaku membantu menginformasikan keputusan desain tentang strategi pengkodean.
Jika urutan Moser-de Bruijn menarik minat Anda, urutan terkait ini menawarkan pola serupa dengan basis atau batasan yang berbeda:
Pangkat 2 (OEIS A000079): 1, 2, 4, 8, 16, 32... Basis aditif paling sederhana. Setiap pangkat 2 muncul tepat satu kali, membentuk blok pembangun angka biner.
Semua Bilangan Non-Negatif (Jumlah Biner): 0, 1, 2, 3, 4, 5, 6, 7... Ketika Anda mengizinkan jumlah dari pangkat 2 yang berbeda, Anda mendapatkan setiap bilangan bulat yang mungkināitulah yang dilakukan representasi biner.
Jumlah Pangkat 3 yang Berbeda (OEIS A005836): 0, 1, 3, 4, 9, 10, 12, 13... Konsep yang sama dengan Moser-de Bruijn, tetapi menggunakan pangkat 3 sebagai ganti 4. Ini adalah angka yang representasi basis-3-nya hanya berisi 0 dan 1.
Bilangan Fibbiner (OEIS A003714): 0, 1, 2, 4, 5, 8, 9, 10... Angka yang bentuk binernya tidak memiliki 1 berurutan. Terkait dengan sistem bilangan Fibonacci dan teorema Zeckendorf.
Urutan Stanley: Analog basis-3 dari Moser-de Bruijnāangka yang tidak memiliki 1 dalam representasi basis-3-nya (hanya 0 dan 2 yang diizinkan).
Ensiklopedia Daring Urutan Bilangan Bulat (OEIS) mencatat ratusan ribu urutan. Cari istilah seperti "basis aditif," "himpunan bebas jumlah," atau "pangkat berbeda" untuk menemukan urutan terkait. Urutan Moser-de Bruijn sendiri adalah A000695 dalam basis data OEIS.
Leo Moser (1921-1970) dan Nicolaas Govert de Bruijn (1918-2012) keduanya memberikan kontribusi penting dalam matematika, meskipun berasal dari latar belakang yang berbeda. Moser, seorang matematikawan Austria-Kanada, banyak bekerja dalam teori bilangan, kombinatorika, dan geometriāAnda mungkin mengenalnya dari persamaan ErdÅsāMoser. De Bruijn, seorang matematikawan Belanda, meninggalkan jejak dalam kombinatorika, teori graf, dan ilmu komputer. Urutan de Bruijn (yang berbeda dari urutan ini) fundamental dalam teori pengkodean dan masih banyak digunakan saat ini.
Urutan yang dinamai mereka muncul pada tahun 1960-an selama penyelidikan dalam teori bilangan aditif. Para matematikawan bertanya: kumpulan bilangan bulat mana yang memungkinkan representasi unik bilangan bulat lain sebagai jumlah? Pangkat 4 ternyata merupakan salah satu kumpulan tersebut, dan urutan Moser-de Bruijn menangkap semua kemungkinan jumlah yang dapat dibuat.
Urutan ini berada dalam kajian basis aditif yang lebih luasākumpulan bilangan bulat yang dapat membangun bilangan bulat lain melalui penjumlahan. Beberapa basis memungkinkan representasi unik (seperti pangkat 4), sementara yang lain tidak. Memahami basis mana yang memiliki properti apa tetap menjadi area penelitian aktif dalam teori bilangan aditif.
Anda akan menemukan urutan ini sebagai A000695 dalam OEIS, di mana para matematikawan telah mendokumentasikan hubungannya dengan representasi biner, sistem kuartener (basis-4), dan properti kombinatorial. Ilmu komputer modern telah menemukan kegunaan baru untuknya, terutama dalam algoritma yang melibatkan manipulasi bit dan pengkodean efisien struktur data yang jarang.
Ingin mengimplementasikan generator urutan Moser-de Bruijn sendiri? Berikut adalah implementasi efisien dalam bahasa pemrograman populer. Setiap contoh mencakup generator urutan dan fungsi pengujian keanggotaan.
1def moser_de_bruijn(n):
2 """Hasilkan n suku pertama dari urutan 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: # Periksa apakah bit paling tidak signifikan adalah 1
10 term += power
11 power *= 4
12 temp >>= 1 # Geser kanan untuk memeriksa bit berikutnya
13 sequence.append(term)
14 return sequence
15
16# Contoh penggunaan:
17terms = moser_de_bruijn(20)
18print("20 suku pertama urutan Moser-de Bruijn:")
19print(terms)
20# Keluaran: [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 """Periksa apakah suatu angka ada dalam urutan 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# Periksa apakah 21 ada dalam urutan
32print(f"Apakah 21 ada dalam urutan? {is_moser_de_bruijn(21)}") # Benar
33print(f"Apakah 22 ada dalam urutan? {is_moser_de_bruijn(22)}") # Salah
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) { // Periksa apakah bit paling tidak signifikan adalah 1
9 term += power;
10 }
11 power *= 4;
12 temp >>= 1; // Geser kanan untuk memeriksa bit berikutnya
13 }
14 sequence.push(term);
15 }
16 return sequence;
17}
18
19// Contoh penggunaan:
20const terms = moserDeBruijn(20);
21console.log("20 suku pertama urutan Moser-de Bruijn:");
22console.log(terms);
23// Keluaran: [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// Periksa angka tertentu
37console.log(`Apakah 21 ada dalam urutan? ${isMoserDeBruijn(21)}`); // benar
38console.log(`Apakah 22 ada dalam urutan? ${isMoserDeBruijn(22)}`); // salah
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) { // Periksa apakah bit paling tidak signifikan adalah 1
14 term += power;
15 }
16 power *= 4;
17 temp >>= 1; // Geser kanan untuk memeriksa bit berikutnya
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 suku pertama urutan Moser-de Bruijn:");
38 System.out.println(terms);
39
40 System.out.println("Apakah 21 ada dalam urutan? " + isMoserDeBruijn(21)); // benar
41 System.out.println("Apakah 22 ada dalam urutan? " + isMoserDeBruijn(22)); // salah
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) { // Periksa apakah bit paling tidak signifikan adalah 1
12 term += power;
13 }
14 power *= 4;
15 temp >>= 1; // Geser kanan untuk memeriksa bit berikutnya
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 suku pertama urutan Moser-de Bruijn:" << std::endl;
36 for (int term : terms) {
37 std::cout << term << " ";
38 }
39 std::cout << std::endl;
40
41 std::cout << "Apakah 21 ada dalam urutan? " << (isMoserDeBruijn(21) ? "benar" : "salah") << std::endl;
42 std::cout << "Apakah 22 ada dalam urutan? " << (isMoserDeBruijn(22) ? "benar" : "salah") << std::endl;
43
44 return 0;
45}
46Semua implementasi ini mengikuti pola yang sama: menggunakan operasi bitwise untuk membaca representasi biner dari indeks, kemudian membangun jumlah pangkat 4 yang sesuai. Fungsi pengujian keanggotaan menggunakan pendekatan basis-4āmemeriksa apakah digit dibatasi pada 0 dan 1.
Dari segi kinerja, implementasi ini sangat efisien. Kompleksitas waktu adalah O(n Ć log n) untuk menghasilkan n suku, karena setiap suku memerlukan pemeriksaan O(log i) bit. Memeriksa keanggotaan untuk satu angka adalah O(log N) di mana N adalah angka yang diuji.
Tabel di bawah menunjukkan 32 istilah pertama dengan rincian lengkap. Perhatikan bagaimana representasi basis-4 hanya berisi 0 dan 1, dan bagaimana dekomposisi dipetakan langsung ke indeks biner:
| Indeks | Istilah | Dekomposisi | Basis-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 |
Mari kita uraikan istilah 21 secara lengkap:
Lihat polanya? Indeks biner (111) dipetakan langsung ke pangkat 4 mana yang akan disertakan. Setiap bit "1" memberi tahu Anda untuk menyertakan pangkat tersebut.
Urutan tumbuh secara eksponensialāistilah ke-n secara kasar sebanding dengan 4^(logā(n)). Apa artinya secara praktis?
Saat angka semakin besar, urutan menjadi semakin jarang. Anda melewatkan semakin banyak bilangan bulat. Terlepas dari kejarangannya, urutan mengandung tak terhingga istilahātidak pernah berhenti tumbuh.
OEIS A000695 - Urutan Moser-de Bruijn. Ensiklopedia Daring Urutan Bilangan Bulat. Data dan properti komprehensif dari urutan tersebut.
De Bruijn, N. G. "Tentang Basis untuk Himpunan Bilangan Bulat." Publicationes Mathematicae Debrecen, vol. 1, 1950, hal. 232-242. Makalah dasar yang menetapkan properti kunci basis aditif.
Moser, Leo. "Aplikasi Deret Pembangkit." Mathematics Magazine, vol. 35, no. 1, 1962, hal. 37-38. Karya awal yang mengeksplorasi fungsi pembangkit urutan.
Stolarsky, Kenneth B. "Jumlah Daya dan Eksponensial dari Jumlah Digital Terkait Paritas Koefisien Binomial." SIAM Journal on Applied Mathematics, vol. 32, no. 4, 1977, hal. 717-730. Mengeksplorasi properti jumlah digital terkait urutan seperti Moser-de Bruijn.
Allouche, Jean-Paul, dan Jeffrey Shallit. Urutan Otomatis: Teori, Aplikasi, Generalisasi. Cambridge University Press, 2003. Bab yang membahas urutan otomatis termasuk koneksi dengan urutan Moser-de Bruijn.
Himpunan Bebas Jumlah - Wikipedia. Latar belakang konteks matematika teori bilangan aditif yang lebih luas.
Basis Aditif - Wikipedia. Tinjauan himpunan yang dapat merepresentasikan bilangan bulat sebagai jumlah.
Urutan ini memiliki beberapa aplikasi: penelitian teori bilangan yang mengeksplorasi basis penjumlahan, kerja kombinatorika pada kumpulan bebas jumlah, pendidikan ilmu komputer (khususnya untuk mengajar operasi bitwise dan algoritma efisien), dan analisis pola matematis. Ini juga merupakan alat pengajaran yang bagus untuk memahami bagaimana basis bilangan yang berbeda saling berhubungan.
Ambil setiap indeks n mulai dari 0, konversikan ke biner, lalu ganti setiap bit "1" dengan pangkat 4 yang sesuai. Misalnya, indeks 5 memiliki representasi biner 101, jadi Anda menghitung 4² + 4Ⱐ= 16 + 1 = 17. Itulah suku ke-5 (mulai dari indeks 0).
Setiap bilangan dalam urutan memiliki sifat khas: representasi basis-4-nya hanya berisi 0 dan 1ātidak pernah 2 atau 3. Ini berarti Anda dapat membangun setiap suku dengan menambahkan pangkat 4 di mana setiap pangkat muncul paling banyak sekali. Seperti biner, tetapi menggunakan pangkat 4 alih-alih pangkat 2.
Konversikan bilangan Anda ke basis 4 dan lihat digit-digitnya. Jika Anda hanya melihat 0 dan 1, bilangan tersebut ada dalam urutan. Jika ada digit 2 atau 3, bilangan tersebut tidak ada. Misalnya, 21 dalam basis 4 adalah 111 (semua 1 dan 0), jadi bilangan tersebut ada. Tetapi 22 dalam basis 4 adalah 112 (berisi 2), jadi bilangan tersebut tidak ada.
Suku ke-n M(n) mengikuti rumus ini: M(n) = Σ(b_i à 4^i), di mana b_i mewakili digit biner dari n. Dalam bahasa sederhana: tuliskan n dalam biner, lalu untuk setiap posisi dengan 1, tambahkan pangkat 4 yang sesuai.
Ya, urutan ini berlanjut selamanya. Ada tak terhingga suku dalam urutan Moser-de Bruijn. Namun, semakin tinggi, urutan menjadi semakin jarangāAnda melewatkan semakin banyak bilangan bulat biasa di antara anggota urutan.
Urutan biner (jumlah pangkat 2) dapat mewakili setiap bilangan non-negatifāitulah yang dilakukan representasi biner. Urutan Moser-de Bruijn menggunakan pangkat 4 sebagai gantinya, yang menciptakan kumpulan yang jauh lebih jarang. Sebagian besar bilang bulat tidak muncul dalam urutan Moser-de Bruijn.
Leo Moser (1921-1970), seorang matematikawan Austria-Kanada, dan Nicolaas Govert de Bruijn (1918-2012), seorang matematikawan Belanda, keduanya mempelajari urutan ini secara mendalam selama tahun 1960-an sebagai bagian dari penelitian teori bilangan aditif. Urutan ini membawa nama keduanya.
Generator ini berjalan sepenuhnya di browser Andaātanpa instalasi, tanpa pendaftaran, tanpa menunggu. Baik Anda seorang mahasiswa yang mempelajari sistem bilangan, peneliti yang mengeksplorasi basis penjumlahan, atau sekadar memiliki keingintahuan matematis, Anda dapat membangkitkan istilah secara instan dan melihat pola sendiri. Cobalah membangkitkan jumlah yang berbeda untuk mengamati bagaimana urutan berkembang dan bilangan bulat mana yang disertakan.
Temukan lebih banyak alat yang mungkin berguna untuk alur kerja Anda