Fine-Grained学习笔记(5):(min+)卷积及背包问题的复杂度归约理论

(min,+)卷积问题:

给定a0,,an1,b0,,bn1,计算ck=mini(ai+bki)

全局决定性问题版本:

给定a0,,an1,b0,,bn1,c0,,c2n2,对于所有k,判断是否i,ai+bki<ck

单解问题版本:

给定a0,,an1,b0,,bn1,c0,,c2n2,判断是否ki,ai+bki<ck

(max,+)卷积问题:

给定a0,,an1,b0,,bn1,计算ck=maxi(ai+bki)

(max,+)卷积(min,+)卷积,取相反数即可

全局决定性问题版本:

给定a0,,an1,b0,,bn1,c0,,c2n2,对于所有k,判断是否i,ai+bki>ck

单解问题版本:

给定a0,,an1,b0,,bn1,c0,,c2n2,判断是否ki,ai+bki>ck

猜想:

(min,+)卷积问题不存在O(n2δ)时间的算法.

理论:

若APSP问题存在着O(n3δ)时间的算法,那么(min,+)卷积问题存在着O(n2δ)时间的算法

证明:

归约(min,+)卷积(min,+)矩阵乘

假设存在着预言机能在M(n)=O(n3δ)时间内计算(min,+)矩阵乘,那么为了计算(min,+)卷积,可按如下方式构造矩阵And×d,Bd×n:

然后在矩阵C中取结果即可

总时间T(n)=O(M(nd,d,n)),

d=(n),

T(n)=O(M(n,n,n))O(nM(n))(长方形矩阵乘的凸函数性,见笔记2,也可以更直观地理解为下图的形式)

O(n(n)3δ)

=O(n2δ/2)

01背包问题

给定{(wi,pi)},i=1,,n,以及T

找到I{1,,n},使得ΣiIwiT的情况下,ΣiIpi最大

完全背包问题

允许I是多重集.

超可加性(Superaddivity)问题:

给定f0,,fn10,判断是否对于i,j,fi+fjfi+j

就是判断序列是不是长这样:

(笔者注:对于满足超可加性的序列,必然有f0=0,否则f0+f0>f0+0=f0)

问题:

能否找到一个复杂度表达式仅含T的背包问题算法?

定理:

如果(max,+)-卷积能在O(n2δ)时间内解决

01背包问题能在O(T2δ)时间内解决

完全背包问题能在O(T2δ)时间内解决

证明:

归约:完全背包 (max,+)卷积

假设(max,+)-卷积能在O(n2δ),对于完全背包问题,构造转移方程:

f(l)(j)=maxj(f(l/2)(j)+f(l/2)(jj))

其中,f(l)(j)代表最多使用l个物品,使得空间为j的背包能装下的物品的最大价值,每一次状态转移方程的计算都是一次(min,+)-卷积

总的时间复杂度为O(lognT2δ)<O(T2δ+ϵ)

归约:完全背包01背包

假设01背包问题能在O(T2δ)时间内解决,对于完全背包问题({(wi,pi)},T)中,每个物品(wi,pi),构造对应的log(Twi)个物品,分别为(wi,pi),(2wi,2pi),(4wi,4pi),,如此构造的01背包问题可以在O(T2δ)时间内解决.

归约:01背包(max,+)卷积

(待续)

归约:(限定整数范围的)(max,+)卷积(max,+)卷积全局决定性问题

假设(max,+)卷积决定性问题能在O(n2δ)时间内解决,那么对于元素范围[U,U]的(max,+)卷积问题,在每个点位上模拟二分查找,即可在O(n2δlogU)O(n2δ)时间内解决.

归约:(max,+)卷积全局决定性问题(max,+)卷积单解问题

假设(max,+)卷积单解问题能在T(n)=O(n2δ)时间内解决,那么将序列A,B分别划分为r个长度为O(n/r)的子序列A1,,Ar,B1,,Br,然后

对于每组i,j[r],进行以下步骤:

  重复进行以下内容直到退出:

    调用预言机以解决Ai,Bj,{c(i+j)nr,,c(i+j+2)nr}上的(max,+)卷积单解问题

    若存在k使得i,ai+bki>ck:

      将这个k记录下来

      将ck置为+

      回到循环开始(再一次搜寻这一组i,j)

    若不存在:

      退出循环(搜索下一组i,j)

返回记录下的所有k

时间复杂度T(n)=O((r2+n)T(n))=O((r2+n)n2δ),取r=n,T(n)=O(n2δ/2)

思路类似于归约NWT的全局解问题NWT的单解问题

归约:(max,+)卷积单解问题超可加问题

假设超可加问题能在T(n)=O(n2δ)时间内解决,那么对于a0,,an1,b0,,bn1,c0,,cn1上的(min,+)卷积单解问题,

1,若a0,,an1,b0,,bn1,c0,,cn1中存在负数,那么找出min(ai,bi,ci/2),记其绝对值为w,然后令ai=ai+w,bi=bi+w,ci=ci+2w,以便使得ai,bi,ci0

2,令U= a0,,an1,b0,,bn1,c0,,cn1 中的最大值+1

3,令i[n],fi=0,fn+i=U+ai,f2n+i=4U+bi,f3n+i=5U+ci

4,在fi上运行超可加性,若预言机返回该序列满足超可加性,则说明k,i,使得ai+bki>ck

(max,+)卷积的单解问题的形式ki,ai+bki>cki,j,ai+bjci+j,与超可加性的fi+fjfi+j的形式相似,步骤3的构造是为了保证符合条件的fi,fj,fi+j分别对应着A,B,C中的元素.

归约:超可加问题完全背包

假设完全背包问题可在O(n2δ)时间内解决,那么为了解决序列f0,,fn1的超可加性问题,取U2nmax(fi),对于每个fi,构造两个物品,(weight=i,profit=fi)(称为"第一类物品"),(weight=Ti,profit=Ufi)(称为"第二类物品"),T=2n,然后运行完全背包的预言机.

命题:

{fi}满足超可加性条件(fi+fjfi+j)上述方法构造出来的完全背包问题最大价值U

证明:

:

{fi}不满足超可加性条件(i,jfi+fj>fi+j),那么如下三个物品:(i,fi),(j,fj),(Tij,Ufi+j),它们的总重量i+j+(Tij)=T,总价值fi+fj+(Ufi+j)>U

:

{fi}满足超可加性条件

(笔者注:则(0,f0=0)这个物品无意义,将之忽略)

考虑第二类物品的个数:

因为j,2n=TTj,2(Tj)2n=T(两个的重量必然超过T=2n),因此第二类物品至多在最优解中包含一个.

U2nmax(fi)

(T=2n,若最优解不包含第二类物品,则I中包含的第一类物品的个数不会超过2n个,只留下一个fj,然后将其余的替换为一个(Tj,Ufj),被替换掉物品的价值(2n1)max(fi)Ufj,如此替换能使得解更优)

因此第二类物品至少在最优解中包含一个.

综上,第二类物品在最优解中有且仅有一个.

考虑第一类物品的个数:

对于最优解,在第二类物品有且仅有一个(记为(Tj,Ufj))的情况下,剩余待分配重量为j,

若第一类物品包含两个或更多,记为(i1,fi1),(i2,fi2)(显然有i1+i2j),根据超可加性的性质,fi1+i2fi1+fi2, 将它们替换为(i1+i2,fi1+i2)能使得解更优.

因此第一类物品也有且仅有一个.

故最优解可记为{(i,fi),(ti,Ufi)},总价值fi+(Ufj)U

总结:

(博主注:完全背包(max,+)卷积的归约过程中需要重复矩阵乘,卷积的值会引入变量n,而(max,+)卷积全局决定性问题的过程需要二分查找,要在复杂度中加入logU,因此图中的(min/max,+)卷积中元素绝对值最大值U中含n的项必须限制为多项式项,才能保证O(n2δlogU)O(n2δ))

posted @   Isakovsky  阅读(918)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示