算法-复习题1
算法总结
什么是算法😊?算法一般还必须满足哪些重要特性?
答:算法是对特定问题求解步骤的一种描述,是指令的有限序列。
算法还必须满足下列5个重要特性:
- 输入:一个算法有零个或多个输入(即算法可以没有输入);
- 输出:一个算法有一个或多个输出(算法必须要有输出),通常输出与输入之间有着某种特定的关系;
- 有穷性:一个算法必须总是(对任何合法的输入)在执行有穷步之后结束,且每一步都在有穷时间内完成;
- 确定性:算法中的每一条指令必须有确切的含义,不存在二义性。并且,在任何条件下,对于相同的输入只能得到相同的输出。
- 可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。
考虑下面的算法,回答下列问题,算法完成什么功能?算法的基本语句是什么?基本语句执行了多少次?算法的时间复杂性是多少?
(1)考虑下面的算法,回答下列问题,算法完成什么功能?算法的基本语句是什么?基本语句执行了多少次?算法的时间复杂性是多少?
(1)int Mistery(int n) (2)int Q(int n) |
答:😜
(1)算法的基本语句是 S = S+i*
i;基本语句执行了n次,算法的时间复杂性是O(n)。
(2)算法的时间复杂性是O(n)。
下面程序段中基本语句的执行次数是多少,要求写出计算公式
(1)for (i=1;i<=n;i++) (2) m=0; |
答:(1)基本语句执行次数:(n^2)/4
(2)基本语句执行次数:n(n+1)
过桥问题
有4个人打算过桥,这个桥每次最多只能有两个人同时通过。他们都在桥的某一端,并且是在晚上,过桥需要一只手电筒,而他们只有一只手电筒。这就意味着两个人过桥后必须有一人将手电筒带回来。每个人走路的速度是不同的:甲过桥要用1分钟,乙过桥要用2分钟,丙过桥要用5分钟,丁过桥要用10分钟,显然,两个人走路的速度等于其中较慢那个人的速度,问他们全部过桥最少要用多长时间?写出具体过桥的思路。
解析: |
应用选择排序方法对一个记录序列进行升序排列的基本思想是什么,具体排序过程怎么做的?
答:基本思想:第i 趟排序在无序序列ri-rn中找到值最小的记录,并和第i个记录交换作为有序序列的第一个记录。 |
|
快速排序的分治策略,当以第一个记录作为轴值,对待排序序列进行划分的过程是怎样实现的?
快速排序的分治策略是: |
汉诺塔问题
记结论
已知刚开始时A塔座有6个碟子,这些碟子按照从上到下不断变大的次序依次放置在A塔座,即最大的碟子放在最下面,最小的碟子放在最上面,现在借助中间塔座B,将这些碟子移动到目标塔座C,要求一次只能移动一个碟子,且每次不能将大的碟子放在小的碟子上,请问要移动多少次,如果碟子数是10,移动次数是多少?如果碟子数是64,移动次数是多少?请试着写出移动次数与碟子数的函数关系或递推关系式。
正确答案: |
试述分治法的基本思想
正确答案: |
蛮力法的优缺点是什么?
正确答案: |
最大子段和问题的简单算法是什么?
|
试述回溯法的基本思想及用回溯法解题的步骤。
正确答案: |
回溯法中常见哪两类典型的解空间树?分析各自的使用场合及时间复杂度。
正确答案: |
设计动态规划算法的4个步骤是什么?
正确答案: |
比较分支限界法与回溯法的异同.😃
正确答案: |
常见的两种分支限界法的算法框架是什么?
正确答案: |
选择题
用3种颜色为一个具有5个顶点的无向图着色,共有( )种可能的着色组合
A、244
B、243
C、246
D、245
正确答案:B
每个点都有三种情况,所以是3^5=243 |
一个五个顶点的无向联通图邻接矩阵如下:
0 1 1 0 0
1 0 1 1 1
1 1 0 0 1
0 1 0 0 1
0 1 1 1 0
假设用3种颜色来着色,则解空间树一个完全3叉树,问:解空间树中共有( )个结点;如果用回溯法进行搜索,只需搜索其中( )个结点就找到问题的解。
A、365;14
B、363;15
C、364;14
D、365;15
正确答案:C
完全三叉树是一种特殊的三叉树结构,其中除了最后一层外,其他层的节点都被填满,且最后一层的节点从左到右连续地填入。 |
对于带有五个顶点无向图,其邻接矩阵如下🤣
0 1 0 1 0
1 0 1 0 1
0 1 0 1 1
1 0 1 0 1
0 1 1 1 0
考虑该无向图的哈密顿回路问题,问:解空间树中共有( )个结点;而如果采用回溯法只用搜索其中( )个结点后就能找到问题的一个解。
A、3905;21
B、3906;24
C、3905;24
D、3906;21
正确答案:D
走楼梯问题,假设只能一次走一级台阶或走两级台阶(连续的),例如只有一级台阶,则只有一种走法;如果有两级台阶(连续的),有两种走法;如果有三级台阶,则有3种走法,问7级连续台阶共有( )走法。
A、18
B、21
C、23
D、22
正确答案:B
活动安排问题:如下六个活动集合的最大相容活动有( )个。(贪心策略选择结束时间早的活动先安排)
活动1:start=0,finish=6,start, finish表示活动的起始时刻和结束时刻,下同
活动2:start=1,finish=2;
活动3:start=3,finish=4;
活动4:start=5,finish=7;
活动5:start=5,finish=9;
活动6:start=8,finish=9;
A、5 B、4 C、3 D、6
正确答案:B
这种贪心算法的核心思想是选择结束时间最早的活动,并且确保每次选择的活动与已选择的活动不发生时间冲突,以获得最大相容活动的子集。 |
背包问题(注:这里是分数背包,不是0/1背包):有三个物品,其重量和价值如下所示:
重量 价值
物品1 20 60
物品2 10 50
物品3 30 120
背包的容量为50,下面考虑三种贪心策略(1)选择物品按照价值从大到小的次序;(2)选择物品按照重量从小到大的次序;
(3)选择物品按照单位重量价值从大到小的次序。则这三种策略(1)、(2)、(3)装入背包的物品价值分别是多少( )
A、180、195、200 ;B、180、190、200;
C、185、190、195;D、185、195、200
正确答案:B
用贪心算法求解问题应该满足( )两个性质
A、最优子结构、重叠子问题;B、最优子结构、贪心选择
C、贪心选择、局部最优;D、以上都不是
正确答案:B
图着色问题:已知五个顶点无向连通图的邻接矩阵如下:
0 1 0 0 0
1 0 1 1 0
0 1 0 0 1
0 1 0 0 1
0 0 1 1 0
当任意两个相邻的顶点着色都不同时,该无向图的最小着色数是( )。
A、3;B、4;C、2;D、1
正确答案:C
二叉查找树
已知二叉查找树中查找概率分别是0.1、0.2、0.4、0.3,已知应用动态规划算法求最优二叉查找树的动态规划函数为C[i][i-1]=0,i=1,2,…n+1,C[i][i]
=pi,i=1,2,…,n ,C[i][j]=min{C[i][k-1]+C[k+1][j]
+(查找第i个记录一直到第j个记录概率之和)},这里(1≤i≤j≤n,i≤k≤j)
C[2][4]的值是多少?
A、1.5;B、1.4;C、1.6;D、1.3
正确答案:B
下列算法中通常以自底向上的方式求解最优解的是
A、备忘录法;B、动态规划法
C、贪心法;D、回溯法
正确答案:B
下面问题( )不能使用贪心法解决。
A、 单源最短路径问题;B、 N皇后问题
C、 最小生成树问题; D、 背包问题
正确答案:B
回溯法搜索状态空间树是按照( )的顺序。
A、 中序遍历
B、 广度优先遍历
C、 深度优先遍历
D、 层次优先遍历
正确答案:C
下面哪种函数是回溯法中为避免无效搜索采取的策略( )
A、 递归函数
B、 剪枝函数
C、 随机数函数
D、 搜索函数
正确答案:B
常见的两种分支限界法为( )
A、 广度优先分支限界法与深度优先分支限界法
B、 队列式(FIFO)分支限界法与堆栈式分支限界法
C、 排列树法与子集树法
D、 队列式(FIFO)分支限界法与优先队列式分支限界法
正确答案:D
采用最大效益优先搜索方式的算法是( )。
A、 分支界限法
B、 动态规划法
C、 贪心法
D、 回溯法
正确答案:A
一个C程序的执行是从( )。
A、本程序的main函数开始,到main函数结束
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C、本程序的main函数开始,到本程序文件的最后一个函数结束
D、本程序文件的第一个函数开始,到本程序main函数结束
正确答案:A
在 C 语言中,每个语句必须以( )结束。
A、回车符 B、冒号
C、逗号 D、分号
正确答案:D
二分搜索算法是利用( )实现的算法。
A、分治策略 B、动态规划法
C、贪心法 D、回溯法
正确答案:A
实现棋盘覆盖算法利用的算法是( )。
A、分治法 B、动态规划法
C、贪心法 D、回溯法
正确答案:A
哈夫曼编码的贪心算法所需的计算时间为( )
A、O(n2n) B、O(nlogn)
C、O(2n) D、O(n)
正确答案:B
下列算法中不能解决0/1背包问题的是( )
A、贪心法
B、动态规划
C、 回溯法
D、分支限界法
正确答案:A
下面是贪心算法的基本要素的是( )。
A、重叠子问题
B、构造最优解
C、贪心选择性质
D、定义最优解
正确答案:C
背包问题的贪心算法所需的计算时间为
A、O(n2n)
B、O(nlogn)
C、O(2n)
D、O(n)
正确答案:B
下列算法中通常以深度优先方式系统搜索问题解的是( )。
A、备忘录法B、动态规划法C、贪心法D、回溯法
正确答案:D
回溯法的效率不依赖于下列哪些因素( )
A、满足显约束的值的个数
B、计算约束函数的时间
C、计算限界函数的时间
D、确定解空间的时间
正确答案:D
在 C 语言中,字符型数据在计算机内存中,以字符的( )形式存储。
A、原码
B、反码
C、ASCII 码
D、BCD码
正确答案:C
动态规划算法的基本要素为( )
A、最优子结构性质与贪心选择性质
B、重叠子问题性质与贪心选择性质
C、最优子结构性质与重叠子问题性质
D、预排序与递归调用
正确答案:C
论述题
旅行者问题
一个旅行者要驾车从A地到B地,A、B两地间距离为s。A、B两地之间有n个加油站,已知第i个加油站离起点A的距离为di公里,输入的di从小到大,s车加
满油后可行驶m公里,出发之前汽车油箱为空。应如何加油使得从A地到B地沿途加油次数最少?给出用贪心法求解该最优化问题的贪心选择策略
,写出该最优化问题的最优值和最优解的贪心算法,并分析算法的时间复杂性。
正确答案:
答:贪心选择策略:从起点的加油站起每次加满油后不加油行驶尽可能远,直至油箱中的油耗尽前所能到达的最远的油站为止,在该油站再加满油。
最坏情况下的时间复杂性:Θ(n)
证明活动安排问题的贪心算法具有整体最优解。
正确答案:
假设在某一步选择了结束时间最早的活动A作为下一个安排的活动,并且存在一个最优解中的另一个活动B,B的结束时间比A更早。我们需要证明将B替换为A并不会影响后续的活动安排。 |
简化版:有xyh提供
算法的贪心策略是选择结束时间最早的活动,即活动1,然后将问题简化为对剩余活动中与活动1相容的活动进行活动安排的子问题。证明过程采用反证法,假设存在一个最优解不包含活动1,然后构造一个包含活动1的最优解,从而证明包含活动1的最优解是整体最优解。
举反例证明0/1背包问题
若使用的算法是按照pi/wi的非递减次序考虑选择的物品,即只要正在被考虑的物品装得进就装入背包,则此方法不一定能得到最优解(此题说明0/
1背包问题与背包问题的不同)。
正确答案:
证明:举例如:p={7,4,4},w={3,2,2},c=4时,由于7除以3最大,若按题目要求的方法,只能取第一个,收益是7。而此实例的最大的收益应该是8,取第2
,3 个。