Кіріспе
Барлық ұзындығы k реттіліктерді қарастыру. Комбинаторлық математикада, n-ретті de Bruijn реттілігі k-мөлшерлі әліпби A үшін циклдік реттілік болып табылады, онда A-дағы әрбір мүмкін n ұзындығындағы тізбек дәл бір рет кіші тізбек ретінде (яғни, үздісіз кіші реттілік ретінде) кездеседі. Мұндай тізбек B(k, n) деп белгіленеді және ұзындығы kn-ға тең, бұл A-дағы n ұзындығындағы ерекше тізбектердің санымен де өрнектеледі. Осы ерекше тізбектердің әрқайсысы B(k, n)-нің кіші тізбегі ретінде қарастырылғанда, әртүрлі позициядан басталуы керек, өйткені бір позициядан басталатын кіші тізбектер ерекшеленбейді. Сондықтан B(k, n) кемінде kn символдан тұруы керек. Ал B(k, n) дәл kn символға ие болғандықтан, de Bruijn тізбектері n ұзындығындағы әр тізбекті кемінде бір рет қамтитын қасиетке қатысты ең ықшам. de Bruijn тізбектерінің саны B(k, n) голланд математигі Николаас Говерт де Брюйннің есімімен аталады, ол олар туралы 1946 жылы жазған. Кейін ол жазғандай, әр рет үшін de Bruijn тізбегінің болуы, жоғарыда аталған қасиеттермен бірге, екі элементі бар әліпби үшін алғаш рет дәлелденді. Көптеген қолданбаларда A = {0,1}.
In combinatorial mathematics, a de Bruijn sequence of order n on a size k alphabet A is a cyclic sequence in which every possible length n string on A occurs exactly once as a substring (i. e., as a contiguous subsequence). Such a sequence is denoted by B(k, n) and has length kn, which is also the number of distinct strings of length n on A. Each of these distinct strings, when taken as a substring of B(k, n), must start at a different position, because substrings starting at the same position are not distinct. Therefore, B(k, n) must have at least kn symbols. And since B(k, n) has exactly kn symbols, de Bruijn sequences are optimally short with respect to the property of containing every string of length n at least once. The number of distinct de Bruijn sequences B(k, n) is
The sequences are named after the Dutch mathematician Nicolaas Govert de Bruijn, who wrote about them in 1946. As he later wrote, the existence of de Bruijn sequences for each order together with the above properties were first proved, for the case of alphabets with two elements, by The generalization to larger alphabets is due to Automata for recognizing these sequences are denoted as de Bruijn automata. In most applications, A = {0,1}.
Тарих
Де Брюйн реттілігінің ең ерте белгілі мысалы санскрит поэзиясынан (просодиясынан) келген, онда Пингаланың еңбектерінен бастап, ұзын және қысқа буынның кез келген үш буынды комбинациясы белгілі бір атпен аталады, мысалы, қысқа-ұзын-ұзын үшін "y" және ұзын-ұзын-ұзын үшін "m". Осы аттарды есте сақтау үшін "яматараджабансалагам" есімдік қолданылады, онда әр үш буынды комбинация өзінің атынан басталады: "ямата" қысқа-ұзын-ұзын комбинациясын, "матара" ұзын-ұзын-ұзын комбинациясын және т.б. қамтиды, ал "салагам" қысқа-қысқа-ұзын комбинациясын қамтиды. Бұл есімдік, екілік 3-тіктердегі де Брюйн реттілігімен тең, қаншалықты ежелгі екені белгісіз, бірақ кем дегенде Чарльз Филип Браунның 1869 жылғы санскрит поэзиясы туралы кітабынан бұрынғы ескі, ол оны айтады және оны "Панини жазған ежелгі өлең" деп санайды. 1894 жылы А. де Ривьер француздық математикалық журнал "L'Intermédiaire des Mathématiciens" журналының бір санында, барлық ұзындығы *n* болатын екілік тізбектерді қамтитын, *n* өлшемді нөлдер мен бірліктердің дөңгелек тәрізді орналасуының бар екендігі туралы сұрақ қойды. Бұл мәселе (оң жауаппен) және *n* нақты шешімдерінің саны сол жылы Камиль Флайе Сент-Маримен шешілді. Бұл көбінесе ұмытылды, ал [автор аты] 2-нің орнына кез келген әліпби мөлшері үшін осындай циклдердің бар екенін, сондай-ақ оларды құру алгоритмін дәлелдеді. Соңында, 1944 жылы Кис Постхумус екілік тізбектер үшін шешімнің санын болжағанда, де Брюйн 1946 жылы осы болжамды дәлелдеді, осылайша мәселе кеңінен танылды. Карл Поппер өзінің "Ғылыми білімнің логикасы" (1934) еңбегінде осы нысандарды "ең қысқа, кездейсоқ сияқты тізбектер" деп атап, тәуелсіз түрде сипаттайды.
Мысалдар
A = {0, 1} деп есептегенде, екі түрлі B(2, 3) бар: 00010111 және 11101000, олардың біреуі екіншісінің кері немесе инверсиясы. Сол әліпбидегі 16 мүмкін B(2, 4) санының екеуі – 0000100110101111 және 0000111101100101. Сол әліпбидегі 2048 мүмкін B(2, 5) санының екеуі – 00000100011001010011101011011111 және 00000101001000111110111001101011.
Құрылыс
Де Брюйн тізбектерін n өлшемді де Брюйн графигінің Гамильтондық жолын k символдар арқылы алу (немесе, балама ретінде, (n − 1) өлшемді де Брюйн графигінің Эйлер айналымын) арқылы құрастыруға болады. Тағы бір құрастыру әдісі – ұзындығы n-ге бөлінетін барлық Линдон сөздерін лексикографиялық тәртіппен тізбектеу. Кері Burrows–Wheeler түрлендіруі лексикографиялық тәртіпте қажетті Линдон сөздерін жасау үшін қолданылуы мүмкін. Де Брюйн тізбектерін ығысу тіркегіштері немесе шекті өрістер арқылы да құрастыруға болады.
An inverse Burrows–Wheeler transform can be used to generate the required Lyndon words in lexicographic order. de Bruijn sequences can also be constructed using shift registers or via finite fields.
Қолданылуы
Де Брюйн циклдері нейроғылым және психология эксперименттерінде, стимулдардың тәртібінің нейрондық жүйелерге тигізетін әсерін зерттеуде жалпы қолданысқа ие, сондай-ақ функционалдық магниттік-резонанстық бейнелеу үшін арнайы жасалуы мүмкін.
Бұрышты анықтау
Де Брюйн тізбегінің символдары дөңгелек нысанның (мысалы, робот дөңгелегі) бетіне жазылса, оның бұрышын анықтау үшін белгілі бір нүктеге қарап тұрған n тізбекті символдарды қарастыруға болады. Бұл бұрышты кодтау мәселесі "айналмалы барабан мәселесі" деп аталады. Сұр кодтары да ұқсас айналмалы позициялық кодтау механизмдері ретінде қолданылады, және бұл әдіс айналмалы кодтаушыларда жиі кездеседі.
f-fold de Bruijn тізбектері
f-еселік n-дық де Брюйн тізбегі – n-дық де Брюйн тізбегі ұғымының кеңейтілген түрі, онда ұзындығы l тізбекте n ұзындығының барлық мүмкін кіші тізбегі дәл f рет кездеседі. Мысалы, циклдық тізбектер үшін 11100010 және 11101000 екі еселік екілік де Брюйн тізбектері болып табылады. l үшін екі еселік де Брюйн тізбектерінің саны , ал басқа белгілі сандар , , және .
de Bruijn torus (Брюйн бұрышы)
Де Брюйн торы — әрбір k-дық m x n матрицасы дәл бір рет кездесетін тороидтік массив. Мұндай үлгі, жоғарыда ротациялық кодтау үшін сипатталғанға ұқсас әдіспен, екі өлшемді позициялық кодтау үшін қолданылуы мүмкін. Сенсорға тікелей іргелес жатқан m x n матрицасын қарастырып және оның Де Брюйн торындағы орнын есептеу арқылы орын анықталады.
de Bruijn кодтау
Де Брюйн тізбегі немесе торындағы нақты бір бірегей топтық немесе матрицаның орнын анықтау де Брюйн декодтау мәселесі деп аталады. Арнайы, рекурсивті түрде құрылған тізбектер үшін тиімді O(n log n) декодтау алгоритмдері бар, және олар екі өлшемді жағдайға дейін қолданылады. Де Брюйн декодтау, мысалы, үлкен тізбектер немесе торлар позициялық кодтау үшін қолданылатын жағдайларда қызығушылық тудырады.