我有一个无向图G
。由于G
是顶点和边的集合,我想将其视为“数据库”。
现在我的查询图H
保证是G
的子图。我怎么知道H
对应G
的哪一部分?
这个问题与现有问题不同,因为基本上我确定H
是G
的一部分。
答案 0 :(得分:1)
查找图是否是另一个图的子图,即子图同构问题是NP完全的。许多图形处理系统使用的方法是图形索引。它减少了必须超过子图同构测试的候选图的数量。索引创建有很多变化,对此有很多研究和很多论文可用。这些是我发现有用的一些示例文章: graph indexing: a frequent strucutre-based approach - 这是一个很旧的问题,但问题得到了很好的解释,非常有益于阅读。 GRAPES: A software for parallel searching on biological graphs - 这也值得一读,它很好地解释了图索引程序。
答案 1 :(得分:0)
这是Subgraph isomorphism problem。如果您不限制查询图,则它是NP完全的(因为您可以采用H哈密顿循环)。如果图H非常小(固定),您可以在多项式时间内找到G中的H副本(通过简单的蛮力,或通过维基百科页面中提到的算法)。