算法设计学习笔记(九)超出NP的问题类


前言

本文是对于算法设计的学习笔记,如有错误,请不吝赐教。


一、PSPACE

PSPACE:可以用具有多项式空间复杂度的算法解决的问题。
(多项式空间复杂度意味着:使用空间数量为输入大小的多项式)
我们可知一个有着多项式时间的算法只能占有多项式数量的空间。从而有:
p问题属于PSPACE

补充:在计算中,空间可以重复使用。
存在仅使用多项式空间解3-sat的算法

证明如下:我们直接考虑采用蛮力搜索(通过尝试所有的真值赋值)
我们考虑一个n位的计数器,即当前计数器的每一位的值对因为真值赋值中的xi。
如果满足那么就可以终止算法,如果不满足那么我们对于这个空间可以进行重复利用,从而使得检查所有的真值赋值只用多项式空间。

由此我们可以知道
Np问题属于PSPACE
证明:我们可知对于NP中的任意一个问题Y,因为Y<=p3-sat,所以一个解Y的算法使用多项式次的3-SAT的黑盒子,因此可知y也是只是用多项式空间的算法。

具体的关系如下图:

在这里插入图片描述

二、PSPACE中的难问题

PSPACE完全:假如X属于PSPACE,且对于PSPACE中的每一个问题Y都有Y<=Px,那么称问题X是PSPACE完全的。
(人工智能中的一些基本问题是PSPACE完全的)

2.1 规划问题

规划问题:描述为了达到一组期望的目标与复杂环境交互作用的工作。(大规模的后勤工作,军事工作,人工智能中的自动化规划技术)
规划问题:我们有着若干希望达到的条件和一组允许的操作。我们用条件集合S={c1,c2,cn}作为环境模型,一个给定地状态用当前成立的条件子集来明确规定。通过操作集合{θ1…θn}与环境进行交互作用。
每一个操作θ都有一个先决条件表、一个添加表和一个删除表来给定。先决条件表表示调用操作θ时必须成立的条件,添加表包含调用后变为真的条件,而删除表包含调用θ后不再成立的条件。

而规划问题则是给定初始条件集合θ0,以及目标条件集合S,问能够从θ0开始运用一系列列操作达到恰好是S中的条件成立的状态吗?

2.2 量化

我们假设也就是说是否存在对于x1的一个值使得对于x2的两个值存在对于x3的一个值等等,使得上述被满足。我们将这个判定问题称为量化的3-SAT。(QSAT)

例子如下:
在这里插入图片描述(量化问题作为一种相依规划的形式,考虑能否做出一个决定使得所有可能的反应都能够做出另一个决定x3)

补充普通的3-SAT问题
在这里插入图片描述

2.3 博弈

博弈:比如前述的竞争的便利店寻址问题也适合博弈这个框架。

三、在多项式空间中解量化问题和博弈问题

3.1 设计QSAT算法

我们首先证明QSAT可以在多项式空间内求解。具体证明类似于3-SAT,考虑蛮力搜索,并重复使用空间。

蛮力搜索如下,考虑第一个量词x1,一次考虑x1的两个可能的取值,并递归的看公式剩余部分的值是否为。当且仅当存在x1的赋值使得整个公式的结果为1.
这就是分支法
可知Sn<=2s(n-1)+pn
其中pn是一个多项式函数,我们可知此处将产生指数的界限。
我们可以进行简单的优化。
我们考虑x1=0时,实际只需一位保存递归调用结果,中间过程可以扔掉。

if 第一个量词为存在xi, then
令xi=0,递归求剩余变量的量化表达式
保存计算结果,并删除所有其他中间工作
令xi=1,递归计算
if 两个结果中有一个是1 then 
return 1
endif
endif

if 第一个量词为任意xi then
令xi=0 递归计算
保存计算结果,
令xi=1 递归计算
if 两个结果都为1 then
return 1
endif 
endif

3.2 算法分析

考虑xi=0与xi=1的递归调用在同一个空间上,对n个变量的空间需求n的多项式+n-1递归调用的空间需求。
sn<=s(n-1)+pn
展开:sn=pn+pn-1+pn-2+pn-3+…+p1<=n*pn
所以此时空间为n的多项式。
由此我们即可得证:
在这里插入图片描述

3.3 推广:竞争的便利店选址问题的算法

我们可以用类似的算法来考虑竞争的便利店选址问题。
我们假设第一个人先走,考虑他的所有走法,对每个走法看后面的游戏中谁必胜,然后是第二个人先走一样考虑第一个人,如果有一个走法必胜,那么他从初始局面开始必胜。同样考虑重复使用空间。只需一位保存结果。由此可得到类似的递推公式,并得到相同的结论。
在这里插入图片描述

四、在多项式空间中求解规划问题

4.1 规划问题

我们定义格局是一个条件集合的子集。规划问题在任一给定时间的状态都可以等同于唯一的一个格局,该格局恰好包括这个时间成立的所有条件。对于初始格局和目标格局,我们要确定是否存在一个操作序列使其完成。

我们可以考虑有向图。对于每一个格局,都有一个节点,一共有2^n个节点。如果有一个操作能够将格局x1转为格局x2,那么这两个节点间就有一条相应的边。
因此我们的问题就变成了是否有这样一条从初始格局x1到最后格局x2的路径。
这样的一条路径恰好对应了一组操作序列。

在这里插入图片描述

类似结论可有下面给出的实例得到:

在这里插入图片描述

由图的路径相关结论我们可以知道如下成立:
在这里插入图片描述

4.2 算法设计

我们可以参考之前的序列比对中的思想,即考虑一个中间节点xi,使得x1最多用L/2步达到xi,并且xi最多用L/2步来到大x2.
具体的算法如下:

Path(x1,x2,L)
if(L==1) then
if(有一个操作能够将x1 变到x2 then
 return yes
else
 return no
endif

else
使用n位计数器枚举所有的格局x
for 每一个格局xi 
   计算X=Path(x1,xi,L/2)
   删去所有中间工作,只保留x
   计算y=Path(xi,x2,L/2)
   删去所有中间工作,仅保存返回值y
   if(x,y 都为yes) then
   return yes
 endfor
 if(对于所有的xi都没有返回yes
 return no
 endif
 endif

此时我们将L看做LogL=n(一个指数大的数)

4.3 算法分析

在这里插入图片描述证明如下:
我们考虑归纳证明
当L=1是显然成立,
当L>1时,如果有长度L‘小与L的序列,那么有一个格局xi出现在L‘/2的位置上。
我们考虑其的空间需要,每调用一次path需要n,k,logL的多项式空间。
因此S(n,k,L)<=p(n,k,logL)+S(n,k,L/2)
s(n,k,1)<=p(n,k,1)
由此我们可以知道空间为O(logL*p(n,k,L))
得证。

五、证明问题是PSPACE完全的

类似于NP完全问题,此时扮演3-SAT和电路可满足性的角色为QSAT
在这里插入图片描述

我们可知QSAT是PSPACE完全的。
对于其他的PSAPCE完全的证明类似于NP完全。
由上,我们可知竞争的便利店选址和规划问题都是PSPACE完全的。

5.1 量词与博弈问题的联系

我们可以把QSAT定义成一个人能否在下属竞争的3-SAT游戏中必胜的问题。即假设两个人轮流挑选变量的值,第一个人挑选x1,第二个人挑选x2,然后在一个人挑选x3,如果以1结束则第一个人获胜,如果以0结束,那么第二个人获胜。
那么此时博弈问题就变成了,什么时候x1有一种选择使得对于所有的x2的所有选择。。。结果得到的值为1.
由此,竞争的3-SAT游戏直接等价于之前定义的QSAT实例。

在这里插入图片描述也就证明了博弈问题是PSPACE完全的。

5.2 证明竞争的便利店选址是PSPACE完全的

我们用上述联系证明竞争的便利店选址是PSPACE完全的。
我们考虑证明竞争的3-SAT<=P竞争的便利店选址<=竞争的3-SAT

给定竞争的3-SAT的实例,它定义为以下:
在这里插入图片描述
我们这样描述,两个轮流选择真值赋值,开始和结束都是第一个人选择,最后,如果第二个人能够选择到一个子句Cj使得Cj中没有一项已被置为1,那么他获胜,否则第一个人获胜。

但是此时对于二人的选择会有这较大的限制,在竞争的便利店选址中,两个人可以任意在图上挑选。
由此我们考虑利用节点值bi来限制他们的路线。
在这里插入图片描述

在这里插入图片描述为了让第一个人和第二个人按顺序进行挑选,那么,我们做如下措施:
在这里插入图片描述对于第二个人通过增加最后一步来模拟竞争的3-SAT,
在这里插入图片描述由此第二个人获胜当且仅当她挑选一个不与任何节点相邻的字句节点CJ,换句话说,当且仅当两个人轮流挑选的真值赋值不满足某个字句。
在这里插入图片描述此时就证明了竞争的便利店选址是个PSPACE完全问题。

おすすめ

転載: blog.csdn.net/weixin_43869415/article/details/118629124