给出两个图G=(V,E)
,例如:
和G'=(V',E')
,例如:
我需要找到它们之间的最大子图匹配。将G
作为目标图,并将G'
作为码头图。每个节点和每个边缘都有一组属性,但是这不太相关,因为我有一个函数,给定两个节点(或两个边缘),它将返回一个表示两个元素之间相似度的值(较高的值,较高的相似性)。
最大匹配匹配将是具有最高相似性的匹配,在这种情况下,因为我们有2个节点和1个边缘作为查询,所以将这2个节点和1个边缘与目标中的元素的相似性值相加图(G
)应该最大。
通过蛮力执行此操作将返回正确的解决方案,但是它太难计算了,因此我不希望全局最大值而是一个好的解决方案(例如Greedy算法或受某些事物指导的算法)进行搜索),但算法应返回最佳值,而不会影响计算时间。
答案 0 :(得分:1)
您的问题类似于maximum cut problem。由于问题是NP难题,因此除非P = NP,否则您无法期望会返回最佳答案的多项式时间算法。
但是存在几种近似算法。其中有一种1/2
-近似贪婪算法,该算法非常容易实现。
描述here,它是一种简单的贪心算法,其中从顶点集的随机分区开始,然后如果改善了切割效果,则将顶点从一个集移到另一个集。一旦无法再改进当前的解决方案,便有了大致的解决方案。
答案 1 :(得分:0)
尝试一些总覆盖率
的算法实际上,您的问题无法使用多项式时间算法来获得“ THE”答案 您仍然可以探索许多其他可行的解决方案
(也许是回溯?)