子图组合搜索算法

时间:2016-06-03 17:04:23

标签: algorithm graph

使用此无向图

undirect graph

在此图中,我有不同的节点,其中包含以下类型[A,B,C,D,E]。 这意味着可以存在具有相同类型的不同节点

现在假设您有一组节点类型[A,B,E]。您不知道图中给定节点的哪个节点,只有您知道的是每个节点的类型。

您需要做的是找到最适合该给定节点集的内容。 节点必须相互连接

我一直在测试一个算法,该算法包含以下步骤:

  1. 将图表转换为链接列表
  2. 在考虑给定类型和节点类型出现次数的所有节点之间生成所有可能的组合。给出的例子是[A,B,E],但它可以是其他集合,如[A,B,C,A]。 [A,B,E]的一些可能(非全部)组合为:combinations

  3. 检查这些组合中的节点是否相互连接

  4. 最合适的是所有节点连接的第一个组合。
  5. 问题是给定图中的节点数。对于小组节点和小图,algorthim是可以的。但是当节点数量增加时,我有数千种可能的组合,这些组合会占用大量内存。

    我一直在寻找能够用低成本内存有效解决这个问题的算法。

    我花了好几天阅读和测试所有类型的算法,直到现在我找不到更好的解决方案。

    建议非常感谢

1 个答案:

答案 0 :(得分:3)

这被称为Graph Motif问题,不幸的是它是NP难的,即使图形是最大度为3的树:参见https://people.mpi-inf.mpg.de/~hermelin/Conference%20Publications/Connected%20Motifs.pdf中的定理1

这意味着存在可以解决此问题的任何多项式时间算法都是不太可能的。