假设我有n个状态S = {s1,s2,s3,..... sn}并且我有每个转换的分数,即T矩阵f.e。 s1-> s5 = 0.3,s4-> s3 = 0.7,......等。
我应该使用什么算法或程序来选择从state-x(s_x)开始的最佳得分序列/路径。
两个问题:
我目前正在研究强化学习,但这似乎有些过分,因为我既没有行动,也没有政策。也许我可以使用像Value函数这样的东西,dunno。
你会用什么?
PS>在某些情况下,T矩阵可能会随着时间而改变。
http://mnemstudio.org/path-finding-q-learning-tutorial.htm
似乎Q-learning是一个不错的选择。我看到的唯一区别是,如果我随着时间的推移存储Q值,我必须想办法改变T矩阵。
第二个更难的是没有最终目标,而只是改变中间人得分。可能我不需要改变算法,它只会转向改变分数,我认为这是可以的。
我最初的想法是每次执行L步骤的最佳路径(即每次从头开始重新计算Q),但如果可以的话,我宁愿根据传入的数据保留更改的Q表。
答案 0 :(得分:2)
您的选项1将被称为贪心方法。这通常是指立即选择最佳"选项。问题在于,贪婪的选择现在可以限制您将来的最佳选择。
如果你没有设定路径长度的限制,那么很明显最高分数是无限的。
所以现在的问题是:给定路径长度的最佳序列是什么?这可以通过动态编程等多项式时间来解决。
一个递归公式(你可以用来计算动态编程部分)会说:要从状态x开始计算出长度为L的最佳路径,请查看所有其他状态年。对于这些中的每一个,从状态y"开始计算T_xy +"长度为L-1的最佳路径。
显然,从某个状态x开始,长度为1的最佳路径将是"下一个最佳状态",因此您的递归具有简单的基本情况。