【问题标题】:Maximum subgraph matching最大子图匹配
【发布时间】:2019-07-09 07:45:39
【问题描述】:

给定两个图G=(V,E),例如:

G'=(V',E'),例如:

我需要找到它们之间的最大子图匹配。将G 视为目标图,将G' 视为码头图。每个节点和每条边都有一组属性,但这不太相关,因为我有一个函数,给定两个节点(或两条边),它将返回一个表示两个元素之间相似性的值(更高的值,更高的相似性)。

最大匹配匹配将是具有最高相似度的匹配,在这种情况下,由于我们有 2 个节点和 1 条边作为查询,将这 2 个节点和 1 条边的相似度值与目标中的元素相加图 (G) 应该是最大值。

通过蛮力执行此操作将返回正确的解决方案,但计算起来太难了,所以我愿意接受的不是全局最大值而是一个好的解决方案(如贪心算法或受某些东西引导的算法执行搜索),但算法应返回最佳值而不影响计算时间。

【问题讨论】:

  • 这不是对max-cut 问题的重新表述吗?
  • 对于大型实例将不可能获得最佳解决方案,因为这是一个 NP-hard 问题。
  • 你能推荐一个非最优算法吗? @m.raynal

标签: pattern-matching graph-theory


【解决方案1】:

您的问题类似于maximum cut problem。由于问题是 NP 难题,因此您不能指望多项式时间算法会返回最佳答案,除非 P=NP。
但是存在几种近似算法。其中,有一个1/2-逼近贪心算法,实现起来非常简单。
它被描述为here,是一种简单的贪心算法,您从顶点集的随机分区开始,然后如果它改进了切割,则将顶点从一个集合移动到另一个集合。一旦你不能再改进当前的解决方案,你就有了近似的解决方案。

【讨论】:

  • 如何在比较节点的同时比较边缘? @m.raynal
【解决方案2】:

尝试一些全覆盖

的算法

实际上,您的问题不可能有多项式时间算法来为您提供“THE”答案 您仍然可以探索许多其他可行的解决方案

(可能是回溯?)

【讨论】:

  • 你能给我一些/任何其他可行的解决方案吗? @丁格尔
  • 算法应该会建议你这些关于这个问题的NP特征的“其他可行的解决方案”,我们不能说它是否是“最好的”,尝试应用一些回溯算法
猜你喜欢
  • 1970-01-01
  • 2017-01-21
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多