棋盘探索问题,给定行棋规则(邻接矩阵),探索从i到j经过步数K的路径数量
动态规划(事实上,动态规划问题并不适合这种路径检索问题,因为没有所谓的最优子问题,但是可以运用动态规划的思想,建立递归表达式)
由于当前阶段只与前一阶段存在关系(很明显这是一种),所以只需要维护当前和前一阶段的数据(一个2×N的矩阵)即可,建立k与k-1的关系,k步中的每一个状态对应的路径函数f(sk,k)=f(sk_last1,k-1)+f(sk_last1,k-1)+...+f(sk_last1,k-1);其中sk是与sk_last是邻接关系,由事先定义好的规则决定,每一步的更新,需要检索上一步中所有状态并用以更新当前状态,需要注意的是初始化时将i状态设置为1,其他状态设置为零,如果是随机初始化则全部设置为1.
注:矩阵的第一行和第二行用于迭代数据,所以在每一步开始前都需要对上上一步的数据清空,然后作为当前步的数据存储空间。
马尔可夫决策空间
事实上我们在第一种方法中提到的邻接矩阵相当于一阶马氏链的转移矩阵,略有区别的是马氏链中存储的是转移概率,而我们仅需考虑状态之间的可达性即可。根据一阶马氏链的性质,其N步转移概率矩阵等于一阶矩阵的N次乘法,i到j的转移概率则是矩阵相应位置的值,此时如果概率值大于一的用1代替,则最终的转移概率就变成了转移成功的次数,也就是我们需要考虑的情况。
网友评论