我想引用Wikipedia
在数学中,最小k-cut是组合优化 需要找到一组去除的边缘的问题 将图分割为k个连通分量。
如果边缘集最小,则称为最小切割。
对于k = 2,这意味着找到一组边缘,其中断开图形为2个连接的组件。
然而,维基百科的同一篇文章说:
对于固定的k,问题是在O(| V | ^(k ^ 2))中可解的多项式时间
我的问题是,这是否意味着最小2-cut是属于复杂性类P的问题?
答案 0 :(得分:0)
最小割问题在多项式时间内是可解的,因此它确实属于复杂性类P.另一篇与此特定问题相关的文章是Max-flow min-cut theorem。
答案 1 :(得分:0)
首先,算法的时间复杂度应通过表示算法作为输入长度的函数完成所需的步数来评估(参见Time complexity) 。或多或少正式地,如果你改变输入的长度,算法完成所需的步骤数将如何变化?
其次,算法的时间复杂度与算法解决的问题所属的复杂性类不完全相同。对于一个问题,可以有多种算法来解决它。素数测试问题(即测试数字是否为素数)在 P 中,但实际使用的一些(大多数)算法实际上并非多项式。
第三,在大多数算法的情况下,你会在互联网上找到评估时间复杂度不是按定义进行的(即不是输入长度的函数,至少不直接表示) 。让我们采用良好的旧天真素数测试算法(您将n
作为输入,并检查除2,3...n-1
)。这个算法采取了多少步骤?一种方法是O(n)
步骤。这是对的。这个算法是多项式的吗?嗯,它在n
中是线性的,因此它是n
中的多项式。但是,如果你看一下时间复杂度意味着什么,算法实际上是指数的。首先,问题输入的长度是多少?好吧,如果你提供输入n
作为位数组(通常在实践中),那么输入的长度大致是L = log n
。因此,您的算法需要O(n)=O(2^log n)=O(2^L)
个步骤,因此在L
中呈指数级。因此,幼稚素性测试在n
中是线性的,但在输入L
的长度上是指数的。两个都正确。顺便说一句,AKS素性测试算法是输入大小的多项式(因此,素性测试问题在 P )。
首先,首先是 P 是什么?嗯,这是一类包含所有可以在多项式时间内解决的决策问题的问题。什么是决策问题?可以用是或否回答的问题。查看这两个维基百科页面了解更多详情:P (complexity)和decision problems。
回到你的问题,答案是否定的(但非常接近于:p)。如果制定为决策问题,那么最小的2-cut问题是 P (您的表述需要的答案不仅仅是肯定或否定)。同时,在O(|V|^4)
步骤中解决问题的算法是输入大小的多项式算法。为什么?好吧,问题的输入是图形(即顶点,边和权重),为了保持简单,我们假设我们使用邻接/权重矩阵(即输入的长度至少是|V|
中的二次方) 。因此,在O(|V|^4)
步骤中解决问题意味着输入大小的多项式。实现这一目标的算法证明了最小的2-cut问题(如果表达为决策问题)是 P 。
与 P 相关的课程是 FP ,您的问题(正如您制定的那样)属于此课程。