【发布时间】:2013-11-22 20:47:35
【问题描述】:
我遇到了一个关于图表的问题。 让我们定义一个 rake 图。
一个n-顶点图在满足特定条件时是一个rake:
- 图中有一个度数为 1 的顶点
- 此顶点连接到度数为 2 的顶点
- 第二个顶点连接到另一个 n-2 度顶点,其他顶点可能相互连接,也可能不相互连接。
我得到了一个包含 n 个顶点的图的邻接矩阵。我的任务是检查给定矩阵表示的图形是否为“rake”。关键是必须在线性时间内完成。
我什么都试过了。当你有邻接列表时很容易做到,但是我如何在给定矩阵的情况下让它花费 O(n) 时间?
【问题讨论】:
-
在您使用散列表保存每个节点的计数器时,只需扫描累积每个节点的计数的邻接。然后检查节点,看是否存在邻接 1,2 和 n-2 之一。这是 O(n)。
-
@RBarryYoung 你能多说一点吗?我认为这个问题不是微不足道的(至少对我的技能而言)。
-
只是为了 100% 了解
O(n)以应对最坏的情况? (顺便说一句。这真是个好问题;-)谢谢! ) -
好吧,据说这个问题在所有情况下都有一个线性解。我唯一的暗示是“从成为耙子的角度来看,绝大多数顶点并不重要” - 显然意味着最后一个顶点来自中心
-
:-) 这并不重要,但它们仍然存在!
标签: algorithm graph adjacency-matrix