Algorithm 在另一棵树中查找树的节点

Algorithm 在另一棵树中查找树的节点,algorithm,search,data-structures,tree,nodes,Algorithm,Search,Data Structures,Tree,Nodes,我的问题是: 考虑两棵树P和R。我需要将树的最深层可能的节点与树R的最深层可能的节点相匹配,这意味着树中的所有节点都像是从最一般到最特定的层次关系。应该找到树P和树R中最具体的匹配项。 需要最优化的方法 例如,让我们有一个评审员小组。每个评论者都有自己的兴趣树,从一般兴趣到具体兴趣,比如从能源到沼气厂。现在有一篇论文要与评论者的兴趣相匹配。可以找到与论文类别最具体匹配的审阅者。每篇论文都有自己的分类树,从最一般的分类到确切的特定分类 编辑:深度差的固定表达式 决定您希望在深度上对匹配节点给予多大

我的问题是: 考虑两棵树P和R。我需要将树的最深层可能的节点与树R的最深层可能的节点相匹配,这意味着树中的所有节点都像是从最一般到最特定的层次关系。应该找到树P和树R中最具体的匹配项。 需要最优化的方法


例如,让我们有一个评审员小组。每个评论者都有自己的兴趣树,从一般兴趣到具体兴趣,比如从能源到沼气厂。现在有一篇论文要与评论者的兴趣相匹配。可以找到与论文类别最具体匹配的审阅者。每篇论文都有自己的分类树,从最一般的分类到确切的特定分类

编辑:深度差的固定表达式

  • 决定您希望在深度上对匹配节点给予多大的重视,而不是在“相似性”上给予多大的重视。使用此函数生成评分函数s(x,y)=a*(-depth(x)-depth(y)|)+(1-a)*(相似度(x,y))。(相似度(x,y)可以是x和y的任何函数——例如,如果x和y是字符串,则它可能是它们最长公共子序列的长度。)
  • (概念上)为树1中的每个节点创建一个顶点,为树2中的每个节点创建一个顶点,并为每对顶点(x,y)创建一条边,其中x在第一棵树中,y在第二棵树中。将此边的权重设置为s(x,y)
  • 你现在有一个作业问题。应用匈牙利算法在O(n^3)时间内找到最优解

  • 您可以使用来解决它,其中根具有最广义的类别,其子项具有更具体的类别,其子项具有越来越具体的类别。您需要找到从根开始的最长匹配。

    这是一个有趣的问题,但不太适合stackoverflow。您应该首先尝试对“最具体的匹配”和“最优化的方法”给出一个非常清晰的定义。例如,最具体的匹配是节点字符串变量中最长的匹配,而最优化的匹配是指一些方法,而不是简单地搜索整棵树以查找匹配。我希望这能让问题变得更清楚。谢谢你的帮助,需要一个解释:如果一个代理可以分配多个任务呢?匈牙利算法似乎无法解决问题this@user2538255:如果允许,那么就简单多了:只需将每个任务x分配给最大化s(x,y)的代理y。