Cytoscape.js:是否有内置选项获取完整邻域(全连通节点)?
Cytoscape 获取完整邻域/全连通节点的方法
Cytoscape的neighborhood()方法确实仅返回目标节点的直接相邻节点,官方文档里也没有内置参数能直接获取全连通子图的节点集合。不过可以通过以下两种实用方法实现需求:
利用连通组件工具类
直接获取目标节点所在的整个连通组件,这是最简便的方式。Java版示例代码:// 假设targetNode是你要查询的目标节点 CyNetwork network = targetNode.getNetwork(); CyConnectedComponents components = new CyConnectedComponents(network); Collection<CyNode> fullConnectedNodes = components.getComponent(targetNode);手动实现遍历算法
通过广度优先搜索(BFS)或深度优先搜索(DFS),从目标节点出发逐层遍历所有可达节点。Java版示例代码:Set<CyNode> fullNeighborhood = new HashSet<>(); Queue<CyNode> traverseQueue = new LinkedList<>(); traverseQueue.add(targetNode); fullNeighborhood.add(targetNode); while (!traverseQueue.isEmpty()) { CyNode currentNode = traverseQueue.poll(); Collection<CyNode> neighbors = network.getNeighbors(currentNode); for (CyNode neighbor : neighbors) { if (!fullNeighborhood.contains(neighbor)) { fullNeighborhood.add(neighbor); traverseQueue.add(neighbor); } } } // fullNeighborhood即为目标节点的全连通节点集合
如果使用的是前端的Cytoscape.js,直接调用connected()方法就能拿到目标元素所在的连通组件:
// 假设target是你选中的节点元素 const connectedNodes = cy.elements().connected(target);
内容的提问来源于stack exchange,提问作者til
相关产品推荐
相关产品推荐

