【发布时间】:2020-10-16 14:23:40
【问题描述】:
需要证明:
在无向图中找到所有可能的简单路径是 NP 难/ NP 完全的。该图可能包含同一对节点和循环之间的多条边。
我已经搜索过了,有一些想法或讨论。但我需要一个直接证明/链接,说明复杂性是 NPC/NP-Hard。
【问题讨论】:
标签: graph-theory np np-complete np-hard
需要证明:
在无向图中找到所有可能的简单路径是 NP 难/ NP 完全的。该图可能包含同一对节点和循环之间的多条边。
我已经搜索过了,有一些想法或讨论。但我需要一个直接证明/链接,说明复杂性是 NPC/NP-Hard。
【问题讨论】:
标签: graph-theory np np-complete np-hard
“查找某种类型的所有对象”形式的问题不是 NP 完全的,因为 NP 纯粹由 决策问题 组成,这些问题有是/否的答案。所以这个问题不可能是NP完全的。
如果您特别需要按大小降序列出路径,那么问题将是 NP-hard。如果您可以按大小降序列出所有路径,那么您只需检查第一条路径以查看它是否通过所有节点。如果是这样,太好了!您的图有一条哈密顿路径,并且找到哈密顿路径是 NP-hard。
另一方面,如果您按长度升序列出路径,那么假设您使用的是图灵机,那么简单地读取所有路径以到达最后一个路径的成本将超过多项式时间,所以这种减少是行不通的。一个类似的论点表明,如果路径以任意顺序返回,这种减少将不起作用。我怀疑,但不完全确定,该版本的问题是否是 NP 难题尚不清楚,但我愿意对此进行更正。
考虑到图中的简单路径的数量可以是 O(n!),这更有趣,当图是一个完整的图时会发生这种情况(所有节点对都由边连接)。某件事需要很长时间才能完成这一事实并不立即意味着它是 NP-hard 或 NP-complete。
希望这会有所帮助!
【讨论】:
这个问题的复杂度似乎是 O(n!),比 NP-Hard / NP-Complete 系列的 O(2^n) 还要糟糕。此外,这不是 NP-Hard / NP-Complete,因为它甚至不在 NP 中。
NP的要求:
“如果一个问题的解可以在多项式时间内被猜测和验证,则该问题称为 NP(非确定性多项式)”[1]
您的问题不在 NP 中,因为检查解决方案的复杂度为 O(n!),就像计算结果一样,因为在 (n-1)-Simplex(具有 n 个顶点的完全互连图)中[@987654322 @] 所有可能的简单路径的解决方案将是 for(i = {1 to n}){sum(n!/(ni)!)} + 1 用于空集路径(请查看 templatetypedef 的评论[3 ] 用于证明),这是 O(n!),更具体地说,它不属于多项式时间解。
在上图中[4],您有一个 3 单纯形的示例。
完整枚举将由 for(i = {1 to 4}){sum(4!/(4-i)!)}+1 = (4!÷3!)+(4!÷2!) +(4!÷1!)+(4!÷0!)+1 = 65 条路径:
{}
{A}
{A->B}
{A->B->C}
{A->B->D}
{A->B->C->D}
{A->B->D->C}
{A->C}
{A->C->B}
{A->C->D}
{A->C->B->D}
{A->C->D->B}
{A->D}
{A->D->B}
{A->D->C}
{A->D->B->C}
{A->D->C->B}
{B}
{B->A}
{B->A->C}
{B->A->D}
{B->A->C->D}
{B->A->D->C}
{B->C}
{B->C->A}
{B->C->D}
{B->C->A->D}
{B->C->D->A}
{B->D}
{B->D->A}
{B->D->C}
{B->D->A->C}
{B->D->C->A}
{C}
{C->B}
{C->B->A}
{C->B->D}
{C->B->A->D}
{C->B->D->A}
{C->A}
{C->A->B}
{C->A->D}
{C->A->B->D}
{C->A->D->B}
{C->D}
{C->D->B}
{C->D->A}
{C->D->B->A}
{C->D->A->B}
{D}
{D->B}
{D->B->C}
{D->B->A}
{D->B->C->A}
{D->B->A->C}
{D->C}
{D->C->B}
{D->C->A}
{D->C->B->A}
{D->C->A->B}
{D->A}
{D->A->B}
{D->A->C}
{D->A->B->C}
{D->A->C->B}
希望这有助于解决这个问题。
【讨论】: