几天来,我一直在尝试在 Python 中实现这个算法。我不断地回到它,只是放弃并感到沮丧。我不知道发生了什么事。我没有人可以请教,也没有任何地方可以寻求帮助,所以我来到了这里。
PDF 警告:http ://www.cs.uiuc.edu/class/sp08/cs473/Lectures/lec10.pdf
我不认为它解释清楚,我肯定不明白。
我对正在发生的事情的理解是这样的:
我们有一组点 (x1,y1), (x2,y2).. 我们想找到一些最适合这些数据的线。我们可以有多条直线,这些直线来自给定的 a 和 b (y = ax +b) 论坛。
现在算法从末尾开始 (?) 并假设点 p(x_i, y_i) 是线段的一部分。然后注释说最优解是 '是 {p1, . . . pi−1} 加上(最佳)线通过 {pi , . . . pn}'。这对我来说意味着,我们去点 p(x_i, y_i) 并向后走并通过其余点找到另一条线段。现在最佳解决方案是这两个线段。
然后它需要一个我无法遵循的逻辑跳转,并说“假设最后一个点 pn 是从 p_i 开始的段的一部分。如果 Opt(j) 表示前 j 个点的成本并且 e(j,k)通过点 j 到 k 的最佳直线误差 Opt(n) = e(i, n) + C + Opt(i − 1)"
然后是算法的伪代码,我不明白。我知道我们想要遍历点列表并找到最小化 OPT(n) 公式的点,但我只是不遵循它。这让我觉得自己很愚蠢。
我知道这个问题很让人头疼,而且不容易回答,但我只是在寻找一些指导来理解这个算法。我为 PDF 道歉,但我没有更简洁的方式将关键信息提供给读者。
感谢您抽出宝贵时间阅读本文,我很感激。