DeBruijnSequence[list,n]
list 中の要素を一度に n ずつ取り出したde Bruijn列を与える.
DeBruijnSequence[k,n]
要素0,…,k-1についてのde Bruijn列を与える.
DeBruijnSequence["string",n]
"string"中の文字についてのde Bruijn列を与える.
DeBruijnSequence
DeBruijnSequence[list,n]
list 中の要素を一度に n ずつ取り出したde Bruijn列を与える.
DeBruijnSequence[k,n]
要素0,…,k-1についてのde Bruijn列を与える.
DeBruijnSequence["string",n]
"string"中の文字についてのde Bruijn列を与える.
例題
すべて開く すべて閉じる例 (3)
アプリケーション (1)
特性と関係 (8)
リストに対する一次de Bruijn列はリストそのものである:
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]長さ4の隣接する部分列すべてをオフセット1で構築し,最後まで繰り返す:
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]長さ3の隣接する部分列すべてをオフセット1で構築し,最後まで繰り返す:
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 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-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: 12-July-2026]}