java - 查找与 JUNG 距离为 2 的邻居

标签 java jung

我想在一个不太小的网络(5000 个节点和 25k 个无向边)中找到距离为 2 的所有节点的邻居。现在我正在使用:

ArrayList<Node> twoDistNei = new ArrayList<Node>();
Collection<Node> myThreads = g.getNeighbors(u);
for(Node t:myThreads){
    Collection<Node> neighbors = g.getNeighbors(t);
    for(Node uu:neighbors){
       if(!twoDistNei.contains(uu)){
           twoDistNei.add(uu);
        }
    }
}

但它真的很慢,我想知道是否有更有效和快速的方法来完成此任务。

编辑:我设法使用提到的 KNeighborhoodFilter,这就是我的结果:

KNeighborhoodFilter filter = new KNeighborhoodFilter(u, 2,KNeighborhoodFilter.EdgeType.IN_OUT);
Graph<Node, Edge> transform = filter.transform(zpa);
Collection<Node> vertices = transform.getVertices();
Set<Node> twoDistThreads = new HashSet<Node>();
for (Node v : vertices) {
    if(v.getColor().equals("blue")){
       twoDistThreads.add((Thread)v);         
    }
    System.out.println("thread " + v.getName() + " has color " + v.getColor());
} 

现在我看到过滤器只允许对原始网络进行转换()并诱导一个包含所有选定节点的子图(加上链接到选定节点的节点......但为什么?)。 这意味着我必须过滤新的节点集合以仅捕获我感兴趣的 2-dist 顶点 - 我有一个二分图,其中一组节点是“蓝色”,另一个是“红色”。 我在这里做事吗,@Joshua?感谢您的帮助!

最诚挚的问候, 西蒙娜

最佳答案

关于java - 查找与 JUNG 距离为 2 的邻居,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16507977/

相关文章:

java - 如何将 DirectedSparseMultigraph 显示为树

java - 如何平移和缩放 JComponents?

java - JUNK 和 Java 的鼠标事件

java - BPMN 中信号事件和消息事件可以互换吗?

java - 将 JS 函数传递给小程序作为事件监听器

java - JUNG,在可视化查看器上更改图形引用

java - 如何在jung中对顶点进行分组?

java - 静态构造函数上带有 Apache Spark/Java 反射错误的 MVCE?

java - doRpcCall 时出现超时异常-在 TeleGram java API 中导入联系人

java - 同步 map 内的集合