Algorithm 寻找类似的已知问题

Algorithm 寻找类似的已知问题,algorithm,complexity-theory,graph-algorithm,minimum-spanning-tree,proof,Algorithm,Complexity Theory,Graph Algorithm,Minimum Spanning Tree,Proof,我试图证明这个优化问题的计算机复杂性: 给定一个连通图G=(V,E)和一个集S⊊ V.找到一个连通子图G'=(V',E'): 受制于: S ⊊ V’ V’ ⊆ V 它看起来像是最小生成树问题的推广,而不是所有顶点都必须包含在树中。 有没有一个已知的问题可以用来通过简化来证明这个问题的复杂性?你的问题公式并不是说你首先在-f(G')上优化什么,然后在该最小值内优化,或者反过来,或者两者以某种方式结合 如果你在成本边上进行优化,这就是Steiner最小树(SMT)问题,因为它是NP完全的。如果您在

我试图证明这个优化问题的计算机复杂性:
给定一个连通图G=(V,E)和一个集S⊊ V.找到一个连通子图G'=(V',E'):

受制于:

S ⊊ V’
V’ ⊆ V
它看起来像是最小生成树问题的推广,而不是所有顶点都必须包含在树中。
有没有一个已知的问题可以用来通过简化来证明这个问题的复杂性?

你的问题公式并不是说你首先在-f(G')上优化什么,然后在该最小值内优化,或者反过来,或者两者以某种方式结合

如果你在成本边上进行优化,这就是Steiner最小树(SMT)问题,因为它是NP完全的。如果您在| V'|上进行优化,您可以使用以下方法在多项式时间内将SMT减少到它:

让节点u和v之间的边(u,v)的代价为k。用以下路径替换此边:

(u, i_1), (i_1, i_2), ..., (i_k, v) 
因此,此路径上每条边的成本为1。将代价(u,v)的边替换为路径,路径上有k-1个中间节点,并且每条边的代价为1

对图形上的每一条边都这样做。它将SMT简化为您的问题,并证明您在| V'|上的优化是NP完全的。你的降价需要花费多少时间

O(C*|V|^2) 
图中C是边代价上界的时间


我刚刚看到了问题。希望能有帮助

实际上,它更像是MST的推广,而不是特例。对f有约束吗?对f没有约束。假设f是一个函数,它求G’中每个顶点的阶的和,你是对的larsmans,它是MSP问题的推广。我将编辑这个问题。谢谢+1问一个有趣的问题,但我不能提供任何真正的帮助:)它可能不够一般,但可以看一看,在其中,您希望找到连接更大图形中预定义顶点集的最佳方式。这是一个古老的NP难问题,所以你可以把它简化成这个问题吗?嗨,阿什利,谢谢你的回答!根据我的问题限制,我不能在G'中使用不在G(V'中的顶点⊆ 五) );所以我对你用Steiner最小树问题(SMT用Steiner点)的证明感到困惑。关于优化函数,你是对的,它们不够清楚;我将编辑这个问题。(1/2)我假设您指的是在缩减过程中添加的节点。这不会违反您的条件:假设要简化的SMT问题在图H=(V_H,E_H)上,其中H的边是加权的。假设N是SMT上需要在H上构造的节点集,其中N是V_H的子集。通过多项式约化,您将此图转换为H_2=(V_2,E_2)。很明显,V_2是V_h的超集,而V_h又是V_h的超集,E_2中每条边的权重为1。(2/2)V_2是要输入到算法中以解决问题的图形——本例中的输入是图形h_2和集合N。解决方案上的节点是解决问题的算法,SMT的解决方案都在输入图上,即H_2。没有违反您所指的条件。您的算法没有向输入图添加或假设任何内容。只是在处理而已。嗯,你说得对。图H2是约化函数的结果。
O(C*|V|^2)