zoukankan      html  css  js  c++  java
  • 【算法】算法设计与分析试题(含答案)

    算法设计与分析试题

    (中国科学院大学-陈玉福-2011秋)

    一. 回答下列问题: (每小题5分)

    1.陈述算法在最坏情况下的时间复杂度和平均时间复杂度;这两种评估算法复杂性的方法各自有什么实际意义?

    最坏情况下的时间复杂度称最坏时间复杂度。一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。
    这样做的原因是:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比任何更长。

    平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,算法的期望运行时间。

     

    2.阐述动态规划算法与贪心算法的区别,它们都有那些优势和劣势?

    动态规划算法与贪心算法都要求问题具有最优子结构性质,这是二者的一个共同点。但是对于具有最优子结构的问题应该选择前者还后者来解决?下面通过两个经典的组合优化问题谈谈动态规划算法与贪心算法的主要差异

       动态规划法与分治法和贪心法类似,它也是将原问题分解为若干个更小的、相似的子问题,并通过求解子问题产生一个全局最优解。与分治法和贪心法不同之处在于:

    使用贪心法时,当前的选择可能要依赖于已经作出的所有选择,但不依赖于有待于做出的选择和子问题。因此贪心法是自顶向下(即从起点到终点),一步一步地作出贪心选择。当然,如果当前的选择可能要依赖于子问题的解时,则难以通过局部的贪心策略达到全局最优解。

    使用分治法时,由原问题分解出的各子问题通常是相互独立的,即不包含公共的子问题,因此一旦递归地求出各子问题的解后,便可自下而上地将各子问题的解合并成问题的解。如果各子问题不是相互独立的,则分治法要做许多不必要的工作,重复地求解公共的子问题。

    动态规划允许由原问题分解出的子问题之间相互依赖。每一个子问题只求解一次,并将结果保存起来,避免每次碰到此子问题时都要重复计算

     

    3.阐述回溯算法与分枝限界算法的共同点和不同点,提高算法效率的关键是什么?

     

    4.在对算法进行复杂性分析时,强调渐进复杂性的意义是什么?

    算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,我们就说该算法的复杂性越高;反之,所需的资源越低,则该算法的复杂性越低。简化算法复杂性分析的方法和步骤,即只要考察当问题的规模充分大时,算法复杂性在渐近意义下的阶。与此简化的复杂性分析方法相配套,问题复杂程度和规模的线性增长导致的时耗的增长和空间需求的增长,对低效算法来说,都是超线性的,决非计算机速度和容量的线性增长带来的时耗减少和存储空间的扩大所能抵销。

    二.(20分)试用Prim算法求解下面无向赋权图的最小生成树,指出最小生成树及该树中各边被选中的先后次序;写出算法的基本步骤。

     

     

     

     

    解:根据Prim算法,从V1开始,选择10    V1V4加入集合

    找出集合中顶点相邻的最小权值点V7加入集合

     依次为V 1 V4 V7 V8 V3V5 V2 V6

    基本步骤:从第一个结点开始,加入集合A

    每次选择A中顶点与A外的顶点权值最小的顶点,加入集合A

    直到集合A包含所有顶点

    三.(20分)用LC-分枝限界算法求解0/1背包问题: ,物品重量和价值分别是:

              w=(2,3,4,6,9)  p=(8,9,10,12,18)

    1.画出由算法生成的状态空间树,并标明各节点的优先级的值;

    2.给出各节点被选作当前扩展节点的先后次序;

    3.给出最优解。

    解:30

    具体步骤就不写了

     

    四. (20分)已知一组数满足,且被搜索的对象的概率分布是:

                                                                          

    其中a表示被搜索对象在区间内的概率,b表示被搜索对象为的概率,

    使用动态规划算法求该搜索问题的最优二叉搜索树。 

    解:各子树的根:

    1 1 1 4 4

    0 2 3 4 4

    0 0 3 4 4

    0 0 0 4 4

    0 0 0 0 5

       

    最优二叉树结构:

    k4是根

    k1k4的左孩子

    d0k1的左孩子

    k3k1的右孩子

    k2k3的左孩子

    d1k2的左孩子

    d2k2的右孩子

    d3k3的右孩子

    k5k4的右孩子

    d4k5的左孩子

    d5k5的右孩子

     0.1      0.37      0.54     0.89     1.645     2.425

       0      0.01      0.11    0.345      0.85      1.63

       0         0      0.02    0.195      0.64      1.42

       0         0         0     0.04      0.39      1.17

       0         0         0         0     0.03     0.535

       0         0         0        0         0      0.2

     

    五.(20分) 假定已知"无向图的Hamilton回路"问题是NPC问题,证明"旅行商判定问题"也是NPC问题。                               

    解:首先,旅行商问题是NP的,因为对其解的任一猜想,要检验它是否是最优的,需要同所有其它的环游戏比较,这样的环游会有指数个,因而不可能在多项式时间内完成

    考虑图的哈密顿回路问题,已知无向图G |V|=n,构造其对应的旅行商问题为

    Dij={1,ifvi,vj)属于边,2,否则}

    显然,这一变换可以在多项式时间内完成,而且,G有哈回路的充分必要条件是上述构建的旅行商问题有解,且解对应的路长度为N,因为,若G中不含哈回路,则路长至少为n+1 因为已知哈回路问题是NPC问题,并且上述变换为多项式变换,所以旅行商问题也为NPC问题

     有问题直接回复即可!

       

  • 相关阅读:
    jmeter压测学习8-压测带token的接口
    jmeter压测学习7-登录参数化(CSV 数据文件设置)
    jmeter压测学习6-HTTP Cookie管理器
    jmeter压测学习5-XPath提取器
    jmeter压测学习4-正则表达式提取
    jmeter压测学习3-提取json数据里面的token参数关联
    docker学习11-上传本地镜像到镜像仓库
    docker学习10-注册docker hub账号
    python测试开发django-73.django视图 CBV 和 FBV
    The user operation is waiting for "Building workspace" to complete
  • 原文地址:https://www.cnblogs.com/AndyJee/p/3440772.html
Copyright © 2011-2022 走看看