期待値 dp の計算の方向の考察メモ
結論
- 期待値の素朴な定義から期待値 dp の更新式に式変形ができた
- 期待値 dp は状態遷移の方向とは逆向きに最終状態から計算していくのが筋がよさそう
- その要因として、遷移先か遷移元かで確率計算の複雑さに差がある
- ある状態から遷移する状態 (の集合)
- 遷移確率の総和が 1 となる
- ある状態に遷移する状態 (の集合)
- 遷移確率自体も確率 dp で求める必要がありそう
- ある状態から遷移する状態 (の集合)
- 確率的な状態遷移は「ある状態を起点として複数ありうる状態のいずれかに移る」というものなので、遷移元の状態を固定して、その状態ごとに遷移先の状態をまとめていくと確率計算がシンプルになりやすそう
記事にしました
概要
期待値 dp の解説で状態遷移の最終状態から dp の計算をするというのをよく見ますが、状態遷移の方向と逆向きに計算しているように見えます。また「初期状態から計算できる場合もあるが実装が複雑になる」というのも聞いたことがあります。
そもそも期待値 dp の更新式が期待値の素朴な定義式と少しギャップがあるように思え、「感覚的に立式してるけどほんとに成り立つ?」と思ったことがありました。
そこで期待値 dp の更新式の導出や計算の方向による違いについて勉強してみます。
定義
まずは確率と状態遷移に関する記法をグラフをベースに定義してみます。
基本
-
: 状態集合V -
: 辺集合。E \subseteq V \times V は状態(u, v) \in E からu への遷移が存在することを表す。v -
:w(u, v) \in \R からu へ遷移したときにかかるコスト。v とする。(u, v) \in E -
:P(u, v) \in [0, 1] からu へ遷移する確率。v とする。(u, v) \in E -
: 開始状態s \in V -
: 終了状態 (簡単のため、1 状態とする)t \in V
パスで拡張
上をベースにパスの概念で
-
: パス。\rho = v_0 v_1 \ldots v_k が成り立っているものとする。0 \le \forall i < k, (v_i, v_{i + 1}) \in E -
とする。\rho_i := v_i -
とする。|\rho| := k
-
-
: 状態w(\rho) \in \R から\rho_0 上を遷移したときにかかるコスト\rho w(\rho) = \sum_{i = 0}^{|\rho| - 1} w(\rho_i, \rho_{i + 1})
-
: 状態P(\rho) \in [0, 1] から\rho_0 上を遷移する確率\rho P(\rho) = \Pi_{i = 0}^{|\rho| - 1} P(\rho_i, \rho_{i + 1}) - マルコフ連鎖であることが必要?
その他
遷移前後の頂点集合を扱うために以下を定義します。
-
:\delta^+(v) = \left \{ u \in V \mid (v, u) \in E \right \} から 1 ステップで遷移できる状態v の集合u -
:\delta^-(v) = \left \{ u \in V \mid (u, v) \in E \right \} に 1 ステップで遷移できる状態v の集合u
最終状態から dp 計算
状態遷移とは逆向きで、最終状態から dp 計算を行う方針を考えます。
(例:
定義
-
:\mathcal P(v) \subseteq V^* から終了状態v \in V に至る全てのパスの集合t \mathcal P(v) = \left \{ \rho \in V^* \mid \rho_0 = v \land \rho_{|\rho|} = t \right \}
-
:E[v] \in \R から最終状態v \in V へ到達するのにかかるコストの期待値t E[v] = \sum_{\rho \in \mathcal P(v) } P(\rho) \cdot w(\rho)
期待値
初期状態
以下では素朴な期待値の定義からスタートして、期待値 dp のよく見る形に変形します。
では式変形していきます。
再帰的に
常に成り立つこと
固定の
以下では、問題設定に条件を追加して
1. 任意の状態から必ず終了状態に到達できる場合
遷移の途中で「終了状態に到達しえない状態」に到達することがないケース。
- (そもそもこれが成り立たないと期待値が定義できない?)
このとき、
よって、
2. 任意の遷移でコストが 1 の場合
サイコロを振る「回数」など、1 回の遷移にかかるコストが常に 1 のケース。
よって、
1, 2 がともに成り立つ場合
典型問題でよく見る形になりました。
初期状態から dp 計算
状態遷移と同じ向きで、初期状態から dp 計算を行う方針を考えます。
(例:
定義
-
: 開始状態\mathcal P(v) \subseteq V^* からs に至る全てのパスの集合v \in V \mathcal P(v) = \left \{ \rho \in V^* \mid \rho_0 = s \land \rho_{|\rho|} = v \right \}
-
: 開始状態E[v] \in \R からs へ到達するのにかかるコストの期待値v \in V E[v] = \sum_{\rho \in \mathcal P(v) } P(\rho) \cdot w(\rho)
期待値
初期状態
こちらでも素朴な期待値の定義から式変形します。
では式変形していきます。
再帰的に
「最終状態から dp 計算」との違い
\sum_{v \in \delta^-(u)} P(v, u) が 1 になるとは限らない。
1. 「最終状態から dp 計算」する場合、同じような項として
一方で、
\sum_{\rho' \in \mathcal P(v) } P(\rho') が 1 になるとは限らない。
2. これは初期状態
実装が複雑になる理由
最終状態から逆向きに計算する場合と違い、本質的に簡単にできない項が存在するため、期待値計算の中でそのような項も合わせて計算する必要があります。
特に上式の