如何同时选定节点与边生成符合要求的子图
回答
可以实现,你要生成的就是典型的节点诱导子图(也叫导出子图),完全符合图论中子图的标准定义。
基础操作逻辑
- 先对15个节点的集合和20个节点的集合取并集,两个集合的交集大小为5,去重后刚好得到你需要的30个目标节点
- 再从原边集中筛选所有两端点都属于上述30个节点集合的边,就是目标子图的边集
- 组合筛选后的节点和边就得到你需要的子图
常用图处理工具的现成实现
你不需要手动写遍历逻辑,主流图工具都内置了对应方法:
- Python
networkx库:直接调用nx.subgraph(原图对象, 目标节点列表)即可直接返回对应诱导子图,会自动筛选符合要求的边 - C++
igraph库:调用igraph_induced_subgraph方法即可完成生成 - Neo4j 图数据库:可以用Cypher语句
MATCH (n)-[r]-(m) WHERE id(n) IN $目标节点ID列表 AND id(m) IN $目标节点ID列表 RETURN n,r,m直接查询得到子图
内容的提问来源于stack exchange,提问作者Prradep
相关产品推荐
相关产品推荐

