一个加法链是正整数的序列,其中,并且每个索引,我们有一些指数。加成链的长度为;加法链的目标是。
对于以下问题的复杂性了解多少:给定整数,目标为N的最短加法链的长度是多少?是NP难吗?
维基百科指出Downey,Leong和Sethi于1981年发表的一篇论文证明了以下相关问题是NP-难的:给定整数集,包括整个集合的加法链的最小长度是多少?几位作者显然声称,本文证明了单目标问题是NP难题,但事实并非如此。
一个加法链是正整数的序列,其中,并且每个索引,我们有一些指数。加成链的长度为;加法链的目标是。
对于以下问题的复杂性了解多少:给定整数,目标为N的最短加法链的长度是多少?是NP难吗?
维基百科指出Downey,Leong和Sethi于1981年发表的一篇论文证明了以下相关问题是NP-难的:给定整数集,包括整个集合的加法链的最小长度是多少?几位作者显然声称,本文证明了单目标问题是NP难题,但事实并非如此。
Answers:
我想记录一下多项式时间算法的部分进展-到目前为止看来似乎很有希望。更新:添加了一些详细信息,以解决@David指出的故障(谢谢!)。
该方法是将其简化为MINONE-EVEN-3 CSP(MOEC)的实例,这恰好是多项式时间可解决的问题。减少的证明有点模糊,但我希望它存在!
MOEC的一个实例是变量宇宙和整数k的个子集的族。现在的问题是,是否有至多重量的满足分配ķ,其中分配是从宇宙的函数{ 0 ,1 },分配的权重为的变量,它分配一个数,以及分配是对于变量{ x ,y ,z }的每个子集,满足(即f)的属性是否满足以下条件:
。
您可以将其可视化为3-SAT,具有不同的可满足性概念-不选或选两个。对于MOEC 的实例,我会有些松懈,因为除了通常的个子集之外,我还将考虑长度2的含义,析取和约束(x = 1 )。我相信这些简单的加法将保留问题多项式的时间。
假设我们要减少数字n的加法链问题。为此减少量设置的变量如下:
对于每一个,变量Ñ 我。我将重新写变量Ñ Ñ如Ñ。对于每对我,Ĵ使得1 ≤ 我,Ĵ ≤ ķ,引入变量P 我Ĵ和Q 我Ĵ。
为每个引入以下子集,使得k = i + j:
以及以下含义:
和 P 我Ĵ ⇒ Ñ Ĵ
以及以下约束:
。
最后,我们需要添加约束条件,以确保在为“对应的” N变量(避免使用符号)分配一个时,至少选择了变量之一。这可以通过在所有P i j上加上通常的OR约束,以使i + j sum到N变量来完成。但是,我们必须找到一种在MOEC框架中对此进行重新编码的方法。
因此,让我概述给出一组变量的一般表达方式:
,
如何用MOEC语法编码约束“如果满足一个满足并将设置为1,则必须通过该赋将l i的确切之一设置为1”。请注意,这足以满足我们的要求,我们只需介绍一下约束即可:
。
编码如下。令为t叶子上的根完整的二叉树。引入新的变量Ť d 我对所有1 ≤ d ≤ 日志吨和1 ≤ 我≤ 大号(d ),其中,大号(d )表示的节点的数目Ť X在深度d。
对于每个节点,如果p和q是树中的子节点,则引入EVEN-3约束:
这意味着,如果将与某个节点相对应的变量设置为true,则其子对象之一也必须正确设置为true。现在添加含义:
和 (d 日志吨,Ĵ)⇒ 升Ĵ(逗号为了清楚)。
EVEN-3约束和含义的这种组合等效于我们希望编码的约束。
直观地,发生的是最后两个约束恰好触发了建立加成链所需的反应。特别地,让我们看一下由令人满意的分配分配给一个的-声称它们将为N形成一个加法链:由于该分配被迫将N设置为1,因此至少必须存在设置为1的一个P i j,以及影响力N i和N j被分配一个,然后一直向下(我确定可以通过归纳法将其形式化,尽管我还没有得出详细的水平)。请注意,在分配的数量上最佳的令人满意的分配不会为两对(r ,s )和(r ',s ')设置 true ,因为P变量带有附加变量含义的包而Q变量不行(它们是为了确保EVEN-3可满足性-在N i为真且P为P的子句中 is not true, we still need to pick something to satisfy that clause, and for reasons that are easy to see, this cannot be one universal variable across clauses).
So I believe an addition chain corresponds to a satisfying assignment and vice-versa. Let me describe one part of this somewhat formally: given an addition chain, we construct an assignment that is satisfying. To begin with, sets all 's that feature in the chain to one, and the other 's to zero. Further, if features in the addition chain, then for each , let be the elements in the chain such that . Then sets to one (and to zero), and all such that and and , sets to one (and to zero). For all that don't feature in the addition chain, for all such that , set all and to zero (notice that consistency follows from the fact that two numbers add up in only one way). Every clause involving a in the chain is satisfied because either a P-variable or Q-variable corresponding to it was set to one (and notice that exactly one of them are set to one for any pair ). For every other clause, everything is set to zero. That the implications hold is easy to check.
The part that is unclear is the following: because for every element chosen in the addition chain, the assignment incurs a weight of (because of all the -variables being set to one). So there is a possibility that a longer additional chain would correspond to a cheaper assignment, but I am quite sure this doesn't happen because of a proof along the following lines: consider an optimal addition chain and suppose there is a longer one that has a smaller-weight satisfying assignment corresponding to it. Clearly, the elements of the longer chain exclude at least one from the shorter one - let that element be . I wish to say that the cost incurred with is incurred in the longer chain anyway, and the remaining compares favorably. However, I have to write this down carefully, and I might just be seeing things from post-midnight syndrome!