線形空間𝔽₂^V上の問題に対する連結グラフから全域木への帰着
連結無向グラフが与えられたとき、それが線形空間上の問題であれば、連結グラフから全域木に帰着できるかもしれないという話です。着想は
- ABC 155: F - Perils in Parallel
の解説から得ました。想定解の一部に「連結グラフの問題を全域木の問題に帰着」している箇所があります。この記事は、これを数学的に理解するためのものです。
想定読者
- グラフや木の定義を知っている。
- 学部1年程度の線形代数の知識がある。
問題を見ていなくてもわかる構成にしているつもりですが、一度問題を解いた上でこの記事を読むと、読みやすいと思います。
TL;DR
昨日のFでなんで連結成分から全域木に帰着されたんだろうと考えてたけど、(l, r)の辺は(l, r)のパス上の辺すべてを使うのと等価だからか
— Ark (@arkark_) February 17, 2020
F₂^|V|上の線形空間か。つまりEの張る部分空間を考えればよく、その基底となる辺(ベクトル)集合に制限すれば十分だが、ちょうど全域木の辺集合が基底となる
— Ark (@arkark_) February 17, 2020
準備
定義
を連結無向グラフとしたとき、各 に対して次を定義します:
\begin{align} \mathbf{f}_e := \left( \mathbb{1}_{\{v \in e\}} \right)_{v \in V} \in \mathbb{F}_2^{V} \end{align}
ここで、 は指示関数です。
問題の定式化
この定義を用いると、与えられた問題は次のように形式化できます:
- 入力:
- :連結無向グラフ
- 出力:
- 次を満たす が存在するか? \begin{align} \mathbf{b} + \sum_{e\in A} \mathbf{f}_e = \mathbf{0} \end{align}
- 存在するならばそのようなを構成せよ。
目標
上で形式化した問題を次の問題に帰着することが今回の目標です。
- 入力:
- :連結無向グラフ
- 出力:
- の任意の全域木 をとる*1。
- 次を満たす が存在するか? \begin{align} \mathbf{b} + \sum_{e\in A} \mathbf{f}_e = \mathbf{0} \end{align}
- 存在するならばそのようなを構成せよ。
線形空間 への抽象化
は、体 上の線形空間とみなすことができます。
また、ベクトル集合 が張る空間を と表記します。
問題の形式化 revised
よって問題は、次のように言い換えられます:
- 入力:
- :連結無向グラフ
- 出力:
- を満たすか?
- 満たす場合、次を満たすような を構成せよ。 \begin{align} \sum_{e\in E} c_e \mathbf{f}_e = \mathbf{b} \end{align}
全域木への帰着
書き換えた問題を眺めると を張るベクトル集合(辺集合)についてのみ考えれば十分ということがわかります。
ところが、次の定理より全域木の辺集合は、それに該当します。
定理
の任意の全域木 に対して次が成り立ちます:
\begin{align} \langle\{\mathbf{f}_e \mid e \in E \} \rangle = \langle\{\mathbf{f}_e \mid e \in D \} \rangle \end{align}
証明
は より明らかなので、 を示せば良い。
任意に をとる。このとき \begin{align} \sum_{e\in E} c_e \mathbf{f}_e = \mathbf{x} \end{align} を満たすが存在する。また、 は の全域木なので、各 に対して 上に とを端点にもつパスが存在し、そのパスの辺集合を とおく。このとき、 上の演算を考えると \begin{align} ^\forall e\in E,\, \mathbf{f}_e = \sum_{e' \in P_e} \mathbf{f}_{e'} \end{align} が成り立つ。よって \begin{align} \mathbf{x} &= \sum_{e\in E} c_e \mathbf{f}_e \\ &= \sum_{e\in E} \left( c_e \sum_{e' \in P_e} \mathbf{f}_{e'} \right) \\ &\in \langle\{\mathbf{f}_e \mid e \in D \} \rangle \end{align} が成り立つ。
以上より が示された
帰着
が示されたので、元の問題は次のように書き換えられます。
- 入力:
- :連結無向グラフ
- 出力:
- の任意の全域木 をとる。
- を満たすか?
- 満たす場合、次を満たすような を構成せよ。 \begin{align} \sum_{e\in D} c_e \mathbf{f}_e = \mathbf{b} \end{align}
まとめ
まとめると、次のようなことがわかりました。
- 線形空間 上で議論ができる
- 問題を 上の言葉で書き換えると、Eの張る部分空間を考えればよいことがわかる。
- つまり、その空間を張るような辺(ベクトル)集合に制限しても問題ない。
- 定理より、全域木の辺集合はそれに該当する。
- よって元の問題は全域木に帰着された。
補足
もう少し議論を踏み込むと、さらにおもしろいことが見えてきます。
考察すると、全域木 に対して は線形独立なベクトルからなる集合であることがわかります。よって、この集合は の基底です。
厳密さに欠いた表現で言うと、全域木の辺集合は元のグラフの辺集合が張る空間の基底であるということです。全域木を取り出すことは、線形従属な辺を除去した操作に相当します。
また、このことから の次元は です。元の線形空間 の次元は なので、すべての空間を張るには次元がひとつ足りません。
この足りない部分が「成分 の要素が奇数個のベクトル」です。つまり をみたすかどうかの判定は の成分が である要素の個数の偶奇をみればよいです。解説 における印の個数の偶奇による判定は、これに相当しています。
さらに、次元がひとつ小さいことと であることから、 が一様乱数で与えられたときの構築可能だと判定される確率は になることがわかります。これは、偶奇の比が1対1であることとも繋がります。
*1:元のグラフが連結なので全域木は少なくとも1つ存在します。