【问题标题】:Algorithm for subgraph combinations search子图组合搜索算法
【发布时间】:2016-10-03 20:19:55
【问题描述】:

有了这个无向图

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

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

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

我一直在测试包含以下步骤的算法:

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

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

  4. 最适合的是所有节点都连接的第一个组合。

问题是给定图中的节点数。对于小型节点集和小型图,算法是可以的。但是当节点数量增加时,我有数千种可能的组合,而这些组合会消耗大量内存。

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

我花了几天时间阅读和测试各种算法,直到现在我找不到更好的解决方案。

非常感谢您的建议

【问题讨论】:

  • 提示:获取一些绘图软件。它将迅速为您节省数小时的时间。人们发誓 IPE 或 yed。
  • 是的,我只是想指出,用诸如paint、ms powerpoint 之类的工具手工绘制这些图表比仅仅下载可以帮助您快速绘制图表的东西要长得多。有相当多的图形绘图库。看看graphViz。

标签: algorithm graph


【解决方案1】:

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

这意味着几乎不可能存在任何多项式时间算法来解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 2014-11-05
    • 2017-02-16
    • 1970-01-01
    • 2021-01-08
    相关资源
    最近更新 更多