Questions tagged «complexity-theory»

与解决问题的(计算)复杂性有关的问题


3
NP完全问题在NP中并非“显而易见”
在我读过的所有完整性证明中(我还记得),很多人总是很容易地证明中存在问题,并且表明这是 -困难是...困难的部分。什么 -完整的问题是这些,其多项式时间验证器是非常不平凡的?NPNP\textbf{NP}NPNP\textbf{NP}NPNP\textbf{NP}NPNP\textbf{NP}

1
regex golf NP-Complete吗?
如最近的XKCD摘录和最近的博客文章所示来自Peter Norvig(以及Slashdot故事中的后者),“ regex golf”(可能更好地称为正则表达式分离问题)是定义可能的最短正则表达式的谜题,该正则表达式接受集合A中的每个单词,而在其中不包含任何单词B集。Norvig的帖子中包含用于生成合理的简短候选者的算法,他指出他的方法涉及解决NP完全集覆盖问题,但他也要小心地指出,他的方法并未考虑所有可能的正则表达式,当然,他不一定是唯一的算法,因此不能保证他的解是最优的,而且其他确定的多项式时间算法也有可能找到等效或更好的解。 为了具体起见并避免解决优化问题,我认为正则表达式分隔的最自然表达是: 给定在某个字母两组(有限)字符串和,是否存在长度的正则表达式,该正则表达式接受每个字符串并拒绝每个字符串?一种AA乙BBΣΣ\Sigma≤ ķ≤k\leq k一种AA乙BB 是否知道有关此特定分离问题的复杂性?(请注意,由于我已将和指定为有限的字符串集,因此问题的自然大小概念是和中所有字符串的总长度;这会淹没任何贡献)。在我看来,它很可能是 NP完全的(实际上,我希望这种减少是某种掩护性问题),但是一些搜索并没有发现任何特别有用的东西。一种一种A乙乙B一种一种A乙乙Bķķk

2
凭经验判断问题是否可以完全解决
这个问题的灵感来自对StackOverflow的评论。 除了了解Garey Johnson这本书中的NP完全问题,以及其他许多问题之外;有一条经验法则可以知道问题是否看起来像是NP完整的问题吗? 我并不是在寻找严格的东西,而是在大多数情况下都能找到可行的东西。 当然,每次我们必须证明一个问题是NP完全问题,或者是NP完全问题的轻微变体时;但是在急于证明之前,对证明的肯定结果抱有一定的信心会很棒。

2
优化版本的决策问题
此问题是从理论计算机科学堆栈交换迁移而来的,因为可以在计算机科学堆栈交换上回答。 迁移 7年前。 已知每个优化/搜索问题都有一个等效的决策问题。例如最短路径问题 优化/搜索版本: 给定一个未加权无向图G=(V,E)G=(V,E)G = (V, E)和两个顶点v,u∈Vv,u∈Vv,u\in V,找到之间的最短路径vvv和。uuu 决策版本: 给定无向非加权图,两个顶点和一个非负整数,在和之间的是否存在一条路径,该路径的长度最大为?v ,Ü ∈ V ķ ģ ù v ķG=(V,E)G=(V,E)G = (V, E)v,u∈Vv,u∈Vv,u\in VkkkGGGuuuvvvkkk x∗∈Xx∗∈Xx^*\in XX ∈ X ˚F (X )≤ ķf(x∗)=min{f(x)∣x∈X}f(x∗)=min{f(x)∣x∈X}f(x^*) = \min\{f(x)\mid x\in X\}x∈Xx∈Xx\in Xf(x)≤kf(x)≤kf(x) \leq k 但是反过来也是如此,也就是说,每个决策问题都有一个等效的优化问题吗?如果不是,那么没有等效优化问题的决策问题的例子是什么?

2
是Dominosa NP-Hard吗?
此问题是从“数学堆栈交换” 迁移而来的,因为可以在“计算机科学堆栈交换”上回答。 迁移 6年前。 Dominosa是一个相对较新的益智游戏。在 网格上播放。在游戏开始之前,将多米诺骨牌 放置在网格上(构成完美的平铺) )。在下一步中,将隐藏多米诺骨牌,仅保留数字。游戏的目的是恢复多米诺骨牌的原始排列。您可以在这里玩游戏:http : //www.puzzle-dominosa.com/:(0 ,0 ),(0 ,1 ),... ,(Ñ ,Ñ )(n + 1 )× (n + 2 )(n+1)×(n+2)(n+1)\times(n+2)(0 ,0 ),(0 ,1 ),... ,(Ñ ,Ñ )(0,0),(0,1),…,(n,n)\left(0,0\right),\left(0,1\right),\ldots,\left(n,n\right) 规则: 规则很简单。您必须找到网格上所有多米诺骨牌的位置。多米诺骨牌是一对数字。每对中只能有一个。 我有一些多项式算法可以解决难题的一小部分。我还可以证明典型的Dominosa网格至少具有解决方案。2ñ2+ o (n )2n2+o(n)2^{\frac{n}{2}+o\left(n\right)} 是Dominosa NP-Hard吗?

1
字符串中最长的重复(分散)子序列
非正式问题陈述: 给定一个字符串(例如,我们希望将一些字母成红色,将一些字母成蓝色(有些根本不),这样,从左到右仅读取红色字母会产生与仅读取蓝色字母相同的结果。ACCABBABACCABBABACCABBAB 在示例中,我们可以为它们着色:ACCABBABACCABBABA\color{blue}{C}\color{red}{CAB}B\color{blue}{AB} 因此,我们说是的重复子。它也是最长的重复子序列(易于检查)。A C C A B B A BCABCABCABACCABBABACCABBABACCABBAB 我们可以有效地计算最长的重复子序列吗? 正式问题: 确定字符串和某个是否难为NP,字符串中是否存在长度为的重复子序列?ķkkkkkk 如果是这样:哪个问题可以减少到这个问题? 如果不是:什么是有效算法?(显然,此算法可用于计算最长的重复子序列) 奖励问题: 如果字母的大小受常数限制,它们将始终是长度为的重复子序列吗?n/2−o(n)n/2−o(n)n/2 - o(n) (这对于二进制字母来说是正确的。) 编辑2:对于奖金问题的否定答案,众所周知的是大小至少为字母。实际上,对于大小为Σ的字母,存在具有最长重复子序列且长度仅为O(n·Σ^ {-1/2})的字符串。随机字符串足以证明这一点。结果已经存在,但我忽略了它。555ΣΣΣO(n⋅Σ−1/2)O(n·Σ−1/2)O(n · Σ^{-1/2}) 编辑: 注意: 有些人说“子序列”时,其意思是“子串”。我不。这不是找到子字符串两次的问题。

3
NP完整性教学-Turing减少vs Karp减少
我对如何最好地向计算机科学专业的学生教授NP完整性的问题感兴趣。特别是,我们应该使用Karp缩减还是Turing缩减来教授它? 我觉得NP完全性和约简的概念是每个计算机科学专业都应该学习的东西。但是,在教授NP完整性时,我注意到使用Karp约简法有一些缺点。 首先,对某些学生来说,减少Karp似乎不必要地令人困惑。减少的直观概念是“如果我有解决问题X的算法,那么我也可以使用它来解决问题Y”。这是非常直观的-但映射到Turing缩减比映射Karp缩减要好得多。结果,我看到试图证明NP完整性的学生因直觉而误入歧途,并形成了错误的证明。尝试教授这两种简化方法并强调Karp简化方法的这一方面有时会感觉有点像是不必要的形式主义,并且会占用不必要的课堂时间和学生的注意力,这似乎是无关紧要的技术细节;我们为什么要使用这种更严格的还原概念,这并不是不言而喻的。 我确实了解Karp缩减和Turing(Cook)缩减之间的区别,以及它们如何导致NP完整性的不同概念。我意识到,减少Karp可以使我们更好地区分复杂度等级之间的区别。因此,对于认真研究复杂性理论,减少Karp显然是正确的工具。但是对于仅学习此方法并且永远不会进入复杂性理论的计算机科学专业的学生来说,我不确定这种更好的区分是否对他们至关重要至关重要。 最后,作为一名学生,我记得遇到“重言式”之类的问题时感到困惑-例如,给定一个布尔公式,检查它是否是重言式。令人困惑的是,这个问题显然很难解决:任何多项式时间算法都意味着P=NPP=NPP=NP; 解决这个问题显然和解决重言式问题一样困难。但是,即使从直觉上讲重言式和可满足性一样难,重言式也不是NP难的。是的,我今天了解为什么会这样,但当时我记得对此感到困惑。(一旦我终于明白了,我的脑海便是:无论如何,我们为什么要区分NP-hard和co-NP-hard?这似乎是人为的,并且在实践中没有很好的动机。为什么我们专注于NP而不是从实际的角度来看,共NP硬度似乎与NP硬度在本质上具有相同的实际结果,所以为什么我们都对这种区别挂了钩?是的,我知道答案,但是作为一名学生,我记得这只是让这个科目变得更加神秘和缺乏动力。) 所以,我的问题是这个。当我们向学生教授NP完全性时,使用Karp归约法或Turing归约法更好吗?有没有人尝试使用图灵归约法来教授NP完全性的概念?如果是这样,情况如何?如果我们使用图灵归约法讲授概念,而跳过与Karp归约法相关的概念性问题,会有任何明显的陷阱或弊端吗? 相关:请参见此处和此处,其中提到我们在文献中使用Karp归约法的原因是因为它使我们能够区分NP硬度和共NP硬度。但是,似乎没有给出任何针对该能力是否对每个CS专业都应该学习的算法课程的学习目标至关重要的教学观点的答案。另请参见cstheory.SE上的此处,该讨论也有类似的讨论。

5
为什么NP中没有这个无法确定的问题?
显然,NP中没有任何无法确定的问题。但是,根据维基百科: NP是所有决策问题的集合,对于这些问题,答案为“是”的实例具有[..证明]可通过确定性图灵机在多项式时间内验证。 [...] 当且仅当存在在多项式时间内执行的问题的验证者时,才认为问题出在NP中。 现在考虑以下问题: 给定Diophantine方程,它有没有整数解? 给定一个解决方案,很容易在多项式时间内验证它确实是一个解决方案:只需将数字插入方程式即可。因此,问题出在NP。然而,众所周知,解决这个问题还不确定! (类似地,似乎暂停问题应该在NP中,因为“该程序在第N步停止”的“是”解决方案可以在N步中得到验证。) 显然我的理解有问题,但这是什么?


2
是否存在易于计算但难以验证的问题?
假设P NP,则NP完全问题“很难解决,但答案易于检查”。考虑相反的情况是否有意义,也就是说,对于这些问题而言,很容易计算出正确的答案,而很难验证任意一个所谓的解决方案?≠≠\neq 我认为这样的问题暗示: 对于任何给定的输入,指数地有许多“正确”答案,因为否则可以通过简单地计算所有正确答案来执行验证。 一些“正确”的答案很容易计算,而另一些则很难找到。

3
真的有可能证明下界吗?
给定任何计算问题,为这种计算找到下界的任务确实可行吗?我想它可以归结为如何定义单个计算步骤以及我们用于证明的模型,但是鉴于此,我们是否真的能证明通常的下界?我的意思是,我们能否证明“问题不能比时间更快地解决”而不是“问题可以在时间内或更快地解决”?XXXt(X)Ť(X)t(X)XXXt(X)Ť(X)t(X) 我试图找到有关下限及其证明的信息,但是我真的找不到任何有趣的东西,关于该主题的书籍/论文/网站有什么建议吗?

2
是否有一种有时有效的算法来解决#SAT问题?
令为一个布尔公式,由通常的AND,OR和NOT运算符以及一些变量组成。我想计算的令人满意的作业数量。也就是说,我想找到真值的不同分配到的变量数目为其假定真值。例如,公式具有三个令人满意的赋值;有四个。这是#SAT问题。乙乙B乙乙B乙乙B乙乙B一个∨ b一种∨ba\lor b(一个∨ b )∧ (ç ∨ ¬ b)(一种∨b)∧(C∨¬b)(a\lor b)\land(c\lor\lnot b) 显然,对此问题的有效解决方案将是对SAT的有效解决方案,这不太可能,而且实际上此问题是#P完全的,因此可能比SAT严格得多。因此,我不期望有一个保证有效的解决方案。 但是众所周知,SAT本身真正困难的实例相对很少。(例如,Cheeseman 1991,“ 真正困难的问题在哪里”。)普通的修剪搜索,尽管在最坏的情况下是指数式的,但可以有效地解决许多实例。解决方法虽然在最坏的情况下是指数级的,但在实践中甚至更为有效。 我的问题是: 是否有已知算法可以快速计算一个典型布尔公式的满意赋值数量,即使这种算法在一般情况下需要指数时间也是如此?有什么比列举每个可能的任务明显更好的了吗?

2
逻辑最小剪切NP是否完整?
此问题是从Stack Overflow 迁移而来的,因为可以在Computer Science Stack Exchange上回答。 迁移 7年前。 逻辑最小割(LMC)问题定义 假设是一个无权有向图,和是两个顶点,并且可以从到达。LMC问题研究如何遵循以下约束,通过去除的某些边,使无法从到达:s t V t s t s GG=(V,E)G=(V,E)G = (V, E)ssstttVVVtttsssŤttsssGGG 删除的边的数量必须最少。 我们无法删除的任何顶点的每个出口边缘(即,没有带有外沿的顶点可以删除其所有外沿)。GGG 第二个约束称为逻辑删除。因此,我们寻求对的某些边进行逻辑上最小的去除,以使从不可到达。吨小号GGGŤttsss 解决方案尝试 如果我们忽略LMC问题的逻辑去除约束,它将是未加权有向图的最小割问题,因此它将是多项式可解的(最大流最小割定理)。GGG 如果我们忽略LMC问题的最小去除约束,这将是一个DAG再次解多项式:找一个顶点这样从可达和不是从可达。然后考虑路径,它是从到的任意路径。现在将路径视为的子图:答案将是子图每个出口边缘。显然,可以在多项式时间内通过DFS在中找到顶点。不幸的是,该算法通常无法正常工作ķ 小号吨ķ p 小号ķ p ģ p ķ ģkkkkkkssstttkkkpppssskkkpppGGGpppkkkGGG 对于任意有向图。 我试图通过动态编程技术解决LMC问题,但是解决问题所需的状态数却成指数增长。此外,我尝试减少一些NP-Complete问题,例如3-SAT,max2Sat,max-cut和LMC问题的派系,而这些LMC问题我没有设法找到。 我个人认为,即使是二进制DAG(即,没有节点的出度大于2的DAG),LMC问题也是NP-Complete 。GGG 问题 LMC问题是否在任意有向图中为NP完全?(主要问题)GGG LMC问题是否在任意DAG中为NP完全?GGG LMC问题是否在任意二进制DAG中为NP完全?GGG

2
“ NP完全”优化问题
此问题是从Stack Overflow 迁移而来的,因为可以在Computer Science Stack Exchange上回答。 迁移 7年前。 我对所遇到的关于优化问题的复杂性的某些术语感到有些困惑。在算法课程中,我遇到了一个大的简约问题,被描述为NP-complete。但是,我不确定在优化问题中术语“ NP完全”的含义。这是否仅表示相应的决策问题是NP完全的?这是否意味着优化问题实际上可能会更困难(也许在NP之外)? 尤其是,我担心这样一个事实,即一个NP完全决策问题可以通过多项式时间验证,而解决相应优化问题的方法似乎并不是多项式时间可验证的。这是否意味着问题并非真正存在于NP中,还是多项式时间可验证性只是NP决策问题的特征?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.