我正在尝试使用 Viterbi min-sum 算法,该算法试图找到通过一堆节点的路径,以最小化针对某些固定输入的整体汉明距离(“异或两个数字并计算结果位”的花哨术语)。
我了解如何使用 DP 来计算整体最小距离,但我无法使用它来捕获与最小距离相对应的相应路径。
似乎在每个节点上记住路径确实会占用大量内存。是否有处理此类问题的标准方法?
编辑:
http://i.imgur.com/EugiEWG.jpg
这是我正在谈论的示例格子。一般的想法是找到通过网格的路径,该路径最接近地模拟输入位串,并且误差最小(通过最小化整体汉明距离或不匹配位的数量来测量)。
如您所见,我输入字符串的第一个块是 01,我可以在格子的第 1 列中遍历那里。下一个块是 10,我可以在第 2 列中移动到那里。下一个块是 11。到目前为止还不错。Next chunk 是 10,这是一个问题,因为我无法从现在的位置达到那个状态,所以我必须去下一个最好的东西(00),其余的可以很好地填充。
但这可能会变得更加复杂。我需要能够以某种方式获得最小汉明距离的相应路径。
(这个练习的重点是格子表示什么是实际有效的转换,而输入字符串是您通过电信收到的,可能会出现乱码并且到处都有不正确的位。这个程序试图找出输入字符串应该通过最小化错误)。