java - 如何检查 DirectedSparsedGraph 是否包含具有这 2 个节点的节点之间的边?

标签 java graph distance jung knn

我正在尝试使用 jung 库实现 kNN 图的创建。我现在需要检查图中是否已存在 2 个节点之间的链接。

到目前为止我的代码:

for (int i = 0; i < k; i++) {
  for (Iterator<Node> it1 = mGraph.getVertices().iterator(); it1.hasNext();) {
    Node n1 = (Node) it1.next();
    double minDistance = 9999999;
    Node toConnect = null;

    for (Iterator<Node> it2 = mGraph.getVertices().iterator(); it2.hasNext();) {
      Node n2 = (Node) it2.next();
      double currDistance = this.getDistance(n1, n2);
      if( currDistance < minDistance &&  
          mGraph.containsEdge( /* WHAT HERE */ ) ){
        minDistance = currDistance;
        toConnect = n2; 
      }   
    }   
    mGraph.addEdge(new Link(), n1, toConnect, EdgeType.DIRECTED);   
  }           
}

我不知道如何执行此操作,因为 Link 只有一个没有任何参数的构造函数。

最佳答案

isNeighbor() 适用于无向图,或者如果您不关心两个节点如何连接(即现有边(如果有)的走向)。对于有向图,您可能需要 isPredecessor()。

关于java - 如何检查 DirectedSparsedGraph 是否包含具有这 2 个节点的节点之间的边?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23788850/

相关文章:

java - 创建 50 个线程连接到服务器以进行负载测试

java - 使用hadoop作业的输出作为另一个的输入

java - 在Java中实现图表时出错

algorithm - 寻找欧拉路径的 Hierholzer 算法

hadoop - 有向图中的 MapReduce 长度为 3 条路径

optimization - 如何为 3D 三次贝塞尔曲线选择控制点距离以优化 'roundness' ?

Python - 低效的空间距离计算(如何加速)

java - 如何禁用子像素渲染?

java - 计算两点之间的距离 - Java

java - 从 Java API 激活和停用 Dynamics CRM 中的实体