树编辑距离:如何获得最佳映射?

时间:2013-07-29 02:22:30

标签: algorithm tree dynamic-programming edit-distance

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

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

任何其他说明都将受到高度赞赏。非常感谢!

1 个答案:

答案 0 :(得分:3)

好的,我终于自己想出来了。为了生成两棵树节点的最佳映射,分别有m和n个节点,你需要在林表中进行一些回溯。

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