概率-dp

\(\text{hdu-4035}\)

在一棵树上随机游走,从根节点 \(1\) 出发,每次有 \(k_u\) 的几率回到根节点,\(e_u\) 的几率到达出口,否则随机选择一个与它相连的节点并走过去,求期望多少步能走到出口。

\(1 \le n \le 10^4\)


暴力推式子题。

\(t_u = 1 - k_u - e_u\),记 \(f_u\) 表示从 \(u\) 出发走到出口的期望步数,\(p\)\(u\) 的父亲,\(v\)\(u\) 的儿子,\(d_u\)\(u\) 的度数,则有:

\[\begin{align} f_u &= k_u f_1 + t_u \sum_{v \in son(u)} \frac{f_v + 1}{d_u} + t_u \frac{f_p + 1}{d_u} \\ &= k_u f_1 + \frac{t_u}{d_u} \left(f_p + 1 + \sum_{v \in son(u)} (f_v + 1) \right) \\ &= k_u f_1 + \frac{t_u}{d_u} f_p + \frac{t_u}{d_u} \sum_{v \in son(u)} f_v + t_u \end{align} \]

这个式子没法直接算,考虑令 \(f_u = a_u f_1 + b_u f_p + c_u\),目的是把 \(f_v\) 消掉让这个式子可以转移。

\(u\) 为叶子节点,显然有 \(d_u = 1, son(u) = \varnothing\),因此 \(a_u = k_u, b_u = c_u = t_u\)

对于非叶子节点 \(u\),考虑拆掉 \(\sum\limits_{v \in son(u)} f_v = f_1 \sum a_v + f_u \sum b_v + \sum c_v\),有:

\[\begin{align} f_u &= k_u f_1 + \frac{f_u}{d_u} f_p + \frac{t_u}{d_u} \sum_{v \in son(u)} f_v + t_u \\ f_u &= k_u f_1 + \frac{f_u}{d_u} f_p + \frac{t_u}{d_u} \left(f_1 \sum_{v \in son(u)} a_v + f_u \sum_{v \in son(u)} b_v + \sum_{v \in son(u)} c_v \right) + t_u \\ f_u &= \left(k_u + \frac{t_u}{d_u} \sum_{v \in son(u)} a_v \right) \cdot f_1 + \frac{t_u}{d_u} \cdot f_p + \left(\frac{t_u}{d_u} \sum_{v \in son(u)} b_v \right) \cdot f_u + \left(t_u + \frac{t_u}{d_u} \sum_{v \in son(u)} c_v \right) \\ \left(1 - \frac{t_u}{d_u} \sum_{v \in son(u)} b_v \right) \cdot f_u &= \left(k_u + \frac{t_u}{d_u} \sum_{v \in son(u)} a_v \right) \cdot f_1 + \frac{t_u}{d_u} \cdot f_p + \left(t_u + \frac{t_u}{d_u} \sum_{v \in son(u)} c_v \right) \\ f_u &= \frac{k_u + \frac{t_u}{d_u} \sum a_v}{1 - \frac{t_u}{d_u} \sum b_v} \cdot f_1 + \frac{t_u d_u^{-1}}{1 - \frac{t_u}{d_u} \sum b_v} \cdot f_p + \frac{t_u + \frac{t_u}{d_u} \sum c_v}{1 - \frac{t_u}{d_u} \sum b_v} \end{align} \]

那么就有了:

\[\begin{align} a_u &= \frac{k_u + \frac{t_u}{d_u} \sum a_v}{1 - \frac{t_u}{d_u} \sum b_v} \\ b_u &= \frac{t_u d_u^{-1}}{1 - \frac{t_u}{d_u} \sum b_v} \\ c_u &= \frac{t_u + \frac{t_u}{d_u} \sum c_v}{1 - \frac{t_u}{d_u} \sum b_v} \end{align} \]

然后就发现可以树形 dp 了,而且完全不需要计算 \(f_u\),因为答案为 \(f_1 = a_1 f_1 + c_1\),即 \(f_1 = \frac{c_1}{1 - a_1}\)

无解情况有三种:\(d_u = 0\)\(1 - \frac{t_u}{d_u} \sum b_v = 0\)\(a_1 = 1\)

posted @ 2026-05-10 21:49  So_noSlack  阅读(7)  评论(0)    收藏  举报