问题的难度

        关于问题,我们是否都能高效解决?我们是否能够解决?这是计算机科学中可计算性和计算复杂度研究的问题。《算法学》一书的第7章和第8章对问题难度进行介绍和整理。第7章主要讨论可计算问题的难解程度;而第8章主要讨论不可计算问题。

        上图将所有问题分成4个层次: 易解问题, 难解问题, 不可判定问题,高度不可判定问题。易解问题和难解问题属于具有理论上的可计算性,虽然难解问题在目前还没有找到合理时间内可行的算法。

        书中提到一个铺设问题, 随着问题难度增加, 铺设问题的若干扩展将属于以上的四个分类。


        如上图, 给定若干种1*1的瓷砖, 我们需要使用这些瓷砖来进行地板铺设。 地板铺设的要求, 需要保证相邻的两个1*1的瓷砖接触的边对应的三角形是同一个类型的, 主要基于美观考虑。 由于这个限制, 有时也称铺设问题为多米诺问题。

易解问题 (Tractable)
        易解问题,是指存在关于输入的多项式时间复杂度算法的问题。

        首先看最简单的铺设问题, 给定若干种1*1的瓷砖,假设每种瓷砖的数量不限,能否铺设符合限制要求的C*N大小的地板? 题目中的C是常量。
        这个问题有关于N的多项式时间算法的。简单描述一个最直接的算法:
        假设地板宽度为C, 铺设瓷砖种类为T,那么:
        a. 考虑第一列, C*1的可行铺设方案数目小于等于T^C。
        b. 再考虑更大的地板C*2时,对于C*1的每种情况,需要枚举第二列的所有匹配,这些情况总数也是小于等于T^C种。所以总复杂度T^C * T^C
            重点在于虽然穷举完这些情况之后,第二列的铺设情况也还是小于等于T^C。 
            因为第3列,第4列,直到第N列的情况还是类似的。 总的时间复杂度就只是跟N成线性关系。(虽然取决于T,C, 常数项可能很大)

难解问题 (Intractable)
        没有或者尚未找到跟输入规模成多项式时间复杂度算法的问题

        回到铺设问题, 如果稍微修改为: 给定若干种1*1的瓷砖,假设每种瓷砖的数量不限,能否铺设符合限制要求的N*N大小的地板? 
        这个新的问题就是难解问题。 我们暂时还没有关于这个问题的多项式算法。

易解问题 vs 难解问题
        1. 记存在多项式时间复杂度算法的问题集合为P (Polynomial time), 严格的定义是在确定性图灵机上多项式时间可以解决的问题集合。
        2. 难解问题存在一类问题 - NP (Nondeterministic Polynomial time),非确定性图灵机上多项式时间可以解决的问题集合。 
        3. NP问题集合中,存在一类最难的问题集合,记为NPC (NP Complete). NPC问题集合中, 要么所有问题都有P算法, 要么所有问题都没有P算法。
        4. P=NP? 依然是一个open problem
        5. 有些NP问题,我们还不知道她是属于NPC还是P。 如素性判断问题最近才被确定为P问题
        6. 有时寻找近似算法都非常难。如,如果存在多项式时间复杂度的图着色近似算法,使得着色色数为最小值的固定常数因子,那么存在最优着色问题的多项式时间算法。
        7. 存在一些可证明的难解问题,需要指数时间复杂度下界,甚至双指数(double exponential),三指数(triple exponential),或更高


不可判定问题(Undecidable/Partially decidable)
        回到铺设问题, 如果修改为: 给定若干种1*1的瓷砖,假设每种瓷砖的数量不限,能否在满足铺设限制要求的情况下铺设整个平面(任意大小有限区域)? 
        加强版本的问题,是一个不可判定问题。

        停机问题(Halting problem)也是不可判定问题,可以使用著名的对角化方法证明。

        铺设问题,存在有限的“No”输入证书。如果给定瓷砖组合不能铺设整个平面(任意大小有限区域),那么一定存在某个有限区域不存在铺设方案。该有限区域是No输入证书,可以在有限时间内验证。

        1. 具有双向证书(Yes输入证书/No输入证书)的问题是可判定的
        2. 有单向证书的不可判定问题,称为部分可判定问题。具有Yes证书的问题,称为递归可枚举(r.e.), 而具有No证书的问题记为“co-r.e.”。
        3. 所有部分可判定问题(如停机问题,铺设问题)在计算上是等价的(computational equivalent), 这些问题之间可以相互规约 (类似于NPC, 所有NPC问题是多项式等价的(polynomially equivalent), 可以多项式时间规约。 部分可判定问题之间规约时间没有限制。)
        4. 没有任何证书的问题,称为高度不可判定问题。
        5. 不可判定问题具有无限多个等级,每一级包含的问题都比低一级中包含的所有问题更坏。

高度不可判定问题(Highly undecidability)
        至于铺设问题, 如果修改为: 给定若干种1*1的瓷砖,假设每种瓷砖的数量不限,能否在满足铺设限制要求的情况下铺设整个平面(任意大小有限区域),且保证第一种瓷砖使用无穷多次? 
        新的加强版问题,是一个高度不可判定问题,没有任何Yes证书,也没有No证书。

        算法学问题的不可判定性,实际上构成了数理逻辑的一个分支,称为递归函数论。



        至此,从可计算性和计算复杂性方面进行划分,问题的难度被分成4个层次。 铺设问题的加强,从最开始的易解问题,升级到高度不可判定问题:



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值