在另一棵树中找到树的节点

时间:2014-04-05 08:28:52

标签: algorithm search data-structures tree nodes

我的问题是: 考虑两个树P和R.我需要将P的最深可能级别的节点与树R的最深级别的节点进行匹配。这意味着,树中的所有节点都是从最一般到最具体的层次关系。 。应该找到树P与树R的最具体匹配。 需要最佳方法。

例如,让我们有一个Reviewers的面板。每个评论者都有自己的兴趣树,从一般兴趣到特定的,如从能源到沼气工厂。现在有一篇论文与评论者的兴趣相匹配。可以找到与纸张类别最具体匹配的审阅者。每篇论文的类别树也从最常见的类别到完全特定的类别。

2 个答案:

答案 0 :(得分:0)

编辑:修正了深度差异的表达式

  1. 确定您希望为其深度匹配节点提供多少重要性,而不是它们的“相似性”。使用它来得到评分函数s(x,y)= a *( - |深度(x) - 深度(y)|)+(1-a)*(相似度(x,y))。 (相似度(x,y)可以是x和y的任何函数 - 例如,如果x和y是字符串,它可能是它们最长公共子序列的长度。)
  2. (从概念上讲)为树1中的每个节点创建一个顶点,为树2中的每个节点创建一个顶点,为每对顶点(x,y)创建一个边,其中第一个树中有x,第二个树中有y。将此边的权重设置为s(x,y)。
  3. 您现在有bipartite maximum weighted matching problem,a.k.a。作业问题。应用匈牙利算法在O(n ^ 3)时间内找到最优解。

答案 1 :(得分:0)

您可以使用Trie来解决它,其中根具有最通用的类​​别,其子项具有更具体的类别,其子项具有越来越多的特定类别。你需要找到从根开始的最长匹配。