Ex - We Love Forest Editorial by GidroOttenok3797


公式解説にある \(f(S)\)、つまり \(S\subseteq V\) を頂点集合とする木の個数は、行列木定理(ラプラシアン行列)を使わなくても求めることができます。 具体的には、

\[ f(S) = \begin{cases} 1 & (\text{if }|S| \leq 1) \\ \displaystyle \frac{1}{2(|S|-1)} \sum_{T \subset S} f(T) f(S \setminus T) \mathcal{E}(T, S \setminus T) & (\text{otherwise}) \end{cases} \]

とすればよいです。 ここで、互いに素な頂点集合 \(U, W\) に対して \(\mathcal{E}(U, W)\)\(U\) の頂点と \(W\) の頂点を結ぶ辺の個数を表し、

\[ \mathcal{E}(U, W) = e(U \cup W) - e(U) - e(W) \]

と計算できます。 ただし、頂点集合 \(U\) に対して、\(e(U)\)\(U\) に含まれるいずれか 2 頂点を結ぶ辺の本数です。

すべての頂点集合 \(U\) に対して \(e(U)\) を合計 \(O(N^2 2^N)\) 時間で前計算することによって、 すべての頂点集合 \(S\) に対して \(f(S)\) を合計 \(O(3^N)\) 時間で計算することができます。

posted:
last update: