Questions tagged «reductions»

在可计算性和复杂性方面,找到问题之间的映射,以允许使用另一个解决方案来解决一个问题。有关简化编程语言理论(例如,减少beta)的信息,请参见[lambda-calculus]或[term-rewriting]。

4
有什么常用技术可以减少彼此的问题?
在可计算性和复杂性理论(可能还有其他领域)中,减少是无处不在的。有很多种类,但是原理保持不变:通过将实例映射到L_1中与解决方案等效的实例,可以证明一个问题至少与其他问题一样困难。本质上,我们表明,如果允许L_1的任何求解器使用归约函数作为预处理器,它也可以求解L_2。L 2 L 2大号1个L1L_1大号2L2L_2大号2L2L_2L 1 L 2大号1个L1L_1大号1个L1L_1大号2L2L_2 这些年来,我已经完成了减少的份额,有些事情困扰着我。尽管每个新的减少都需要(或多或少)创造性的构造,但任务可能会让人感到重复。是否有规范的方法库? 人们可以定期采用哪些技术,模式和技巧来构造归约函数? 这应该成为参考问题。因此,请谨慎给出一般的,有说服力的答案,至少由一个例子说明了这一点,但仍然涵盖了许多情况。谢谢!

2
为什么C的void类型不同于Empty / Bottom类型?
维基百科以及我发现的其他来源都将C的void类型列为单位类型,而不是空类型。我觉得这很混乱,因为在我看来,它void更适合于空/底类型的定义。 void据我所知,没有价值观存在。 返回类型为void的函数指定该函数不返回任何内容,因此只能执行某些副作用。 类型的指针void*是所有其他指针类型的子类型。同样,void*在C中进行来回转换是隐式的。 我不确定最后一点是否可以作为void空类型的参数,void*或多或少是与无关的特例void。 另一方面,void它本身不是所有其他类型的子类型,据我所知,这是将类型作为底部类型的要求。
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 


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上的此处,该讨论也有类似的讨论。

1
排序为线性程序
数量惊人的问题使线性编程(LP)的问题自然减少。请参见[1]的第7章中的示例,例如网络流量,二分匹配,零和博弈,最短路径,线性回归形式甚至电路评估! 由于电路评估简化为线性规划,因此任何问题都必须具有线性规划公式。因此,通过简化为线性程序,我们有了一种“新”的排序算法。所以,我的问题是PPP 将对实数数组进行排序的线性程序是什么?nnn Reduce-to-LP-and-solve排序算法的运行时间是多少? 算法由S.达斯古普塔,C. PAPADIMITRIOU和U.瓦齐拉尼(2006)

2
如果我可以解决数独问题,可以解决旅行商问题(TSP)吗?如果是这样,怎么办?
我们说有一个程序,如果您提供任意大小的部分填充的数独,它会为您提供相应的完整数独。 您可以将此程序视为黑匣子,并用它来解决TSP吗?我的意思是,有一种方法可以将TSP问题表示为部分填充的Sudoku,以便如果我给您Sudoku的答案,您可以在多项式时间内告诉TSP解决方案? 如果是,怎么办?如何将TSP表示为部分填充的数独,并为结果解释相应的填充的数独。

3
将(数学)问题转换为SAT实例
我想要做的是将我遇到的一个数学问题转换为布尔可满足性问题(SAT),然后使用SAT解算器进行求解。我想知道是否有人知道手册,指南或任何可以帮助我将问题转换为SAT实例的内容。 另外,我想在比指数时间内更好的解决这个问题。我希望SAT解算器能对我有所帮助。

2
“子产品”问题NP是否完整?
子集和问题是经典的NP完全问题: 给定一个数字和一个目标k的列表,是否有一个L的数字子集加起来等于k?大号LLķkk大号LLķkk 一个学生问我这个称为“子集产品”问题的变体是否是NP完全的: 给定一个数字和一个目标k的列表,是否有L个数字的子集,乘积为k?大号LLķkk大号LLķkk 我进行了一些搜索,但是找不到任何有关此问题的资源,尽管也许我错过了。 子产品问题NP是否完整?

2
将以下问题简化为SAT
这是问题所在。给定,其中每个。是否存在子集,其大小最大为,使得所有?我正在尝试将此问题简化为SAT。我的解决方案的想法是为1到每一个变量。对于每个,如果,则创建一个子句。然后将所有这些子句放在一起。但这显然不是一个完整的解决方案,因为它不代表的约束。k,n,T1,…,Tmk,n,T1,…,Tmk, n, T_1, \ldots, T_mTi⊆{1,…,n}Ti⊆{1,…,n}T_i \subseteq \{1, \ldots, n\}S⊆{1,…,n}S⊆{1,…,n}S \subseteq \{1, \ldots, n\}kkkS∩Ti≠∅S∩Ti≠∅S \cap T_i \neq \emptysetiiixixix_innnTiTiT_i(xi1∨⋯∨xik)(xi1∨⋯∨xik)(x_{i_1} \vee \cdots \vee x_{i_k})Ti={i1,…,ik}Ti={i1,…,ik}T_i = \{i_1, \ldots, i_k\}SSS最多包含元素。我知道我必须创建更多的变量,但是我不确定如何。所以我有两个问题:kkk 我的解决方案思路是否正确? 如何创建新变量,以便可以将它们用于表示基数约束?kkk

2
子集总和:将特殊情况减少为一般情况
Wikipedia指出子集总和问题是找到给定整数集合的总和为零的子集。进一步说,这等同于为任何给定找到具有和的子集。ssssss 因此,我认为,因为它们是等效的,所以任何一方都必须减少。通过设置s = 0,从到零的1是微不足道的。但是我没有运气找到从零到减少小号,即给定的一组整数甲,构建一组整数乙包含与总和的子集小号(对于任何小号),当且仅当有作为子集阿与总和为零。ssss=0s=0s = 0sssAAABBBssssssAAA 你能给我一些指导吗?


3
半峰-NP完全问题
首先,我要指出这是一个作业问题,请仅提供建议和相关意见,请不要直接回答。话虽如此,这就是我要解决的问题: 让HALF-CLIQUE = { | G是具有至少n / 2个节点的完整子图的无向图,其中n是G }中的节点数。证明HALF-CLIQUE是NP完整的。⟨G⟩⟨G⟩\langle G \rangleGGGn/2ñ/2n/2GGG 另外,我知道以下几点: 就此问题而言,集团定义为输入图的无向子图,其中每两个节点由一条边连接。甲 -cliquekķk是包含一个集团节点。kķk 根据我们的教科书,迈克尔·西蓬瑟的“ 介绍计算理论 ”,第268,这个问题CLIQUE = { | G是一个无向图,其中k -clique}在NP中⟨G,k⟩⟨G,ķ⟩\langle G,k\rangleGGGkķk 此外,根据同一资料(第283页),我们注意到CLIQUE存在于NP-Complpete中(因此也显然存在于NP中)。 我想我在这里有答案的内核,但是我可以使用一些指示来说明问题所在或与答案有关的任何相关要点。到目前为止,这是我的基本想法, 好吧,我首先注意的证书只会是一个半QLIQUE 。现在看来,我需要做的是创建一个检验器,该检验器是从CLIQUE(我们知道是NP-Complete)到HALF-CLIQUE的多项式时间缩减。我的想法是,这将通过创建一个图灵机来完成,该图灵机在本书中为CLIQUE运行图灵机验证程序,并为HALF-CLIQUE附加约束。size≥n/2尺寸≥ñ/2\text{size} \geq n/2 这听起来对我来说是正确的,但我还不太相信这个学科。我想再次提醒大家这是一个家庭作业问题,因此请避免回答这个问题。任何不符合此要求的指导都将受到欢迎!

2
可以通过图灵折减来显示NP硬度吗?
Ramírez-Alfonsín 在论文的Frobenius问题的复杂度中,使用图灵归约法证明了一个问题是NP完全的。那可能吗?到底如何 我以为这只有通过多项式时间多减一才有可能。有什么参考吗? 是否存在两种不同的NP硬度概念,甚至是NP完整性?但是然后我感到困惑,因为从实际的角度来看,如果我想证明我的问题是NP难题,我该使用哪一个? 他们开始进行如下描述: 从问题 到另一个问题的多项式时间Turing约简 是一种算法A,它 通过使用假设子例程A'求解来求解 , 使得如果A'是的多项式时间算法, 则A将是多项式时间算法 。我们说 可以被图灵简化为 。P1P1P_1P2P2P_2P1P1P_1P2P2P_2P2P2P_2P1P1P_1P1P1P_1P2P2P_2 一个问题 被调用(图灵)NP-硬,如果有一个NP完全决策问题 使得 可以图灵降低到 。P1P1P_1P2P2P_2P2P2P_2P1P1P_1 然后,他们使用NP完全问题的Turing约简来显示其他一些问题的NP完全性。

1
min cut比网络流更容易吗?
感谢最大流量最小割定理,我们知道我们可以使用任何算法来计算网络图中的最大流量来计算最小割。因此,计算最小 -cut的复杂度不超过计算最大 -flow 的复杂度。(s,t)(s,t)(s,t)(s,t)(s,t)(s,t)(s,t)(s,t)(s,t) 会更少吗?是否有一种算法可以计算出比任何最大流量算法都快的最小切割?(s,t)(s,t)(s,t) 我试图找到一种减少方法,以将)-最大流量问题减少为 -min-cut问题,但我找不到。我的第一个想法是使用分治法:首先找到一个最小割,将图形分为两部分;现在,递归地找到左侧部分的最大流和右侧部分的最大流,并将它们与穿过切口的所有边合并在一起。这确实可以产生最大流量,但是最坏的运行时间可能是最小切割算法运行时间的倍。有更好的减少方法吗?(s,t(s,t(s,t(s,t)(s,t)(s,t)O(|V|)O(|V|)O(|V|) 我意识到最大流量最小割定理表明,计算最大流量值的复杂度与计算最小割容量的复杂度相同,但这不是我要问的。我要问的是找到一个最大流量和一个最小切割(显式)的问题。 这与从最小切割计算最大流量非常相关,除了:(1)我愿意允许Cook减少(Turning减少),而不仅仅是Karp减少(多对减少),以及(2)也许在给定我们可以找到一些图,使得的最小使计算的最大流变得容易,这在另一个问题之外。GGGG′G′G'G′G′G'GGG

2
从任何NP完全问题到有界PCP的多项式约简
各地的教科书都认为有界邮政对应问题是NP完全的(重复不超过NNN索引)。但是,没有一个地方显示出另一个NP完全问题带来的简单的多项式时间缩减(例如,本科生可以理解的东西)。 但是,我能想到的每个缩减都是在运行时呈指数形式(按NñN或按序列的大小)。也许可以证明它可以还原为SAT?

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.