1.值函数定义
1.1 V函数
我们先看一下经典的最短路问题,假设我们要求出起点s到终点g的最短路
我们定义 V ∗ ( s ) V^\ast(s) V∗(s)为 s s s到终点 g g g的最短路, V ∗ ( f ) V^\ast(f) V∗(f) 为 f f f到终点 g g g的最短路,以此类推,为了求出这个最短路,我们从终点开始算起:
V ∗ ( g ) = 0 V ∗ ( f ) = 1 + V ∗ ( g ) = 1 V ∗ ( d ) = m i n { 3 + V ∗ ( g ) , 1 + V ∗ ( f ) } \begin{aligned} V^\ast(g)&=0 \\ V^\ast(f)&=1+V^\ast(g)=1\\ V^\ast(d)&=min\{3+V^\ast(g),1+V^\ast(f)\} \end{aligned} V∗(g)V∗(f)V∗(d)=0=1+V∗(g)=1=min{
3+V∗(g),1+V∗(f)}
对终点 g g g来说,自己到自己的最短路为0。
对顶点 f f f来说,只有它自己和终点 g g g有路径,故顶点 f f f到 g g g的最短路由这条路径的权重和 V ∗ ( g ) V^\ast(g) V∗(g)相加
对顶点 d d d来说,有两个选择,可以选择权值为3的路径到 g g g,也可以选择权值为1的路径到 f f f,取这两种选择里最优选择即可
这样从后往前计算,我们可以得到起点 s s s到终点 g g g的最短路 V ∗ ( s ) V^\ast(s) V∗(s)
1.2 Q函数
有时我们除了要知道最短路,还要知道最短路这条路径的走向(即怎么走到终点),故我们还需要一个变量记录当前顶点的选择,我们定义 Q ∗ ( s , a ) Q^\ast(s,a) Q∗(s,a)为从 s s s顶点选择 a a a路径到终点 g g g的最短路,拿图例来说,顶点 s s s出发有两条路径可选,一条权值为1到达 b b b,记作 a 1 a_1 a1,一条权值为2到达 c c c,记作 a 2 a_2 a2(在强化学习中,我们可以将顶点定义为状态,选择路径定义为动作)
如果 s s s选择 a 1 a_1 a1路径,那么 Q ∗ ( s , a 1 ) Q^\ast(s,a_1) Q∗(s,a1)由这条路权值和 b b b到终点的最短路决定
Q ∗ ( s , a 1 ) = 1 + V ∗ ( b ) Q^\ast(s,a_1)=1+V^\ast(b) Q∗(s,a1)=1+V∗(b)
同样对于 a 2 a_2 a2路径,有
Q ∗ ( s , a 2 ) = 2 + V ∗ ( c ) Q^\ast(s,a_2)=2+V^\ast(c) Q