DeBruijnSequence[list,n]
gives a de Bruijn sequence on the elements in list taken n at a time.
DeBruijnSequence[k,n]
gives a de Bruijn sequence on the elements 0,…,k-1.
DeBruijnSequence["string",n]
gives a de Bruijn sequence on the characters in "string".
DeBruijnSequence
DeBruijnSequence[list,n]
gives a de Bruijn sequence on the elements in list taken n at a time.
DeBruijnSequence[k,n]
gives a de Bruijn sequence on the elements 0,…,k-1.
DeBruijnSequence["string",n]
gives a de Bruijn sequence on the characters in "string".
Examples
open all close allBasic Examples (3)
Generate a de Bruijn sequence of order 2 on the list {0,1}:
DeBruijnSequence[{0, 1}, 2]A de Bruijn sequence of order 3:
DeBruijnSequence[{0, 1}, 3]Return a de Bruijn sequence on the elements 0,…,3:
DeBruijnSequence[4, 2]Generate a de Bruijn sequence on a string:
DeBruijnSequence["abcd", 2]Applications (1)
Properties & Relations (8)
A de Bruijn sequence of order 1 on a list is the list itself:
DeBruijnSequence[{a, b, c, d}, 1]DeBruijnSequence keeps duplicate elements in the list:
DeBruijnSequence[{1, 2, 2}, 3]DeBruijnSequence[{1, 2}, 3]The ordering of the input list determines the ordering of the de Bruijn sequence:
DeBruijnSequence[{2, 3, 1}, 2]DeBruijnSequence[{3, 1, 2}, 2]For an ordered list, the first de Bruijn sequence in lexicographic order is returned:
DeBruijnSequence[{1, 2, 3}, 2]DeBruijnSequence[k,n] returns a list of length
:
k = 4;
n = 2;Length[DeBruijnSequence[k, n]] == k ^ nThe subsequences of length n in DeBruijnSequence[k,n] form all possible n-tuples on the elements 0,…,k-1:
k = 3;
n = 2;
dBS = DeBruijnSequence[k, n]subsequences = Partition[dBS, n, 1, {1, 1}]Sort[subsequences] === Tuples[Range[0, k - 1], n]Construct a binary de Bruijn sequence of order 4:
k = 2;
n = 4;
DeBruijnSequence[k, n]Construct all contiguous subsequences of length 4 with offset 1, and cycling through the end:
subsequences = Partition[%, n, 1, {1, 1}]These subsequences can be obtained from an Eulerian cycle of a {k,n-1} de Bruijn graph:
names = Range[k ^ (n - 1)];
rules = Thread[names -> IntegerString[names - 1, k, n - 1]]g = VertexReplace[DeBruijnGraph[k, n - 1, VertexShapeFunction -> "Name"], rules]cycle = First[FindEulerianCycle[g]]For a given edge of the cycle, a subsequence is obtained by joining the digits of the name of the starting vertex to the last digit of the name of the ending vertex:
Manipulate[
Labeled[
HighlightGraph[g, Style[cycle[[step]], Red, Thick], ImageSize -> 200],
MapAt[Style[#, Red, Bold]&, subsequences, step]
],
{step, 1, Length[cycle], 1, Appearance -> "Open"},
SaveDefinitions -> True
]Construct a binary de Bruijn sequence of order 3:
k = 2;
n = 3;
DeBruijnSequence[k, n]Construct all contiguous subsequences of length 3 with offset 1, and cycling through the end:
subsequences = Partition[%, n, 1, {1, 1}]These subsequences can be obtained from a Hamiltonian cycle of a {k,n} de Bruijn graph:
names = Range[k ^ n];
rules = Thread[names -> IntegerString[names - 1, k, n]]g = VertexReplace[DeBruijnGraph[k, n, VertexLabels -> rules], rules]cycle = First[FindHamiltonianCycle[g]]For a given edge of the cycle, a subsequence is obtained from the digits of the name of the starting vertex:
Manipulate[
Labeled[
HighlightGraph[g, cycle[[step, 1]], VertexSize -> 0.13, ImageSize -> 200],
MapAt[Style[#, Red, Bold]&, subsequences, step]
],
{step, 1, Length[cycle], 1, Appearance -> "Open"},
SaveDefinitions -> True
]Use ShiftRegisterSequence to generate a binary de Bruijn sequence:
n = 4;
dBS = Prepend[ShiftRegisterSequence[n], 0]Check that the subsequences of length n form all possible n-tuples on the elements
and
:
Sort[Partition[dBS, n, 1, {1, 1}]] === Tuples[{0, 1}, n]Related Guides
Related Links
History
Text
Wolfram Research (2018), DeBruijnSequence, Wolfram Language function, https://reference.wolfram.com/language/ref/DeBruijnSequence.html.
CMS
Wolfram Language. 2018. "DeBruijnSequence." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/DeBruijnSequence.html.
APA
Wolfram Language. (2018). DeBruijnSequence. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DeBruijnSequence.html
BibTeX
@misc{reference.wolfram_2026_debruijnsequence, author="Wolfram Research", title="{DeBruijnSequence}", year="2018", howpublished="\url{https://reference.wolfram.com/language/ref/DeBruijnSequence.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_debruijnsequence, organization={Wolfram Research}, title={DeBruijnSequence}, year={2018}, url={https://reference.wolfram.com/language/ref/DeBruijnSequence.html}, note=[Accessed: 12-June-2026]}