DeBruijnSequence[list,n]
给出 list 上元素的 de Bruijn 序列,一次取 n 个.
DeBruijnSequence[k,n]
给出元素 0,…,k-1 上的 de Bruijn 序列.
DeBruijnSequence["string",n]
给出 "string" 字符上的 de Bruijn 序列.
DeBruijnSequence
DeBruijnSequence[list,n]
给出 list 上元素的 de Bruijn 序列,一次取 n 个.
DeBruijnSequence[k,n]
给出元素 0,…,k-1 上的 de Bruijn 序列.
DeBruijnSequence["string",n]
给出 "string" 字符上的 de Bruijn 序列.
范例
打开所有单元 关闭所有单元基本范例 (3)
应用 (1)
属性和关系 (8)
DeBruijnSequence[{a, b, c, d}, 1]DeBruijnSequence 保留列表中的重复元素:
DeBruijnSequence[{1, 2, 2}, 3]DeBruijnSequence[{1, 2}, 3]DeBruijnSequence[{2, 3, 1}, 2]DeBruijnSequence[{3, 1, 2}, 2]对于已排序的列表,返回字典排序中的第一个 de Bruijn 序列:
DeBruijnSequence[{1, 2, 3}, 2]DeBruijnSequence[k,n] 返回长度为
的列表:
k = 4;
n = 2;Length[DeBruijnSequence[k, n]] == k ^ nDeBruijnSequence[k,n] 中长度为 n 的子序列形成 0,…,k-1 元素上所有可能的 n 元祖:
k = 3;
n = 2;
dBS = DeBruijnSequence[k, n]subsequences = Partition[dBS, n, 1, {1, 1}]Sort[subsequences] === Tuples[Range[0, k - 1], n]k = 2;
n = 4;
DeBruijnSequence[k, n]构建偏移量为 1,长度为 4 的所有邻近子序列,并循环至结尾:
subsequences = Partition[%, n, 1, {1, 1}]这些子序列可以用 {k,n-1} de Bruijn 图的欧拉圈获取:
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]]对于给定的圈的边,子序列是通过连接起始点的名称数字和结束点的名称的最后数字获得:
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
]k = 2;
n = 3;
DeBruijnSequence[k, n]构建偏移量为 1,长度为 3 的所有邻近子序列,并循环至结尾:
subsequences = Partition[%, n, 1, {1, 1}]这些子序列可以从 {k,n} de Bruijn 图的哈密尔顿圈获得:
names = Range[k ^ n];
rules = Thread[names -> IntegerString[names - 1, k, n]]g = VertexReplace[DeBruijnGraph[k, n, VertexLabels -> rules], rules]cycle = First[FindHamiltonianCycle[g]]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
]使用 ShiftRegisterSequence 产生二进制 de Bruijn 序列:
n = 4;
dBS = Prepend[ShiftRegisterSequence[n], 0]检查长度 n 的子序列在元素
和
上形成所有可能的 n-元祖:
Sort[Partition[dBS, n, 1, {1, 1}]] === Tuples[{0, 1}, n]相关指南
-
▪
- 组合函数
相关链接
文本
Wolfram Research (2018),DeBruijnSequence,Wolfram 语言函数,https://reference.wolfram.com/language/ref/DeBruijnSequence.html.
CMS
Wolfram 语言. 2018. "DeBruijnSequence." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/DeBruijnSequence.html.
APA
Wolfram 语言. (2018). DeBruijnSequence. Wolfram 语言与系统参考资料中心. 追溯自 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: 09-July-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: 09-July-2026]}