如何将有向图转换为无向图?

时间:2010-11-08 22:27:36

标签: graph

如何使用邻接矩阵将有向图转换为无向图?

public directedToUndirected(boolean[][] adjMatrix) {

}

3 个答案:

答案 0 :(得分:2)

使用原始矩阵和原始转置进行布尔OR操作。

答案 1 :(得分:1)

你可以遍历整个数组并翻转索引,假设你使用的是0和1的

for (int i=0; i<adjMatrix.length; i++) {
  for (int j=0; j<adjMatrix[i].length; j++) {
    if (adjMatrix[i][j] == 1) {
      adjMatrix[j][i] = 1;
    }
  }
}

答案 2 :(得分:0)

您必须找到任何不需要更改信息的方法。在以上所有建议的方法中,节点ij之间的边缘被赋予ji,这是错误的,因为没有这样的边缘。

您可以将图表更改为更大的图表并进行一些虚拟连接。例如,如果ij有联系且ji有联系,您可以将i更改为i',并在j之间定义新边{1}}和i。您还应该保存i'i相同的事实。