Algorithm 仅给出邻接矩阵的线性时间图的性质检验

Algorithm 仅给出邻接矩阵的线性时间图的性质检验,algorithm,graph,adjacency-matrix,Algorithm,Graph,Adjacency Matrix,我遇到了一个关于图表的问题。 让我们定义一个rake图 当n-顶点图满足某些条件时,它是一个rake: 图中有一个度为1的顶点 此顶点连接到阶数为2的顶点 此第二个顶点连接到阶数为n-2的另一个顶点。其他顶点可能相互连接,也可能不相互连接 对于n个顶点的图,我得到了一个邻接矩阵。我的任务是检查给定矩阵表示的图是否为“rake”。问题是必须在线性时间内完成 我什么都试过了。当你有邻接列表的时候,这很容易做到,但是我如何让它在给定矩阵的情况下花费O(n)时间呢?好的,我似乎找到了答案!确实有一个线性

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

当n-顶点图满足某些条件时,它是一个rake:

  • 图中有一个度为1的顶点
  • 此顶点连接到阶数为2的顶点
  • 此第二个顶点连接到阶数为n-2的另一个顶点。其他顶点可能相互连接,也可能不相互连接
  • 对于n个顶点的图,我得到了一个邻接矩阵。我的任务是检查给定矩阵表示的图是否为“rake”。问题是必须在线性时间内完成


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

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

    在这里你可以找到我一直在寻找的算法。


    谢谢你的帮助

    使用哈希表保存每个节点的计数器,只需在运行时扫描每个节点的邻接累积计数。然后检查节点以查看是否存在邻接1、2和n-2中的一个。那是O(n)。@rbaryyoung你能再说一点吗?我认为这个问题不是小事(至少对我的技能来说是如此)。只是为了100%清楚地了解最坏情况下的
    O(n)
    ?(顺便说一句,这真是个好问题;-)谢谢你!)这个问题据说在所有情况下都有一个线性解。我得到的唯一提示是“从耙子的角度来看,绝大多数顶点都不重要”——显然是指最后一个顶点来自中心:——)这不重要,但它们仍然存在!为了更符合指导原则,你应该考虑从链接中提取足够的信息并将其放入答案中,这样在不必检查链接的情况下可以理解算法。+ 1,对我来说,这是迄今为止我遇到的最好的问题——只是无法停止思考:-)我真的相信它在线性时间内是可行的。只是有一点遗憾,你这么快就发布了答案;-)(我忍不住要检查它是什么)好吧,我很高兴你喜欢它,波兹德罗维尼亚·兹格达斯卡:)