如何找到子图

How to find subgraph

我正在尝试显示包含用户选定节点的断开连接的有向图的特定子图。 parents的所有parents、parents...和children的children、children直到根和叶。我需要隐藏图表的其余部分。

任何帮助将不胜感激。

正如@aksam 所建议的,类似于:

var selectedNode = cy.$('node:selected');
var visitedArr = [ selectedNode ];

cy.elements().bfs({ // or dfs
  roots: selectedNode,
  visit: function(i, depth, v, e, u){
    visitedArr.push( v );
  },
  directed: false // or your preference
});

var subgraph = cy.collection( visitedArr );

cy.batch(function(){
  cy.elements().not( subgraph ).addClass('hidden');
  subgraph.removeClass('hidden');
});

maxkfranz 的回答给我错误。

根据他的回答,这给了我正确的解决方案:

var selectedNode = cy.$('node:selected');
var visitedArr = [ selectedNode ];

cy.elements().bfs({ // or dfs
  roots: selectedNode,
  visit:  function(v, e, u, i, depth){
    visitedArr.push( v );
  },
  directed: false // or your preference
});

var subgraph = cy.collection( visitedArr );

cy.batch(function(){
  cy.nodes().hide();
  subgraph.show();
});