算法设计与分析简答

算法设计与分析简答

1.分治法与动态规划算法的联系与区别

动态规划算法与分治法类似,其基本思想也是将待求问题分解成若干个子问题,先解求子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划法求解的问题,经分解得到的子问题往往不是相互独立的。

2.贪心选择性质与最优子结构性质的关系

贪心选择性质:指的是所求问题的整体最优解可以通过一系列布局最优解的选择,即贪心选择得到。
最优子结构的性质:当一个问题的最优解包含其子问题的最优解时,称此问题具有最有子结构性质。
符合贪心选择性质一定有最优子结构性质,但是有最优子结构性质不一定符合贪心选择性质。

3.流水作业调度问题的Johnson算法的思想

①令N1={i|ai<bi},N2={i|ai>=bi};
②将N1中作业按ai的非减序排序得到N1’,将N2中作业按bi的非增序排序得到N2’;
③N1’中作业接N2’中作业就构成了满足Johnson法则的最优调度。

4.回溯法搜索解空间树时两种避免无效搜索的策略

①使用约束函数,剪去不满足约束条件的路径
②使用界限函数,剪去不能得到最优解的路径

5.分支限界法与回溯法的相同点与不同点

相同:都是在问题的解空间树中搜索问题解的算法。
区别:(1)求解木匾:回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标是找出满足约束条件的一个解,或在满足约束条件的解中找出在某种意义下的最优解。
(2)搜索方式:回溯法以深度优先方式搜索解空间树,而分支限界法则以广度优先或以最小耗费(最大效益)优先方式搜索解空间树。

6.用贪心算法解背包问题的基本步骤

(1)计算每种物品单位重量的价值Vi / Wi
(2)依贪心选择策略,将尽可能多的单位重量价值最高的物品装入背包。
(3)若将这种物品全部装入背包后,背包内的物品总重量未超过C,则选择单位重量价值次高的物品并尽可能多地装入背包。
(4)依此策略一直进行下去,直到背包装满为止。

7.分治法求解问题具有的一般特征

分治法的基本思想是将一个规模为N的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。最后合并成原问题的解。
(1)该问题的规模缩小到一定程度就可以容易地解决;
(2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最有子结构性质;
(3)利用该问题分解出的子问题的解可以合并为该问题的解;
(4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。

8.动态规划算法的设计步骤与基本要素

(1)找出最优解的性质,刻画其结构特征
(2)递归地定义最优值
(3)自底向上的方式计算出最优值
(4)根据计算最优值时得到的信息,计算最优解
基本要素:
(1)最优子结构:当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质。
(2)重叠子问题:每次产生的子问题并不总是新问题,有些子问题被反复计算了多次。

9.算法的一般性质

(1.)输入:有零个或多个外部量作为算法的输入。
(2.)输出:算法产生至少一个量作为输出。
(3)确定性:组成算法的每条指令清晰,无歧义。
(4)有限性:每条指令的执行次数与执行时间有限。
(5)可行性:算法中的操作都是可以通过已经实现的基本运算执行有限次来实现的。

10.二分搜索算法的基本思想

将n个元素按序排列,采用分治策略,分成个数大致相同的凉拌,取中间值与x进行比较,如果中间值小于x,那么从当前数组的右边继续进行搜索,新的数组左边界为上一次的中间值+1,右边界还是原来的右边界,那么循环的找下去,直到找到目标值的位置或者左边界大于右边界为止。

11.回溯算法的效率主要依赖哪些因素

(1)产生x[k]的时间,xk是节点。
(2)满足显约束xk值的个数。
(3)计算约束函数constraint的时间。
(4)计算上界函数bound的时间。
(5)满足约束函数和上界函数约束的所有xk的个数。

12.递归算法的优缺点

优点:递归算法结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法,调试程序带来很大的方便。
缺点:运行效率比较低,耗费时间和占用空间比非递归算法要多。尤其是数据规模大的时候,还容易导致stackoverflow。

猜你喜欢

转载自blog.csdn.net/qq_51344334/article/details/112244058
今日推荐