【问题标题】:Checking graph properties in linear time given only the adjacency matrix仅在给定邻接矩阵的情况下以线性时间检查图形属性
【发布时间】:2013-11-22 20:47:35
【问题描述】:

我遇到了一个关于图表的问题。 让我们定义一个 rake 图。

一个n-顶点图在满足特定条件时是一个rake

  1. 图中有一个度数为 1 的顶点
  2. 此顶点连接到度数为 2 的顶点
  3. 第二个顶点连接到另一个 n-2 度顶点,其他顶点可能相互连接,也可能不相互连接。

我得到了一个包含 n 个顶点的图的邻接矩阵。我的任务是检查给定矩阵表示的图形是否为“rake”。关键是必须在线性时间内完成。

我什么都试过了。当你有邻接列表时很容易做到,但是我如何在给定矩阵的情况下让它花费 O(n) 时间?

【问题讨论】:

  • 在您使用散列表保存每个节点的计数器时,只需扫描累积每个节点的计数的邻接。然后检查节点,看是否存在邻接 1,2 和 n-2 之一。这是 O(n)。
  • @RBarryYoung 你能多说一点吗?我认为这个问题不是微不足道的(至少对我的技能而言)。
  • 只是为了 100% 了解O(n) 以应对最坏的情况? (顺便说一句。这真是个好问题;-)谢谢! )
  • 好吧,据说这个问题在所有情况下都有一个线性解。我唯一的暗示是“从成为耙子的角度来看,绝大多数顶点并不重要” - 显然意味着最后一个顶点来自中心
  • :-) 这并不重要,但它们仍然存在!

标签: algorithm graph adjacency-matrix


【解决方案1】:

好的,我似乎找到了答案!确实有一个线性时间算法可以解决这个问题,因为我提出的问题在科学界被称为检查图是否为蝎子图!

在这里您可以找到我一直在寻找的算法。 http://www.cs.cornell.edu/courses/cs681/2007fa/Handouts/scorpion.pdf

感谢您的帮助!

【讨论】:

  • 为了更符合Stack Overflow 准则,您应该考虑从链接中提取足够的信息并将其放入答案中,以便无需检查链接即可理解算法。跨度>
  • +1,对我来说,这是迄今为止我在 SO 中遇到的最好的问题——只是无法停止思考它 :-) 我真的相信它在线性时间内是可行的。只是有点后悔你这么快就发布了答案;-) [我只是忍不住要检查它是什么]
  • 嗯,很高兴你喜欢它,pozdrowienia z Gdańska :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多