【问题标题】:Circular graph common inner nodes, in NP圆形图公共内部节点,在 NP
【发布时间】:2021-11-30 19:55:15
【问题描述】:

我很难弄清楚这个问题。

问题是:我们有一个循环无向图G。我们从某个节点开始,然后在整个图中采用循环路径返回起始节点。我们想知道图中是否有一些k 节点列表必须始终用于图中的每条路径。问题差不多了,这些k节点存在吗?

我需要证明这个问题在NP中。但是,不太确定如何执行此操作。

为了证明它在 NP 中,我需要能够验证解决方案。但是,我什至不确定如何从问题本身入手,因为我以前从未见过类似的情况。有人可以提供一些建议吗?有谁知道可以帮助验证的等效问题?

例如,对于起始节点s,我们总是需要遍历b。所以设置k = {b}

输入:无向图 G = (V, E),整数 k。 问题:是否存在一组由 k 个顶点组成的 S,使得图中的每个循环都至少包含一个 S的顶点?

验证者算法不能简单地取一组 k 个节点组成的 S,并枚举图中的每个循环,以检查它是否包含 S 中的至少一个顶点。图中可能有指数级的循环数,而验证者算法需要在多项式时间内运行。它需要比这更聪明。

【问题讨论】:

  • 你需要证明它是 NP 到 NP-Complete 吗?
  • 那我可能错过了一些东西。给定图表和一组节点 - 如果您将它们从图表中删除,并且它不再是循环的(可由 BFS 验证) - 这些节点对于图表来说确实是必不可少的。
  • @zvonimir 您对“圆形无向图”的定义是什么?是包含圆形路径的图,还是包含哈密顿回路的图?
  • @Berthur 非常感谢您的建议,我认为这是正确的方法。抱歉,我是 NP 概念的新手。 :)
  • @zvonimir Lol,这完全改变了问题。

标签: algorithm complexity-theory graph-theory np


【解决方案1】:

要验证一个问题在NP(不是NPC),你需要得到问题的输入,以及一个多项式大小的验证输入——并使用它,确定答案是否是决策问题的原始输入在多项式时间内为真或假(这与使用非确定性图灵机的定义等效)。

  • 在您的情况下,问题的输入是G=(V,E),以及一些整数k
  • 验证字符串将是一组 S 与候选节点集。

现在,给定这些输入 - 首先检查 |S| = k,然后创建 G' = (V', E'),其中:

V' = V\S
E' = { (u,v) | (u,v) in E and u in V' and v in V' }

现在,对 V' 中的每个节点进行 DFS。 DFS 需要多项式时间,您需要执行多项式次数 - 所以仍然是多项式时间复杂度。您正在搜索 V' 中是否存在循环(到达您开始的同一节点)。

  • 如果你找到了,那么问题的答案就是正确的(有这样一组大小k)。
  • 否则为假(没有设置)。

【讨论】:

    猜你喜欢
    • 2013-01-20
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 2017-05-08
    • 1970-01-01
    • 2010-11-18
    相关资源
    最近更新 更多