Suite de de Bruijn
En mathématiques, et notamment en combinatoire et en informatique théorique, une suite de de Bruijn ou un mot de de Bruijn est un mot circulaire ou collier particulier qui a la propriété de contenir toutes les sous-suites consécutives (ou facteurs) d'une longueur donnée une et une seule fois. Les suites sont nommées d'aprÚs le mathématicien néerlandais Nicolaas Govert de Bruijn qui a contribué à leur étude.
DĂ©finition
Formellement une suite de de Bruijn d'ordre n sur k symboles est un mot circulaire ou collier sur un alphabet A Ă k symboles qui contient toutes les suites de longueur n sur A une et une seule fois. Une telle suite de de Bruijn est de longueur kn. Il existe
suites de de Bruijn distinctes sur k symboles et d'ordre n. Comme la suite est considérée circulairement, les quatre mots
- 0011 0110 1100 1001
dĂ©finissent la mĂȘme suite de de Bruijn.
Exemples
- Pour un alphabet Ă deux symboles 0 et 1, il existe deux suites de de Bruijn d'ordre 3, qui sont :
- 00010111 et 11101000.
La deuxiĂšme est l'opposĂ©e (0 â 1) de la premiĂšre (et aussi sa retournĂ©e). On ne distingue pas des suites qui se dĂ©duisent l'une de l'autre par permutation circulaire. Leur nombre est celui donnĂ© par la formule Ă©noncĂ©e ci-dessus.
- Toujours pour deux symboles, il y a 2048 suites d'ordre 5, parmi lesquelles :
- 00000100011001010011101011011111 et 00000101001000111110111001101011.
Historique
D'aprĂšs un rapport interne de Nicolaas Govert de Bruijn[1], l'existence de suites de de Bruijn de tout ordre a Ă©tĂ© dĂ©montrĂ© d'abord par Camille Flye Sainte-Marie en 1894[2] pour un alphabet binaire, et dans le cas gĂ©nĂ©ral par Tatiana van Aardenne-Ehrenfest et lui-mĂȘme en 1951[3].
Knuth, dans son volume 4A[4], mentionne de trĂšs anciens emplois de suites de de Bruijn en Inde. Plus prĂšs de nous, en 1894, A. de RiviĂšre posait la question de l'existence d'une suite de de Bruijn binaire dans le journal L'IntermĂ©diaire des MathĂ©maticiens, un journal de mathĂ©matiques pour amateurs Ă©clairĂ©s, et Camille Flye Sainte-Marie rĂ©solvait le problĂšme la mĂȘme annĂ©e[1] avec la formule d'Ă©numĂ©ration . Ce rĂ©sultat a Ă©tĂ© oubliĂ©, et Martin 1934 a dĂ©montrĂ© l'existence de tels mots circulaires sur un alphabet gĂ©nĂ©ral, avec un algorithme de construction. Enfin, Kees Posthumus (en) a posĂ© le problĂšme en 1944 et a aussi conjecturĂ© la formule pour des suites binaires. De Bruijn enfin a dĂ©montrĂ© la conjecture en 1946, et c'est grĂące Ă lui que le problĂšme est devenu universellement connu[1].
Karl Popper a dĂ©crit les mĂȘmes objets indĂ©pendamment dans un livre paru en 1934[5] oĂč il les appelle shortest random-like sequences (« plus courtes sĂ©quences pseudo-alĂ©atoires »).
Constructions
Les suites de de Bruijn peuvent ĂȘtre construites en suivant une chaĂźne hamiltonienne dans un graphe de de Bruijn d'ordre n sur k symboles ou, de maniĂšre Ă©quivalente, un cycle eulĂ©rien dans un graphe de de Bruijn d'ordre n-1. Pour la construction avec le cycle eulĂ©rien, on note alors les Ă©tiquettes des arĂȘtes traversĂ©es.
Une autre construction, plus surprenante, consiste à concaténer en ordre lexicographique tous les mots de Lyndon dont la longueur divise n[6]. Ainsi, pour n=4, la concaténation des mots de Lyndon
- 0 0001 0011 01 0111 1
donne le mot de de Bruijn 0000100110101111. Cette construction est linéaire en temps et logarithmique en place parce qu'il existe un algorithme efficace, linéaire en temps et en place, pour engendrer les mots de Lyndon.
Encore une autre construction est au moyen de registres à décalage[7] et basée sur les corps finis[8]. Knuth[9] consacre une partie de la section 7.2.1.1 de son volume 4A à des techniques de construction de suites de de Bruijn.
Exemple détaillé
Pour construire une suite de de Bruijn binaire d'ordre 4, de longueur 24 = 16, contenant les 16 mots binaires de longueur 4, on peut utiliser un circuit eulérien dans le graphe de de Bruijn B(2,3) de la figure.
Chaque arc de ce graphe est formé de quatre bits : les trois premiers sont l'étiquette du sommet de départ, les trois derniers ceux du sommet d'arrivée. Voici un chemin eulérien du graphe (écrit sur deux lignes).
- 000, 000, 001, 011, 111, 111, 110, 101,
011, 110, 100, 001, 010, 101, 010, 100.
Chaque sommet est visité deux fois, puisqu'il y a deux arcs entrants (et aussi deux arcs sortants). En retenant chaque fois le premier bit du code du sommet, on obtient le mot de de Bruijn :
- 0 0 0 0 1 1 1 1 0 1 1 0 0 1 0 1
On aurait aussi bien pu garder le dernier bit, et alors on obtient :
- 0 0 1 1 1 1 0 1 1 0 0 1 0 1 0 0
On peut Ă©galement utiliser un circuit hamiltonien, et on obtient alors une suite de de Bruijn d'ordre 3.
Variantes
Une méthode simple pour trouver le bon cheminement consiste par exemple à choisir systématiquement l'arc qui porte l'étiquette qui se termine par 1. C'est une des méthodes présentées dans un article du American Mathematical Monthly[10] :
Algorithme « prefer one »
- Commencer avec une suite de n zéros
- Essayer d'ajouter un 1 Ă la suite. Si les n derniers bits nâont pas Ă©tĂ© rencontrĂ©s auparavant, accepter et rĂ©pĂ©ter l'Ă©tape 2, sinon passer Ă l'Ă©tape suivante.
- Essayer d'ajouter un 0 Ă la suite. Si les n derniers bits nâont pas Ă©tĂ© rencontrĂ©s auparavant, accepter et rĂ©pĂ©ter l'Ă©tape 2; sinon arrĂȘter.
Pour n = 3, cette méthode produit successivement les suites :
- 000
- 0001 (001 est nouveau)
- 00011 (011 est nouveau)
- 000111 (111 est nouveau)
- 0001110 (111 déjà vu, mais 110 est nouveau)
- 00011101 (101 est nouveau)
- 000111010 (011 déjà vu, mais 010 est nouveau)
- 0001110100 (100 est nouveau)
- fin( 001 et 000 sont déjà vus).
Algorithme « prefer opposite »
Une autre façon dâengendrer la sĂ©quence est lâalgorithme « prefer opposite ». Cet algorithme est similaire au prĂ©cĂ©dent, mais au lieu dâessayer dâajouter le bit 1 Ă chaque Ă©tape, on essaye de continuer par le bit opposĂ© au dernier bit de la suite. En cas d'Ă©chec, on essaie d'ajouter le mĂȘme bit, et si on Ă©choue encore, lâalgorithme se termine.
Cette procédure, cependant, ne produit pas le mot formé uniquement de 1. La rÚgle est donc modifiée comme suit : si la suite se termine par n-1 fois 1, et dans ce cas seulement, ajouter 1.
Pour n = 3, cette méthode produit successivement les suites :
- 000
- 0001 (001 est nouveau)
- 00010 (010 est nouveau)
- 000101 (101 est nouveau)
- 0001011 (010 déjà vu mais 011 est nouveau)
- 00010111 (on privilégie 1 pour obtenir 111)
- 000101110 (110 est nouveau)
- 0001011100 (101 déjà vu mais 100 est nouveau)
- fin (001 et 000 déjà vu)
Un autre algorithme simple
L'algorithme suivant[11] est basé sur une fonction f qui associe, à un mot binaire , un autre mot binaire selon la rÚgle (appelée « shift rule » ou « rÚgle de décalage ») :
Ici, un mot binaire est minimal[12] s'il est minimal parmi tous ses permutés circulaires. Par exemple, 0001, 0101, 1111 sont minimaux, 1000, 1010 ne le sont pas. En d'autres termes, un mot minimal est une puissance d'un mot de Lyndon.
La rÚgle de décalage est appliquée itérativement en commençant par un bloc formé de zéros. Pour n=5, on obtient
- 00000, 00001, 00011, 00111, 01111, 11111, 11110, 11101, 11011, 10111, 01110, 11100, 11001, 10011, 00110, 01100, 11000, 10001, 00010, 00101, 01011, 10110, 01101, 11010, 10101, 01010, 10100, 01001, 10010, 00100, 01000, 10000.
Si l'on prend les premiers bits de chacun des blocs, on obtient la suite de de Bruijn:
- 00000111110111001100010110101001
et les auteurs prouvent que c'est une suite de de Bruijn dans le cas général.
Extensions
Peut-on Ă©tendre un mot de de Bruijn d'ordre n en un mot d'ordre n+1 ? La rĂ©ponse est plus subtile que l'on ne pourrait supposer, parce qu'elle fait intervenir la taille de lâalphabet[13] :
Toute suite de de Bruijn binaire d'ordre n peut ĂȘtre Ă©tendue en une suite de de Bruijn d'ordre n+2. Toute suite de de Bruijn d'ordre n sur au moins trois symboles peut ĂȘtre Ă©tendue en une suite d'ordre n+1.
Il en résulte qu'il existe des suites de de Bruijn infinies ; elles sont définies comme des limites de suites de de Bruijn finies.
Une question similaire est la suivante : peut-on étendre une suite de de Bruijn d'ordre n sur k lettres en un mot d'ordre n sur k+1 lettres ? La réponse est là aussi, positive[14].
Applications
Parmi les « applications », on peut citer la méthode qui permet de trouver un digicode ; s'il est composé de 4 chiffres par exemple, il faudrait en principe tester toutes les 10 000 combinaisons, de longueur totale 40 000. En utilisant une suite de de Bruijn, il suffit de taper au plus 10 003 chiffres (les 3 derniers pour facteur qui chevauche le début).
Les suites de de Bruijn ont trouvĂ© des applications dans des expĂ©riences en neurosciences et en psychologie, dans l'Ă©tude des stimuli de systĂšme nerveux[15] et peuvent ĂȘtre adaptĂ©es pour l'usage dans l'imagerie par rĂ©sonance magnĂ©tique fonctionnelle[16].
Les symboles d'une suite de de Bruijn Ă©crits en cercle autour d'un objet circulaire (comme un disque) peuvent servir Ă identifier une angle en examinant n symboles consĂ©cutifs faisant face Ă un point donnĂ©. Des codes de Gray peuvent ĂȘtre utilisĂ©s Ă©galement dans ce cas.
Une suite de de Bruijn peut ĂȘtre employĂ©e pour trouver rapidement le bit de poids faible ou le bit de poids fort dans un mot en utilisant des opĂ©rations bit Ă bit[17] - [18].
Generalisations
Tore de de Bruijn
Un tore de de Bruijn (en) est un tableau toroïdal qui a la propriété que toute matrice d'ordre m x n dont les éléments peuvent prendre k valeurs y apparaßt exactement une fois.
On peut utiliser un tel dispositif pour coder une matrice par le couple d'indices indiquant sa position dans le tore de de Bruijn.
Le calcul de la position de l'unique occurrence d'un mot ou d'une matrice dans une suite ou dans un tore de de Bruijn est connu sous le nom de problÚme de décodage de de Bruijn. Des algorithmes efficaces en complexité existent pour certaines suites particuliÚres construites par récurrence[19] et s'étendent au cas bidimensionnel[20].
Suite généralisée
Une suite de de Bruijn généralisée avec les paramÚtres est une suite cyclique de bits telle que chaque facteur de longueur figure au plus fois[21]. Une telle suite est dite équilibrée si elle contient autant de 0 que de 1.
Une suite de de Bruijn usuelle d'ordre est une suite de de Bruijn généralisée avec les paramÚtres . Une telle suite est toujours équilibrée. Le résultat principal de Baker et al. 2023 caractérise les paramÚtres pour lesquels il existe une suite de Bruijn généralisée équilibrée avec des paramÚtres . Les auteurs prouvent que, pour des entiers positifs et , il existe une suite de Bruijn généralisée équilibrée avec les paramÚtres si et seulement si est pair et
Notes et références
- De Bruijn 1975.
- Flye Sainte-Marie 1894
- Aardenne-Ehrenfest, de Bruijn 1951.
- Knuth, Combinatorial Algorithms, Part 1, Section 7.2.1.7 : History and further references, Indian prosody, p. 487-489.
- Popper 1934, p. 294.
- D'aprÚs Berstel et Perrin 2007, la séquence construite de cette maniÚre a été décrite, de façon différente, par Martin 1934, et la connexion entre cette suite et les mots de Lyndon a été observée par Fredricksen et Maiorana 1978. La propriété que cette suite est lexicographiquement minimale, est énoncée, mais n'est pas démontrée. Une démonstration a été fournie dans Moreno et Perrin 2015.
- Goresky et Klapper 2012, 8.2.5 Shift register generation of de Bruijn sequences.
- Ralston 1982, p. 136-139.
- Knuth, Shift register sequences, p. 302-308 et Exercices p. 316-318.
- Alhakim 2010.
- Sawada et WilliamsWong 2016.
- Les auteurs de l'article disent « necklace », mais ce mot « collier » signifie usuellement « mot circulaire ».
- Becher et Heiber 2011.
- Schwartz, Svoray et Weiss 2019.
- G. K. Aguirre, M. G. Mattar, L. Magis-Weinberg, « de Bruijn cycles for neural decoding », NeuroImage, vol. 56,â , p. 1293â1300 (lire en ligne).
- « De Bruijn cycle generator »
- Sean Eron Anderson, « Bit Twiddling Hacks », Stanford University, 1997â2009 (consultĂ© le )
- Philip Busch, « Computing Trailing Zeros HOWTO », (consulté le )
- Tuliani 2001.
- Hurlbert et Isaak 1993.
- Baker et al. 2023.
Bibliographie
- Camille Flye Sainte-Marie, « Question 48 », L'intermĂ©diaire des MathĂ©maticiens, vol. 1,â , p. 107â110
- Tatiana van Aardenne-Ehrenfest et Nicolaas Govert de Bruijn, « Circuits and trees in oriented linear graphs », Simon Stevin, vol. 28,â , p. 203â217 (MR 0047311, lire en ligne).
- Abbas M. Alhakim, « A Simple Combinatorial Algorithm for de Bruijn Sequences », The American Mathematical Monthly, vol. 117, no 8,â , p. 728-732 (DOI 10.4169/000298910x515794, JSTOR 10.4169/000298910x515794)
- Gal Amram et Amir Rubin, « An efficient generalized shift-rule for the prefer-max De Bruijn sequence », Discrete Mathematics, vol. 343, no 2,â , article no 111657 (DOI 10.1016/j.disc.2019.111657)
- Gal Amram, Yair Ashlagi, Amir Rubin, Yotam Svoray, Moshe Schwartz et Gera Weiss, « An efficient shift rule for the prefer-max De Bruijn sequence », Discrete Mathematics, vol. 342, no 1,â , p. 226â232 (DOI 10.1016/j.disc.2018.09.024)
- Matthew Baker, Bhumika Mittal, Haran Mouli et Eric Tang, « On the existence of balanced generalized de Bruijn sequences », Discrete Mathematics, vol. 346, no 9,â , article no 113487 (DOI 10.1016/j.disc.2023.113487, arXiv 2201.11863)
- VerĂłnica Becher et Pablo Ariel Heiber, « On extending de Bruijn sequences », Information Processing Letters, vol. 111, no 18,â , p. 930â932 (MR 2849850)
- Jean Berstel et Dominique Perrin, « The origins of combinatorics on words », Journal europĂ©en de combinatoire, vol. 28, no 3,â , p. 996â1022 (DOI 10.1016/j.ejc.2005.07.019, MR 2300777, lire en ligne).
- Nicolaas Govert de Bruijn, « A combinatorial problem », Proc. Koninklijke Nederlandse Akademie v. Wetenschappen, vol. 49,â , p. 758â764 (MR 0018142, lire en ligne).
- Nicolaas Govert de Bruijn, « Acknowledgement of Priority to C. Flye Sainte-Marie on the counting of circular arrangements of 2n zeros and ones that show each n-letter word exactly once », T.H.-Report 75-WSK-06, Technological University Eindhoven,â (lire en ligne).
- Patrick Baxter Dragon, Oscar I. Hernandez, Joe Sawada, Aaron Williams et Dennis Wong, « Constructing de Bruijn sequences with co-lexicographic order: The k-ary Grandmama sequence », European Journal of Combinatorics, vol. 72,â , p. 1â11 (DOI 10.1016/j.ejc.2018.03.006).
- Harold Fredricksen et James Maiorana, « Necklaces of beads in k colors and k-ary de Bruijn sequences », Discrete Mathematics, vol. 23, no 3,â , p. 207â210 (DOI 10.1016/0012-365X(78)90002-X, MR 523071).
- Daniel Gabric, Joe Sawada, Aaron Williams et Dennis Wong, « A framework for constructing de Bruijn sequences via simple successor rules », Discrete Mathematics, vol. 341, no 11,â , p. 2977-2987 (DOI 10.1016/j.disc.2018.07.010)
- Mark Goresky et Andrew Klapper, Algebraic Shift Register Sequences, Cambridge University Press, , 498 p. (ISBN 978-1-107-01499-2 et 1107014999, lire en ligne).
- Glenn Hurlbert et Garth Isaak, « On the de Bruijn torus problem », Journal of Combinatorial Theory, vol. 64 « Series A », no 1,â , p. 50â62 (DOI 10.1016/0097-3165(93)90087-O, MR 1239511, lire en ligne).
- Donald E. Knuth, The Art of Computer Programming, vol. 4A : Combinatorial Algorithms, Part 1, Addison-Wesley, (ISBN 978-0-201-03804-0 et 0-201-03804-8, présentation en ligne)
- Monroe H. Martin, « A problem in arrangements », Bulletin of the American Mathematical Society, vol. 40, no 12,â , p. 859â864 (DOI 10.1090/S0002-9904-1934-05988-3, MR 1562989, lire en ligne).
- Eduardo Moreno et Dominique Perrin, « Corrigendum to "On the theorem of Fredricksen and Maiorana about de Bruijn sequences" [Adv. in Appl. Math. 33 (2) (2004) 413-415] », Advances in Applied Mathematics, vol. 62,â , p. 184-187 (DOI 10.1016/j.aam.2003.10.002).
- Karl Popper, The Logic of Scientific Discovery, Routledge, (1re Ă©d. 1934), 513 p. (ISBN 978-0-415-27843-0, lire en ligne)
- Anthony Ralston, « de Bruijn sequencesâa model example of the interaction of discrete mathematics and computer science », Mathematics Magazine, vol. 55, no 3,â , p. 131â143 (DOI 10.2307/2690079, MR 653429).
- Joe Sawada, Aaron Williams et Dennis Wong, « A surprisingly simple de Bruijn sequence construction », Discrete Mathematics, vol. 339, no 1,â , p. 127-131 (DOI 10.13039/501100000038).
- Moshe Schwartz, Yotam Svoray et Gera Weiss, « On embedding De Bruijn sequences by increasing the alphabet size », Arxiv,â (arXiv 1906.06157).
- Jonathan Tuliani, « de Bruijn sequences with efficient decoding algorithms », Discrete Mathematics, vol. 226, nos 1-3,â , p. 313â336 (DOI 10.1016/S0012-365X(00)00117-5, MR 1802599).
- Yu Hin Au, « Generalized de Bruijn words for primitive words and powers », Discrete Mathematics, vol. 338, no 12,â , p. 2320-2331 (DOI 10.13039/501100000038, arXiv 0904.3997)
Articles liés
Liens externes
- Articles
- (en) Eric W. Weisstein, « de Bruijn Sequence », sur MathWorld
- suite A166315 de l'OEIS Lexicographically smallest binary de Bruijn sequences
- De Bruijn sequence
- Programmes
- « Combinatorial Object Server »(Archive.org ⹠Wikiwix ⹠Archive.is ⹠Google ⹠Que faire ?), contient un générateur de suites de de Bruijn.
- Générateur par produit de mots de Lyndon (CGI)
- Générateur par produit de mots de Lyndon (Java).
- Générateur et décodeur de suites de de Bruijn. Implémentation de l'algorithme de Jonathan Tuliani.
- Minimal arrays containing all sub-array combinations of symbols: De Bruijn sequences and tori