计算理论初探作业(2)

题目1:

根据课堂上学习的知识,参考书籍和文献,回答下面的问题:什么是规约,规约可以用来做什么?举一个规约的例子。

  η和η’是两个判定性问题,如果存在一个确定性算法A使得对于一个η的实例I,A可以将I在多项式时间里转换成η’的实例P,使得I得到肯定的回答,当且仅当I’得到肯定回答,则称η在多项式时间里规约到η’,记为η∝poly η’,类似于我们数学课程中常用的化归转化的思想。
  规约思想的举例:
  在数组{An}中,若数组中每个单元不可修改,只需查询任意区间[L,R]内所有元素的总和。我们可以把原问题规约为求出原数组的前缀和数组{Sn},区间和问题就可分解为{Sn}数组中第R项与第(L-1)项的差值。若数组长度为n,查询次数为m,算法的复杂度可从O(nm)降低到O(m)+O(n).

题目2:

学习并理解下面任意一个专业名词,并给出200字以上的解释和个人理解。
我选择了以下专业名词进行探讨。
1.在线算法
  当我们需要对现有数据进行一系列的修改和维护的时候,我们可以对于每一次修改都立刻进行计算和维护,这种处理方式即为在线算法。在线算法的缺点是每次处理时都不能预测之后的每一次操作,只能基于目前已知的信息来进行处理,而其好处是能够保证随时可立即完成对任意数据的查询;
  例如,在排序算法中,插入排序法中,每读取一个新数后立刻插入到已经维护的数组中的合适的位置(可以利用二分查找等方法来优化这一步的复杂度),故任意时刻我们保证所维护的数组都是有序的。

2.参数算法
  参数算法(parameterized algorithm)是基于参数复杂度理论(parameterized complexity)设计的一类算法,其运行时间复杂度可以写成f(k)*n^c的形式,其中k是我们的参数。参数的选取根据不同的情况而定,通常以解的大小为参数,也可以以树宽为参数。在参数算法领域,我们一般称固定参数算法(fixed parameterized algorithm),简称FPT。
  参数算法的正式定义如下:
  如果某个算法的时间复杂度具有如下形式:f(k)n^c,则称该算法为固定参数算法(fixed-parameter algorithm),或者FPT算法。其中k是问题的参数,n是问题的输入的大小,c是一个独立于k和n的常数,f(k)是以k为自变量的可计算函数。

  参数算法的初衷是,通过在问题中引入一个参数k,将算法的时间复杂度的指数部分限制在参数k上而不是整个输入大小n,只要参数k的大小控制在一定范围之内,算法的时间复杂度依然是整个问题输入的多项式。通过这种方法可以把一大批NP完全问题的可解范围扩大很多。
选择恰当的参数是参数算法的设计过程中的一个重要问题。
  一种常见的参数选择方式是以解集的大小k为参数。对于点覆盖(Vertex Cover)问题,加入解集的大小k作为参数后问题描述变为:输入的图G中是否存在解集大小不超过k的点覆盖。这个问题可以在时间O(kn+1.274^k)内被解决 [1]

[1]Chen, Jianer; Kanj, Iyad A.; Xia, Ge (2006). “Improved Parameterized Upper Bounds for Vertex Cover”. Mfcs 2006 4162: 238–249.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值