【问题标题】:Check for Cycles in Adjacency Matrix?检查邻接矩阵中的循环?
【发布时间】:2015-01-18 04:41:40
【问题描述】:

我在 Java 中的一个方法通过

传入一个邻接矩阵
  • 1 矩阵中的值表示连接,以及
  • 0 值表示没有连接。

我的邻接矩阵表示一个无向图。

如何检查我的邻接矩阵是否有环?

【问题讨论】:

标签: java algorithm cycle adjacency-matrix


【解决方案1】:

有两个很好的解决方案:

  1. 如果您两次访问某个节点,则开始遍历 (bfs, dfs, ...) 您的图表,您的图表中有循环。

  2. 因此你有一个邻接矩阵,那么你可以使用 Imran 在评论中提到的算法,你只需要计算 An,对于 n = 1 ,...并检查如果有非零对角线入口,我认为你的老师想要这个算法。

只要谷歌adjacency matrix properties,你就会找到像this这样的文章。

【讨论】:

  • 那么如果DFS遍历两次访问邻接矩阵中的ANY元素,那么是否存在循环?
  • @Vimzy 如果它访问任何节点两次,则存在一个循环。但正如我所说,最好使用第二种方法
  • 老实说,我不太了解第二种方法。我如何计算 A^n 以及如何检查是否存在非零对角线条目?
  • @Vimzy A^1 是基本矩阵! A^2 是 A*A 和 ... 对于检查对角线条目,只需检查 A[0][0], A[1][1] ,.... 并查看是否有大于零的数字每一步。
猜你喜欢
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多