algorithm - 树编辑距离 : How can I get the optimal mapping?

标签 algorithm tree dynamic-programming edit-distance

我已经实现了 algorithm by Zhang and Shasha计算两棵树之间的最小编辑距离。一切正常,我对当前的运行时间非常满意。

现在我还想生成一个 diff,突出显示更改/删除/插入的节点。根据他们的论文,根据 this presentation 的最后一张幻灯片,要求生成计算距离的映射是很自然的。似乎可以很容易地从最后的森林距离表和树距离表中提取映射。不幸的是,我还没有弄清楚确切的规则。

任何额外的描述将不胜感激。非常感谢!

最佳答案

好吧,我终于自己弄明白了。为了为两棵树的节点生成最优映射,分别有 m 和 n 个节点,您需要在林表中进行一些回溯。

对于 (m, n) 森林距离表中以 (m, n) 开头的每个字段 (x, y),执行以下操作:如果最小值是通过对字段 (x', y') 求和得到的和编辑/删除/插入成本,然后记下映射并转到当前森林距离表的字段(x',y')。另一方面,如果最小值是通过当前森林距离表中的字段 (x', y') 和树木距离表中的字段 (tx, ty) 求和得到的,则转到字段 (x' , y') 从当前森林距离表 AND 到森林表中与树 (tx, ty) 对应的字段 (tx, ty)。您现在需要分别在两个林表中继续回溯并从两个表中收集映射。

关于algorithm - 树编辑距离 : How can I get the optimal mapping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17915172/

相关文章:

algorithm - 动态规划——油漆栅栏算法

algorithm - 调用两半floor(x/2)和ceil(x/2)的递归函数的时间复杂度

algorithm - 将 n 个相同的球分配到组中以使每组至少有 k 个球的方法有多少种?

java - 如何确定一个目录是在文件系统层次结构中的另一个目录之下还是之上

java - 字典序最小排列,使得所有相邻字母都不同

algorithm - 热耗率控制算法

python - 获取 RPN 树大小

algorithm - 从路径列表创建树的算法

language-agnostic - 是否有一个用子树大小注释的二叉搜索树的实现

algorithm - 根据该部分所在的象限将弧分成多个部分