ランダムサンプリングアルゴリズム
ボルツマン サンプラーは、 組み合わせ構造 の ランダムサンプリング を目的としたアルゴリズムです。オブジェクトのサイズをそのエネルギーと見なし、対応する生成関数の引数を物理システムの温度の観点から解釈すると、ボルツマンサンプラーは古典的な ボルツマン分布 からオブジェクトを返します 。
ボルツマンサンプラーの概念は、2004年にフィリップ・デュション、 フィリップ・フラジョレ 、ガイ・ルシャール、ジル・シェッファーによって提案されました。 [1]
説明
ボルツマンサンプリングの概念は、組合せ論における 記号的方法 と密接に関連しています。を 、収束半径がゼロでない 、つまり 複素解析的 な通常の 生成関数を持つ 組合せクラス とします 。正式に言えば、各オブジェクトが
非負の整数 サイズ を備えている場合、生成関数は次 のように定義されます。
C
{\displaystyle {\mathcal {C}}}
C
(
ず
)
{\displaystyle C(z)}
ρ
{\displaystyle \rho}
c
∈
C
{\displaystyle c\in {\mathcal {C}}}
ω
(
c
)
{\displaystyle \omega (c)}
C
(
ず
)
{\displaystyle C(z)}
C
(
ず
)
=
∑
c
∈
C
ず
ω
(
c
)
=
∑
ん
=
0
∞
1つの
ん
ず
ん
、
{\displaystyle C(z)=\sum _{c\in {\mathcal {C}}}z^{\omega (c)}=\sum _{n=0}^{\infty }a_{n} z^{n},}
ここで、 は サイズ の オブジェクトの数を表します 。サイズ関数は通常、ツリーまたはグラフ内の頂点の数、単語内の文字数などを表すために使用されます。
1つの
ん
{\displaystyle a_{n}}
c
∈
C
{\displaystyle c\in {\mathcal {C}}}
ん
{\displaystyle n}
クラスの ボルツマン サンプラーは 、 と 表さ れ
、
確率
C
{\displaystyle {\mathcal {C}}}
ず
{\displaystyle z}
0
<
ず
<
ρ
{\displaystyle 0<z<\rho }
Γ
C
(
ず
)
{\displaystyle \Gamma {\mathcal {C}}(z)}
c
∈
C
{\displaystyle c\in {\mathcal {C}}}
ポ
(
Γ
C
(
ず
)
=
c
)
=
ず
ω
(
c
)
C
(
ず
)
。
{\displaystyle \mathbb {P} (\Gamma {\mathcal {C}}(z)=c)={\dfrac {z^{\omega (c)}}{C(z)}}.}
工事
有限集合
が有限である場合 、要素は に比例する確率で抽出されます 。
C
=
{
c
1
、
…
、
c
r
}
{\displaystyle {\mathcal {C}}=\{c_{1},\ldots ,c_{r}\}}
c
じゅう
{\displaystyle c_{j}}
ず
ω
(
c
じゅう
)
{\displaystyle z^{\omega (c_{j})}}
不連続和集合
対象クラスが他の2つのクラスの互いに素な和集合であり、 およびの 生成関数 と が 既知である場合、に対するボルツマンサンプラーは 次のように得られる。
C
=
あ
+
B
{\displaystyle {\mathcal {C}}={\mathcal {A}}+{\mathcal {B}}}
あ
(
ず
)
{\displaystyle A(z)}
B
(
ず
)
{\displaystyle B(z)}
あ
{\displaystyle {\mathcal {A}}}
B
{\displaystyle {\mathcal {B}}}
C
{\displaystyle {\mathcal {C}}}
(
ベルン
(
あ
(
ず
)
C
(
ず
)
)
⟶
Γ
あ
(
ず
)
∣
Γ
B
(
ず
)
)
{\displaystyle \left(\operatorname {Bern} \left({\frac {A(z)}{C(z)}}\right)\longrightarrow \Gamma {\mathcal {A}}(z)\mid \Gamma {\mathcal {B}}(z)\right)}
ここで、 は 「ランダム変数 が 1 の場合は を実行し、それ 以外の場合は を実行する 」を表します。より一般的には、分離した和集合が有限集合上で取られる場合、結果として得られるボルツマン サンプラーは、生成関数の値に比例する確率を持つランダム選択を使用して表すことができます。
(
バツ
⟶
ふ
∣
グ
)
{\displaystyle (X\longrightarrow f\mid g)}
バツ
{\displaystyle X}
ふ
{\displaystyle f}
グ
{\displaystyle g}
デカルト積
が、および の 順序付きペアから構成されるクラスである 場合 、対応するボルツマンサンプラーは次 のように得られる。
C
=
あ
×
B
{\displaystyle {\mathcal {C}}={\mathcal {A}}\times {\mathcal {B}}}
(
1つの
、
b
)
{\displaystyle (a,b)}
1つの
∈
あ
{\displaystyle a\in {\mathcal {A}}}
b
∈
B
{\displaystyle b\in {\mathcal {B}}}
Γ
C
(
ず
)
{\displaystyle \Gamma {\mathcal {C}}(z)}
Γ
C
(
ず
)
=
(
Γ
あ
(
ず
)
、
Γ
B
(
ず
)
)
、
{\displaystyle \Gamma {\mathcal {C}}(z)=(\Gamma {\mathcal {A}}(z),\Gamma {\mathcal {B}}(z)),}
つまり、と を 、 および から独立して描画して ペア を形成することによって 。
(
1つの
、
b
)
{\displaystyle (a,b)}
1つの
{\displaystyle a}
b
{\displaystyle b}
Γ
A
(
z
)
{\displaystyle \Gamma {\mathcal {A}}(z)}
Γ
B
(
z
)
{\displaystyle \Gamma {\mathcal {B}}(z)}
順序
が、要素のサイズから加算的に継承されたシーケンスのサイズを持つ の要素の有限シーケンスすべてで構成されている 場合、 の生成関数 は と表現されます
。 ここで、 は の生成関数です 。 あるいは、 クラスは 再帰表現を許可します。 これにより、 には 2 つの可能性があります 。
C
{\displaystyle {\mathcal {C}}}
A
{\displaystyle {\mathcal {A}}}
C
{\displaystyle {\mathcal {C}}}
C
(
z
)
=
∑
k
=
0
∞
A
(
z
)
k
=
1
1
−
A
(
z
)
{\displaystyle C(z)=\sum _{k=0}^{\infty }A(z)^{k}={\dfrac {1}{1-A(z)}}}
A
(
z
)
{\displaystyle A(z)}
A
{\displaystyle {\mathcal {A}}}
C
{\displaystyle {\mathcal {C}}}
C
=
1
+
A
×
C
.
{\displaystyle {\mathcal {C}}=1+{\mathcal {A}}\times {\mathcal {C}}.}
Γ
C
(
z
)
{\displaystyle \Gamma {\mathcal {C}}(z)}
Γ
C
(
z
)
=
Γ
(
1
+
A
×
C
)
(
z
)
=
(
Bern
(
1
C
(
z
)
)
⟶
1
|
(
Γ
A
(
z
)
,
Γ
C
(
z
)
)
)
{\displaystyle \Gamma {\mathcal {C}}(z)=\Gamma (1+{\mathcal {A}}\times {\mathcal {C}})(z)=\left(\operatorname {Bern} \left({\frac {1}{C(z)}}\right)\longrightarrow 1\,{\Big |}\,(\Gamma {\mathcal {A}}(z),\Gamma {\mathcal {C}}(z))\right)}
Γ
C
(
z
)
=
(
Geom
(
A
(
z
)
)
⟹
Γ
C
(
z
)
)
{\displaystyle \Gamma {\mathcal {C}}(z)=\left(\operatorname {Geom} (A(z))\Longrightarrow \Gamma {\mathcal {C}}(z)\right)}
ここで、は 「ランダム変数を描画し 、値 が返された場合は 独立して回実行し 、得られたシーケンスを返す」を表します。ここで、は 幾何分布を表します 。
(
X
⟹
f
)
{\displaystyle (X\Longrightarrow f)}
X
{\displaystyle X}
X
=
x
{\displaystyle X=x}
f
{\displaystyle f}
x
{\displaystyle x}
Geom
(
p
)
{\displaystyle \operatorname {Geom} (p)}
P
(
Geom
(
p
)
=
k
)
=
p
k
(
1
−
p
)
{\displaystyle \mathbb {P} (\operatorname {Geom} (p)=k)=p^{k}(1-p)}
再帰クラス
シーケンス演算子の最初の構成が示唆するように、ボルツマンサンプラーは再帰的に使用できます。ターゲットクラス がシステムの一部である
場合
C
{\displaystyle {\mathcal {C}}}
{
C
1
=
Φ
1
(
C
1
,
…
,
C
n
,
Z
)
,
⋮
C
n
=
Φ
n
(
C
1
,
…
,
C
n
,
Z
)
,
{\displaystyle {\begin{cases}{\mathcal {C}}_{1}=\Phi _{1}({\mathcal {C}}_{1},\ldots ,{\mathcal {C}}_{n},{\mathcal {Z}}),\\\qquad \vdots \\{\mathcal {C}}_{n}=\Phi _{n}({\mathcal {C}}_{1},\ldots ,{\mathcal {C}}_{n},{\mathcal {Z}}),\end{cases}}}
ここで、各式には 分離和、直積、およびシーケンス演算子のみが含まれるため、対応するボルツマンサンプラーは明確に定義されます。引数値が与えられた場合 、生成関数の数値はニュートン反復によって取得できます。 [2]
Φ
k
(
C
1
,
…
,
C
n
,
Z
)
{\displaystyle \Phi _{k}({\mathcal {C}}_{1},\ldots ,{\mathcal {C}}_{n},{\mathcal {Z}})}
z
{\displaystyle z}
ラベル付けされた構造
ボルツマンサンプリングはラベル付き構造 に適用できます 。ラベル付きの組み合わせクラスの場合 、代わりに 指数生成関数 が使用されます。
C
{\displaystyle {\mathcal {C}}}
C
(
z
)
=
∑
c
∈
C
z
ω
(
c
)
ω
(
c
)
!
=
∑
n
=
0
∞
a
n
z
n
n
!
,
{\displaystyle C(z)=\sum _{c\in {\mathcal {C}}}{\dfrac {z^{\omega (c)}}{\omega (c)!}}=\sum _{n=0}^{\infty }a_{n}{\dfrac {z^{n}}{n!}},}
ここで、 は サイズ の ラベル付きオブジェクトの数を表します 。直積とシーケンスの演算はラベル付けを考慮して調整する必要があり、構築の原則は同じままです。
a
n
{\displaystyle a_{n}}
c
∈
C
{\displaystyle c\in {\mathcal {C}}}
n
{\displaystyle n}
ラベル付きの場合、ラベル付きクラスのボルツマンサンプラーは、 確率で
オブジェクトを出力する必要がある。
C
{\displaystyle {\mathcal {C}}}
c
∈
C
{\displaystyle c\in {\mathcal {C}}}
P
(
Γ
C
(
z
)
=
c
)
=
1
C
(
z
)
z
ω
(
c
)
ω
(
c
)
!
.
{\displaystyle \mathbb {P} (\Gamma {\mathcal {C}}(z)=c)={\frac {1}{C(z)}}{\frac {z^{\omega (c)}}{\omega (c)!}}.}
ラベル付きセット
ラベル付けされた宇宙では、クラスは、順序一貫性のある再ラベル付けを持つ クラスのすべての有限要素集合から構成されます 。この場合、クラスの指数生成関数は 次のように記述されます。
C
{\displaystyle {\mathcal {C}}}
A
{\displaystyle {\mathcal {A}}}
C
{\displaystyle {\mathcal {C}}}
C
(
z
)
=
∑
k
=
0
∞
A
(
z
)
k
k
!
=
e
A
(
z
)
{\displaystyle C(z)=\sum _{k=0}^{\infty }{\dfrac {A(z)^{k}}{k!}}=e^{A(z)}}
ここで は クラスの指数生成関数である 。 のボルツマンサンプラーは 次のように記述できる。
A
(
z
)
{\displaystyle A(z)}
A
{\displaystyle {\mathcal {A}}}
C
{\displaystyle {\mathcal {C}}}
Γ
C
(
z
)
=
(
Poisson
(
A
(
z
)
)
⟹
Γ
C
(
z
)
)
{\displaystyle \Gamma {\mathcal {C}}(z)=\left(\operatorname {Poisson} (A(z))\Longrightarrow \Gamma {\mathcal {C}}(z)\right)}
ここで は 標準 ポアソン分布 を表します。
Poisson
(
λ
)
{\displaystyle \operatorname {Poisson} (\lambda )}
P
(
Poisson
(
λ
)
=
k
)
=
e
−
λ
λ
k
k
!
{\displaystyle \mathbb {P} (\operatorname {Poisson} (\lambda )=k)=e^{-\lambda }{\dfrac {\lambda ^{k}}{k!}}}
ラベル付きサイクル
巡回 構成では 、クラスは クラスの要素の有限シーケンスすべてから構成され 、2つのシーケンスは巡回シフトによって得られる場合は同等であるとみなされます。クラスの指数生成関数は 次のように記述されます。
C
{\displaystyle {\mathcal {C}}}
A
{\displaystyle {\mathcal {A}}}
C
{\displaystyle {\mathcal {C}}}
C
(
z
)
=
∑
k
=
0
∞
A
(
z
)
k
k
=
log
1
1
−
A
(
z
)
{\displaystyle C(z)=\sum _{k=0}^{\infty }{\frac {A(z)^{k}}{k}}=\log {\frac {1}{1-A(z)}}}
ここで は クラスの指数生成関数である 。 のボルツマンサンプラーは 次のように記述できる。
A
(
z
)
{\displaystyle A(z)}
A
{\displaystyle {\mathcal {A}}}
C
{\displaystyle {\mathcal {C}}}
Γ
C
(
z
)
=
(
Loga
(
A
(
z
)
)
⟹
Γ
C
(
z
)
)
{\displaystyle \Gamma {\mathcal {C}}(z)=\left(\operatorname {Loga} (A(z))\Longrightarrow \Gamma {\mathcal {C}}(z)\right)}
ここで、 は 対数分布 を表します 。
Loga
(
λ
)
{\displaystyle \operatorname {Loga} (\lambda )}
P
(
Loga
(
λ
)
=
k
)
=
1
log
(
1
−
λ
)
−
1
λ
k
k
{\displaystyle \mathbb {P} (\operatorname {Loga} (\lambda )=k)={\dfrac {1}{\log(1-\lambda )^{-1}}}{\dfrac {\lambda ^{k}}{k}}}
プロパティ
から生成されたオブジェクトのランダムなサイズを とします 。 すると、サイズは第1および第2のモーメントを満たします。
N
{\displaystyle N}
Γ
C
(
z
)
{\displaystyle \Gamma {\mathcal {C}}(z)}
E
z
(
N
)
=
z
C
′
(
z
)
C
(
z
)
;
{\displaystyle \mathbb {E} _{z}(N)=z{\dfrac {C'(z)}{C(z)}};}
E
z
(
N
2
)
=
z
2
C
″
(
z
)
+
z
C
′
(
z
)
C
(
z
)
;
{\displaystyle \mathbb {E} _{z}(N^{2})={\dfrac {z^{2}C''(z)+zC'(z)}{C(z)}};}
z
d
d
z
E
z
(
N
)
=
Var
z
(
N
)
{\displaystyle z{\dfrac {d}{dz}}\mathbb {E} _{z}(N)=\operatorname {Var} _{z}(N)}
。
例
バイナリツリー
二分木 の クラスは 再帰的な仕様によって定義できる。
B
{\displaystyle {\mathcal {B}}}
B
=
Z
+
Z
×
B
×
B
{\displaystyle {\mathcal {B}}={\mathcal {Z}}+{\mathcal {Z}}\times {\mathcal {B}}\times {\mathcal {B}}}
そしてその生成関数は 方程式を満たし
、二次方程式の解として評価できる。
B
(
z
)
{\displaystyle B(z)}
B
(
z
)
=
z
+
z
B
(
z
)
2
{\displaystyle B(z)=z+zB(z)^{2}}
B
(
z
)
=
1
−
1
−
4
z
2
2
z
{\displaystyle B(z)={\dfrac {1-{\sqrt {1-4z^{2}}}}{2z}}}
結果として得られるボルツマンサンプラーは、次のように再帰的に記述できる。
Γ
B
(
z
)
=
(
Bern
(
z
B
(
z
)
)
⟶
Z
∣
(
Z
,
Γ
B
(
z
)
,
Γ
B
(
z
)
)
)
{\displaystyle \Gamma {\mathcal {B}}(z)=\left(\operatorname {Bern} \left({\frac {z}{B(z)}}\right)\longrightarrow {\mathcal {Z}}\mid \left({\mathcal {Z}},\,\Gamma {\mathcal {B}}(z),\,\Gamma {\mathcal {B}}(z)\right)\right)}
パーティションを設定する
集合を いくつかの空でないクラスに分割し、それらのクラス同士が無秩序になるようにする。記号的方法を用いると、集合分割のクラスは 次のように表現できる。
{
1
,
2
,
…
,
n
}
{\displaystyle \{1,2,\ldots ,n\}}
C
{\displaystyle {\mathcal {C}}}
C
=
Set
(
Set
>
0
(
Z
)
)
.
{\displaystyle {\mathcal {C}}=\operatorname {Set} (\operatorname {Set} _{>0}({\mathcal {Z}})).}
対応する生成関数は に等しい 。したがって、ボルツマンサンプラーは次のように記述できる。
C
(
z
)
=
e
e
z
−
1
{\displaystyle C(z)=e^{e^{z}-1}}
Γ
C
=
(
Poisson
(
e
z
−
1
)
⟹
(
Poisson
>
0
(
z
)
⟹
Z
)
)
,
{\displaystyle \Gamma {\mathcal {C}}=\left(\operatorname {Poisson} (e^{z}-1)\Longrightarrow \left(\operatorname {Poisson} _{>0}(z)\Longrightarrow {\mathcal {Z}}\right)\right),}
ここで、正のポアソン分布は、正の値のみを取るように条件付けられた パラメータを持つポアソン分布です 。
Poisson
>
0
(
λ
)
{\displaystyle \operatorname {Poisson} _{>0}(\lambda )}
λ
{\displaystyle \lambda }
さらなる一般化
Philippe Duchon、 Philippe Flajolet 、Guy Louchard、Gilles Schaeffer [1] によって記述されたオリジナルのボルツマンサンプラーは、 分離和、直積、シーケンスという基本的なラベルなし演算と、ラベル付きクラスに対するセットとサイクルの構築という 2 つの追加演算のみをサポートしています。それ以来、ボルツマンサンプラーを構築できる組み合わせクラスの範囲は拡大しました。
ラベルのない構造
ラベルなしクラス に対して許容される演算には、 Multiset、Cycle、Powersetなどの追加の演算が含まれます。これらの演算のためのボルツマンサンプラーは、 Philippe Flajolet 、Éric Fusy、Carine Pivoteauによって説明されています 。 [3]
差動仕様
をラベル付きの組み合わせクラスと します。 微分演算は 次のように定義されます。ラベル付きオブジェクトを取り 、最大のラベルを持つ原子をラベルのない区別された原子に置き換えます。これにより、結果のオブジェクトのサイズが1だけ小さくなります。が クラス の指数生成関数である場合 、微分クラスの指数生成関数は次 のように与えられます。 微分仕様は、タイプの再帰仕様です。
C
{\displaystyle {\mathcal {C}}}
c
∈
C
{\displaystyle c\in {\mathcal {C}}}
C
(
z
)
=
∑
n
=
0
∞
a
n
z
n
n
!
{\displaystyle C(z)=\sum _{n=0}^{\infty }a_{n}{\dfrac {z^{n}}{n!}}}
C
{\displaystyle {\mathcal {C}}}
C
′
{\displaystyle {\mathcal {C}}'}
C
′
(
z
)
=
d
d
z
C
(
z
)
=
∑
n
=
0
∞
n
a
n
z
n
−
1
n
!
{\displaystyle C'(z)={\dfrac {d}{dz}}C(z)=\sum _{n=0}^{\infty }na_{n}{\frac {z^{n-1}}{n!}}}
T
′
=
Φ
(
T
,
Z
)
{\displaystyle {\mathcal {T}}'=\Phi ({\mathcal {T}},{\mathcal {Z}})}
ここで、式には 、和、積、数列、循環、集合の標準的な演算のみが含まれ、微分は含まれません。
Φ
(
T
,
Z
)
{\displaystyle \Phi ({\mathcal {T}},{\mathcal {Z}})}
微分仕様のためのボルツマンサンプラーは、オリヴィエ・ボディニ、オリヴィエ・ルーセル、ミシェル・ソリアによって構築されました。 [4]
マルチパラメトリックボルツマンサンプラー
マルチパラメトリックな組み合わせクラスのマルチパラメトリックなボルツマン分布は、古典的な場合と同様に定義されます。各オブジェクトには、 負でない整数のベクトルである 合成サイズが備わっているものとします。各サイズ関数は 、ツリー内の特定の色の葉の数、ツリーの高さなど、 データ構造 のパラメータの1つを反映できます。対応する 多変量生成関数は 、マルチパラメトリッククラスに関連付けられ、次の ように定義されます。
の 解析 ドメイン内の ベクトルパラメータを持つマルチ パラメトリッククラスの ボルツマン サンプラーは、次のように表されます。
c
∈
C
{\displaystyle c\in {\mathcal {C}}}
ω
(
c
)
=
(
ω
1
(
c
)
,
…
,
ω
d
(
c
)
)
{\displaystyle \omega (c)=(\omega _{1}(c),\ldots ,\omega _{d}(c))}
ω
j
(
c
)
{\displaystyle \omega _{j}(c)}
C
(
z
1
,
…
,
z
d
)
{\displaystyle C(z_{1},\ldots ,z_{d})}
C
(
z
1
,
…
,
z
d
)
=
∑
c
∈
C
z
1
ω
1
(
c
)
⋯
z
d
ω
d
(
c
)
.
{\displaystyle C(z_{1},\ldots ,z_{d})=\sum _{c\in {\mathcal {C}}}z_{1}^{\omega _{1}(c)}\cdots z_{d}^{\omega _{d}(c)}.}
C
{\displaystyle {\mathcal {C}}}
z
=
(
z
1
,
…
,
z
d
)
{\displaystyle {\boldsymbol {z}}=(z_{1},\ldots ,z_{d})}
C
(
z
1
,
…
,
z
d
)
{\displaystyle C(z_{1},\ldots ,z_{d})}
Γ
C
(
z
1
,
…
,
z
d
)
{\displaystyle \Gamma {\mathcal {C}}(z_{1},\ldots ,z_{d})}
確率で
オブジェクトを返す
c
∈
C
{\displaystyle c\in {\mathcal {C}}}
P
(
Γ
C
(
z
1
,
…
,
z
d
)
=
c
)
=
z
1
ω
1
(
c
)
⋯
z
d
ω
d
(
c
)
C
(
z
1
,
…
,
z
d
)
.
{\displaystyle \mathbb {P} (\Gamma {\mathcal {C}}(z_{1},\ldots ,z_{d})=c)={\frac {z_{1}^{\omega _{1}(c)}\cdots z_{d}^{\omega _{d}(c)}}{C(z_{1},\ldots ,z_{d})}}.}
マルチパラメトリックボルツマンサンプラーは、オリヴィエ・ボディーニとヤン・ポンティによって構築されました。 [5] 目標パラメータの期待値が与えられた場合にパラメータの数値を見つける多項式時間アルゴリズムは 、補助凸最適化問題を定式化することによって得られます [6]
z
1
,
…
,
z
d
{\displaystyle z_{1},\ldots ,z_{d}}
アプリケーション
ボルツマンサンプリングは、プロパティベースのテスト のために 代数データ型を 生成するために使用できます 。 [7]
ソフトウェア
ランダム離散オブジェクト スイート (RDOS) : http://lipn.fr/rdos/
Maple のCombstruct パッケージ: https://www.maplesoft.com/support/help/Maple/view.aspx?path=combstruct
Haskell パッケージ Boltzmann Brain : https://github.com/maciej-bendkowski/boltzmann-brain
参考文献
^ ab Duchon, Philippe; Flajolet, Philippe; Louchard, Guy; Schaeffer, Gilles (2004 年 7 月). 「組み合わせ構造のランダム生成のためのボルツマンサンプラー」. 組み合わせ論、確率、計算 . 13 (4–5): 577–625. doi :10.1017/S0963548304006315. ISSN 0963-5483. S2CID 1634696.
^ Pivoteau, Carine; Salvy, Bruno; Soria, Michèle (2012 年 11 月). 「組み合わせ構造のアルゴリズム: Well-founded システムとニュートン反復」. Journal of Combinatorial Theory, Series A . 119 (8): 1711–1773. arXiv : 1109.2688 . doi : 10.1016/j.jcta.2012.05.007 . ISSN 0097-3165.
^ Flajolet, Philippe; Fusy, Éric; Pivoteau, Carine (2007-01-06). 「ラベルなし構造のボルツマンサンプリング」。2007 Proceedings of the Fourth Workshop on Analytic Algorithmics and Combinatorics (ANALCO) 。フィラデルフィア、ペンシルバニア州: Society for Industrial and Applied Mathematics: 201–211。doi : 10.1137 / 1.9781611972979.5。ISBN 978-1-61197-297-9 。
^ Bodini, Olivier; Roussel, Olivier; Soria, Michèle (2012年12月). 「1次微分仕様のためのボルツマンサンプラー」. 離散応用数学 . 160 (18): 2563–2572. doi : 10.1016/j.dam.2012.05.022 . ISSN 0166-218X.
^ Bodini、Olivier Ponty、Yann。 言語 の多次元ボルツマンサンプリング 。OCLC 695180521。 {{cite book}}: CS1 maint: multiple names: authors list (link)
^ Bendkowski, Maciej; Bodini, Olivier; Dovgal, Sergey (2018 年 1 月)、「多項式チューニングによるマルチパラメトリック コンビナトリアル サンプラー」、 2018 年 Proceedings of the Fifteenth Workshop on Analytic Algorithmics and Combinatorics (ANALCO) 、Society for Industrial and Applied Mathematics、pp. 92–106、 arXiv : 1708.01212 、 doi : 10.1137/1.9781611975062.9 、 ISBN 978-1-61197-506-2
^ Lampropoulos, Leonidas; Gallois-Wong, Diane; Hriţcu, Cătălin; Hughes, John; Pierce, Benjamin C.; Xia, Li-yao (2017-01-01). 「初心者の幸運: プロパティベースのジェネレーターのための言語」。 第 44 回 ACM SIGPLAN プログラミング言語の原則に関するシンポジウムの議事録 。POPL '17。ニューヨーク 、ニューヨーク州、米国: Association for Computing Machinery。pp. 114–129。arXiv : 1607.05443。doi : 10.1145 /3009837.3009868。ISBN 978-1-4503-4660-3 . S2CID 14378582。