java - 检查图是否完全连接 - java

标签 java arrays graph

我想检查图是否完全连接 - 即每个节点是否都连接到其他节点。

我从图形文件中获取输入并将其放入二维数组中。全连接二维数组的示例如下所示:

{{0, 1, 1, 1, 1}
 {1, 0, 1, 1, 1}
 {1, 1, 0, 1, 0}
 {1, 1, 1, 0, 1}
 {1, 1, 1, 1, 0}}

如何编写一个 boolean 方法来检查它是否完全连接?我有点不知所措,所以非常欢迎任何提示、建议和帮助。

最佳答案

基本上,如果只有主对角线包含零,则有向图的矩阵表示是全连接的,因为主对角线表示每个顶点与其自身的连接。
任何与此不同的东西都代表一个不完全连接的图。所以,以一种非常非常简单的方式:

boolean isFullyConnected(int[][]m)
    for (int i = 0; i < m.length; i++) //iterate over rows
        for (int j = 0; j < m[i].length; j++) //iterate over columns
            if(i != j && m[i][j] == 0) //if not in main diag. and not connected
                return false;
    return true;
}

如果它不是定向的(如果只有一个方向的链接,你可以说一个顶点连接到另一个顶点),你可以更改算法,只需添加反向条件 && m[j][i] = = 0:

boolean verify(int[][]m){
    for (int i = 0; i < m.length; i++) 
        for (int j = 0; j < m[i].length; j++) 
            if(i != j && m[i][j] == 0 && m[j][i] == 0) //there's the difference
                return false;
    return true;
}

这是因为,想象一下按主对角线折叠矩阵,索引的每个重叠将代表两个顶点在两个方向上的连接,你只需要一个。

关于java - 检查图是否完全连接 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33507131/

相关文章:

java - TopLink JPA 子项在许多 SQL 子项调用中获取结果

javascript - 在java脚本的字符串中引用单个字符(单词)

java - 绘制动态图(正交)

java - TestNG "getCurrentXmlTest()).getAllParameters()"API 使用非常旧的 testng-5.4-jdk15.jar TestNG 库

java - 如何找到主类?入口点?

java - 无法从输入文件获取音频输入流

arrays - R 将 3D 数组的第二维乘以每个第三维的向量

java - 按顺序获取所有的JTextField

c++ - 创建 QSector 类(使用 Qt 和 QPaint)

ios - 使用 iOS 图表绘制多条线