《算法设计与分析》课程实验与设计 福州大学 王晓东
算法设计与分析王晓东

习题2-1 求下列函数的渐进表达式:3n^2+10n; n^2/10+2n; 21+1/n; logn^3; 10 log3^n 。
解答:3n^2+10n=O(n^2),n^2/10+2^n=O(2^n),21+1/n=O(1),logn^3=O(logn),10log3^n=O(n).习题2-3 照渐进阶从低到高的顺序排列以下表达式:n!,4n^2,logn,3^n,20n,2,n^2/3。
解答:照渐进阶从高到低的顺序为:n!、3^n、4n^2 、20n、n^2/3、logn、2习题2-4(1)假设某算法在输入规模为n时的计算时间为T(n)=3*2^n。
在某台计算机上实现并完成该算法的时间为t秒。
现有另外一台计算机,其运行速度为第一台计算机的64倍,那么在这台新机器上用同一算法在t秒内能解输入规模为多大的问题?(2)若上述算法的计算时间改进为T(n)=n^2,其余条件不变,则在新机器上用t秒时间能解输入规模多大的问题?(3)若上述算法的计算时间进一步改进为,其余条件不变,那么在新机器上用t秒时间能解输入规模多大的问题?解答:(1)设能解输入规模为n1的问题,则t=3*2^n=3*2^n/64,解得n1=n+6(2)n1^2=64n^2得到n1=8n(3)由于T(n)=常数,因此算法可解任意规模的问题。
习题2-5 XYZ公司宣称他们最新研制的微处理器运行速度为其竞争对手ABC公司同类产品的100倍。
对于计算复杂性分别为n,n^2,n^3和n!的各算法,若用ABC公司的计算机能在1小时内能解输入规模为n的问题,那么用XYZ公司的计算机在1小时内分别能解输入规模为多大的问题?解答:n'=100nn'^2=100n^2得到n'=10nn'^3=100n^3得到n'=4.64nn'!=100n!得到n'<n+log100=n+6.64习题2-6对于下列各组函数f(n)和g(n),确定f(n)=O(g(n))或f(n)=Ω(g(n))或f(n)=θ(g(n)),并简述理由。
计算机算法设计与分析(王晓东第4版)第8章

Department of Electronic Information
30
Fun Time
z
=
9
+
21x2
−
3 4
x4
−
2x5,
s.t.
x3
−
1 2
x2
+
41x4
=
3
x1 x6
+ −
5 2
x2
5 2
x2
+ −
41x4 43x4
+ +
2x5 = 10 +8x5 = 1
• 选出使目标函数增加的非基本变量作为入基变量 • z 行中的正系数非基本变量都满足要求
Department of Electronic Information
24
单纯形表
max z = −x2 + 3x3 − 2x5,
s.t.
x1
+
3x2
−
x3
+
2x5
=
7
x4 − 2x2 + 4x3 = 12
x2 x3 x5
z 0 -1 3 -2 x1 7 3 -1 2 x4 12 -2 4 0 x6 10 -4 3 8
Department of Electronic Information
23
单纯形算法的第 1 步–选取入基变量
• 查看单纯形表的第 1 行(也称之为 z 行)中标有非 基本变量的各列中的值
2x2 − 7x4 ≤ 0 x1 + x2 + x3 + x4 = 9
x2 − x3 + 2x4 ≥ 1 xi ≥ 0, i = 1, 2, 3, 4
计算机算法设计与分析(第4版)[王晓东][电子教案]第2章
![计算机算法设计与分析(第4版)[王晓东][电子教案]第2章](https://img.taocdn.com/s3/m/6ef58047f7ec4afe04a1df38.png)
2.1 递归的概念
例5 整数划分问题 前面的几个例子中,问题本身都具有比较明显的递归关系,因 而容易用递归函数直接求解。 在本例中,如果设p(n)为正整数n的划分数,则难以找到递归关 系,因此考虑增加一个自变量:将最大加数n1不大于m的划分个 数记作q(n,m)。可以建立q(n,m)的如下递归关系。
A(1,0) 2 A(0, m) 1 m0 A(n,0) n 2 n2 A(n, m) A( A(n 1, m), m 1) n, m 1
2.1 递归的概念
例3 Ackerman函数 前2例中的函都可以找到相应的非递归方式定义:
n! 1 2 3 (n 1) n
T(n)
n/2
=
n/2
n
n/2 n/2
T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4
算法总体思想
将求出的小规模的问题的解合并为一个更大规模的问 题的解,自底向上逐步求出原来问题的解。
1 q ( n, n ) q ( n, m ) 1 q (n, n 1) q ( n, m 1) q (n m, m)
正整数n的划分数p(n)=q(n,n)。
n 1, m 1 nm nm n m 1
2.1 递归的概念
例6 Hanoi塔问题 设a,b,c是3个塔座。开始时,在塔座a上有一叠共n个圆盘,这 些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号 为1,2,…,n,现要求将塔座a上的这一叠圆盘移到塔座b上,并仍 按同样顺序叠臵。在移动圆盘时应遵守以下移动规则: 规则1:每次只能移动1个圆盘; 规则2:任何时刻都不允许将较大的圆盘压在较小的圆盘之上; 规则3:在满足移动规则1和2的前提下,可将圆盘移至a,b,c中 任一塔座上。
《算法分析与设计》说课

8
8
8
10
S4
贪心算法
6
6
S5
回溯法
6
8
S6
分支限界
6
8
S7
随机化算法 总学时数
4 40
6 48
说课程教学大纲
5、课外学习内容 分支 限界 算法 设计 分治 分治 最强大脑—数独 阶乘 递归 兔子问题 会场安排问题 国王分财产
银行最优服务次序
回溯 法 贪心 贪心 算法 算法
矩阵连乘 租用游艇 排序问题
•难点模块
分治策略
动态规划 贪心算法
•难点内容
分治策略的应用
分解最优解结构 构造递归关系
回溯法
分支限界法
判断是否满足贪心性质
回溯法--剪枝函数 解空间树
说课导航
说课程教学大纲
说教学资源 说教学方法与手段 说学情与学法指导 说教学过程设计
说考核评价
说教学资源
1、教材选用原则
国家级规划教材 原则
具有先进性、适用性、时效性
汽车加油行驶 网球循环赛比赛日程
动态 规划
充分体现案例驱动、实践导向的设计思想
说课程教学大纲
6、课程重点
•重点模块
递归与分治策略
动态规划算法 贪心算法
•重点内容
二分搜索与排序
矩阵连乘 最长公共子序列
回溯法
分支限界法
最大字段和
0-
说课程教学大纲
7、课程难点
经典教材
说教学资源
王晓东教授编著的 《计算机算法设计与分析》 (C++描述)
说教学资源
2、网络资源
课外学习网站:
/JudgeOnline/problemtypelist.php
《算法设计与分析》实验大纲

《算法设计与分析》课程实验教学大纲Design and Analysis of Computer Algorithm总学时 16 总学分 0.5 实验学时 16一、基本情况1. 课程性质:专业实践2. 设课方式:独立设课3. 适用专业:计算机科学与技术专业4. 开课学期:第5学期5. 实验教材:《算法设计与分析》实验指导书6. 先修课程:高级语言程序设计、离散数学、数据结构二、课程简介算法设计与分析实验将覆盖计算机软件实现中的大部分算法,具有一定的深度和广度,目的是让学生掌握递归与分治策略、动态规划、贪心算法、回溯法、分支限界法等算法思想;能独立运用相关算法策略来分析、解决实际问题并编程实现。
同时,算法设计与分析实验是对学生在软件设计方面的综合训练,包括问题分析,总体结构设计,程序设计基本技能和技巧等,以培养良好的编程风格和科学作风。
通过理论联系实际,最终提高学生动手操作的能力以及分析问题和解决问题的能力,培养对算法的复杂性进行分析的逻辑思维能力。
三、实验目的与任务实验是教学内容的重要一环,其目的一方面是为了让学生掌握算法设计与分析中的一些常用的典型的算法设计思想和方法;另一方面是为了让学生切实掌握各种算法的具体实现方法,培养学生的实际动手能力,加强学生创新思维能力的培养。
四、课程的基本要求(1)了解实验目的,熟悉实验环境。
(2)预习实验,准备好实验题目和操作步骤。
(3)能编译调试源程序,分析错误原因并加以修改,得出正确结果。
(4)能运用所学的知识正确分析程序得出的结果,并能给出改进的方案。
(5)将上述各项要求及实验结果编写成实验报告。
实验前学生要认真预习实验内容,按要求编写源程序及准备测试数据。
实验中,要按操作规程操作计算机,集中精力调试程序,并认真测试实验数据。
对实验程序的故障应自行分析解决,不拷贝其它人的成果。
对实验得出的结果能加以分析,提出改进的具体措施。
掌握递归与分治策略、动态规划、贪心算法、回溯法、分支限界法等算法思想;能独立运用相关算法策略分析问题、解决实际问题并编程实现。
计算机算法设计与研究(王晓东第4版)第4章

School of Computer and Communication Engineer
2
找零问题
问题描述: 假设有顾客在超市购买物品价值 2.5 元, 支 付一张 20 元人民币, 请给出找零方案, 要求找给顾客的 零钱的数目最少?
• 10 元一张, 5 元一张, 1 元二张, 5 角一张.
• 共计5张.
n 元 0-1 向量 (x1, x2, . . . , xn), xi ∈ {0, 1}, 1 ≤ i ≤ n,
使得
n i=1
wixi
≤
c,
而且,Байду номын сангаас
n i=1
vixi
达到最大.
School of Computer and Communication Engineer
11
背包问题贪心算法基本步骤
• 首先计算每种物品单位重量的价值 vi/wi, 然后依贪心 选择策略, 将尽可能多的单位重量价值最高的物品装 入背包
School of Computer and Communication Engineer
19
Fun Time
考虑如下活动集合 S:
i 1 2 3 4 5 6 7 8 9 10 11 si 1 3 0 5 3 5 6 8 8 2 12 fi 4 5 6 7 9 9 10 11 12 14 16
• 子集 {a3, a9, a11} 为一相容活动集合 • 计算最大相容活动集合?
5
贪心算法产生最优解的条件
• 贪心选择性 • 最优子结构
School of Computer and Communication Engineer
6
贪心选择性质
定义 1. 若一个优化问题的全局最优解可以通过局部最 优选择得到, 则该问题称为具有贪心选择性.
计算机算法设计与分析(王晓东) 第5章 回溯法

n=3时的0-1背包问题用完全二叉树表示的解空间
5
生成问题状态的基本方法
扩展结点:一个正在产生儿子的结点称为扩展结点 活结点:一个自身已生成但其儿子还没有全部生成的节点称 做活结点 死结点:一个所有儿子已经产生的结点称做死结点 深度优先的问题状态生成法:如果对一个扩展结点R,一旦 产生了它的一个儿子C,就把C当做新的扩展结点。在完成 对子树C(以C为根的子树)的穷尽搜索之后,将R重新变 成扩展结点,继续生成R的下一个儿子(如果存在) 宽度优先的问题状态生成法:在一个扩展结点变成死结点 之前,它一直是扩展结点 回溯法:为了避免生成那些不可能产生最佳解的问题状态, 要不断地利用限界函数(bounding function)来处死那些实际 上不可能产生所需解的活结点,以减少问题的计算量。具 有限界函数的深度优先生成法称为回溯法
}
18
n后问题
在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象 棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线 上的棋子。n后问题等价于在n×n格的棋盘上放置n个皇后,任 何2个皇后不放在同一行或同一列或同一斜线上。
1 2 3 4 5 6 7 8 Q Q Q Q Q Q Q
void backtrack (int i) {// 搜索第i层结点 if (i > n) // 到达叶结点 更新最优解bestx,bestw; return; r -= w[i]; if (cw + w[i] <= c) {// 搜索左子树 x[i] = 1; cw += w[i]; backtrack(i + 1); cw -= w[i]; } if (cw + r > bestw) { x[i] = 0; // 搜索右子树 backtrack(i + 1); } r += w[i];
计算机算法设计与分析(第4版) 王晓东习题解答

第一章作业1.证明下列Ο、Ω和Θ的性质1)f=Ο(g)当且仅当g=Ω(f)证明:充分性。
若f=Ο(g),则必然存在常数c1>0和n0,使得∀n≥n0,有f≤c1*g(n)。
由于c1≠0,故g(n) ≥ 1/ c1 *f(n),故g=Ω(f)。
必要性。
同理,若g=Ω(f),则必然存在c2>0和n0,使得∀n≥n0,有g(n) ≥ c2 *f(n).由于c2≠0,故f(n) ≤ 1/ c2*f(n),故f=Ο(g)。
2)若f=Θ(g)则g=Θ(f)证明:若f=Θ(g),则必然存在常数c1>0,c2>0和n0,使得∀n≥n0,有c1*g(n) ≤f(n) ≤ c2*g(n)。
由于c1≠0,c2≠0,f(n) ≥c1*g(n)可得g(n) ≤ 1/c1*f(n),同时,f(n) ≤c2*g(n),有g(n) ≥ 1/c2*f(n),即1/c2*f(n) ≤g(n) ≤ 1/c1*f(n),故g=Θ(f)。
3)Ο(f+g)= Ο(max(f,g)),对于Ω和Θ同样成立。
证明:设F(n)= Ο(f+g),则存在c1>0,和n1,使得∀n≥n1,有F(n) ≤ c1 (f(n)+g(n))= c1 f(n) + c1g(n)≤ c1*max{f,g}+ c1*max{f,g}=2 c1*max{f,g}所以,F(n)=Ο(max(f,g)),即Ο(f+g)= Ο(max(f,g))对于Ω和Θ同理证明可以成立。
4)log(n!)= Θ(nlogn)证明:∙由于log(n!)=∑=n i i 1log ≤∑=ni n 1log =nlogn ,所以可得log(n!)= Ο(nlogn)。
∙由于对所有的偶数n 有,log(n!)= ∑=n i i 1log ≥∑=n n i i 2/log ≥∑=nn i n 2/2/log ≥(n/2)log(n/2)=(nlogn)/2-n/2。
当n ≥4,(nlogn)/2-n/2≥(nlogn)/4,故可得∀n ≥4,log(n!) ≥(nlogn)/4,即log(n!)= Ω(nlogn)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《算法设计与分析》课程实验与设计
福州大学王晓东
第1章算法引论
算法实现题1-1 统计数字问题
算法实现题1-2 字典序问题
算法实现题1-3 最多约数问题
算法实现题1-4 金币阵列问题
算法实现题1-5 最大间隙问题
第2章递归与分治策略
算法实现题2-1 输油管道问题
算法实现题2-2 众数问题
算法实现题2-3 邮局选址问题
算法实现题2-4 马的Hamilton周游路线问题
算法实现题2-5 半数集问题
算法实现题2-6 半数单集问题
算法实现题2-7 士兵站队问题
算法实现题2-8 有重复元素的排列问题
算法实现题2-9 排列的字典序问题
算法实现题2-10 集合划分问题
算法实现题2-11 集合划分问题2
算法实现题2-12 双色Hanoi塔问题
算法实现题2-13 标准2维表问题
算法实现题2-14 整数因子分解问题
算法实现题2-15 有向直线2中值问题
第3章动态规划
算法实现题3-1 独立任务最优调度问题
算法实现题3-2 最少硬币问题
算法实现题3-3 序关系计数问题
算法实现题3-4 多重幂计数问题
算法实现题3-5 编辑距离问题
算法实现题3-6 石子合并问题
算法实现题3-7 数字三角形问题
算法实现题3-8 乘法表问题
算法实现题3-9 租用游艇问题
算法实现题3-10 汽车加油行驶问题
算法实现题3-11 圈乘运算问题
算法实现题3-12 最少费用购物
算法实现题3-13 最大长方体问题
算法实现题3-14 正则表达式匹配问题
算法实现题3-15 双调旅行售货员问题
算法实现题3-16 最大k乘积问题
算法实现题3-17 最小m段和问题
算法实现题3-18 红黑树的红色内结点问题
第4章贪心算法
算法实现题4-1 会场安排问题
算法实现题4-2 最优合并问题
算法实现题4-3 磁带最优存储问题
算法实现题4-4 磁盘文件最优存储问题
算法实现题4-6 最优服务次序问题
算法实现题4-7 多处最优服务次序问题
算法实现题4-8 d森林问题
算法实现题4-9 汽车加油问题
算法实现题4-10 区间覆盖问题
算法实现题4-11 硬币找钱问题
算法实现题4-12 删数问题
算法实现题4-13 数列极差问题
算法实现题4-14 嵌套箱问题
算法实现题4-15 套汇问题
算法实现题4-16 信号增强装置问题
算法实现题4-17 磁带最大利用率问题
算法实现题4-18 非单位时间任务安排问题算法实现题4-19 多元Huffman编码问题算法实现题4-20 多元Huffman编码变形算法实现题4-21 区间相交问题
算法实现题4-22 任务时间表问题
第5章回溯法
算法实现题5-1 子集和问题
算法实现题5-2 最小长度电路板排列问题算法实现题5-3 最小重量机器设计问题
算法实现题5-4 运动员最佳匹配问题
算法实现题5-5 无分隔符字典问题
算法实现题5-6 无和集问题
算法实现题5-7 n色方柱问题
算法实现题5-9 拉丁矩阵问题
算法实现题5-10 排列宝石问题
算法实现题5-11 重复拉丁矩阵问题
算法实现题5-12 罗密欧与朱丽叶的迷宫问题
算法实现题5-13 工作分配问题
算法实现题5-14 独立钻石跳棋问题
算法实现题5-15 智力拼图问题
算法实现题5-16 布线问题
算法实现题5-17 最佳调度问题
算法实现题5-18 无优先级运算问题
算法实现题5-19 世界名画陈列馆问题
算法实现题5-20 世界名画陈列馆问题(不重复监视)算法实现题5-21 部落卫队问题
算法实现题5-22 虫蚀算式问题
算法实现题5-23 完备环序列问题
算法实现题5-24 离散01串问题
算法实现题5-25 喷漆机器人问题
算法实现题5-26 n2-1谜问题
第6章分支限界法
算法实现题6-1 最小长度电路板排列问题
算法实现题6-2 最小长度电路板排列问题
算法实现题6-3 最小权顶点覆盖问题
算法实现题6-4 无向图的最大割问题算法实现题6-5 最小重量机器设计问题算法实现题6-6 运动员最佳匹配问题算法实现题6-7 n皇后问题
算法实现题6-8 圆排列问题
算法实现题6-9 布线问题
算法实现题6-10 最佳调度问题
算法实现题6-11 无优先级运算问题
算法实现题6-12 世界名画陈列馆问题算法实现题6-13 骑士征途问题
算法实现题6-14 推箱子问题
算法实现题6-15 图形变换问题
算法实现题6-16 行列变换问题
算法实现题6-17 重排n2宫问题
算法实现题6-18 最长距离问题
第7章概率算法
算法实现题7-1 模平方根问题
算法实现题7-2 素数测试问题
算法实现题7-3 集合相等问题
算法实现题7-4 逆矩阵问题
算法实现题7-5 多项式乘积问题
算法实现题7-6 皇后控制问题
算法实现题7-7 3SAT问题
算法实现题7-8 战车问题
算法实现题7-9 圆排列问题
算法实现题7-10 骑士控制问题
算法实现题7-11 骑士对攻问题
第9章近似算法
算法实现题9-1旅行售货员问题的近似算法
算法实现题9-2 可满足问题的近似算法
算法实现题9-3 最大可满足问题的近似算法
算法实现题9-4 子集和问题的近似算法
算法实现题9-5 子集和问题的完全多项式时间近似算法
算法实现题9-6 实现算法greedySetCover
算法实现题9-7 装箱问题的近似算法First Fit
算法实现题9-8 装箱问题的近似算法Best Fit
算法实现题9-9 装箱问题的近似算法First Fit Decreasing 算法实现题9-10 装箱问题的近似算法Best Fit Decreasing 算法实现题9-11 装箱问题的近似算法Next Fit
第10章算法优化策略
算法实现题10-1 货物储运问题
算法实现题10-2 石子合并问题
算法实现题10-3 最大运输费用货物储运问题
算法实现题10-4 五边形问题
算法实现题10-5 区间图最短路问题
算法实现题10-6 圆弧区间最短路问题
算法实现题10-7 双机调度问题
算法实现题10-8 离线最小值问题
算法实现题10-9 最近公共祖先问题
算法实现题10-10 达尔文芯片问题
算法实现题10-11 多柱Hanoi塔问题
算法实现题10-12 线性时间Huffman算法算法实现题10-13 单机调度问题
算法实现题10-14 最大费用单机调度问题算法实现题10-15 飞机加油问题
《算法设计与分析》期中试卷1 试题1 数列极差问题
试题2 双调TSP回路问题
试题3 最佳调度问题
《算法设计与分析》期中试卷2 试题1 石子合并问题
试题2 整数因子分解问题
试题3 汽车加油问题
《算法设计与分析》期终试卷1 试题1 乘法表问题
试题2 工作分配问题
试题3 飞行员配对方案问题
《算法设计与分析》期终试卷2 试题1 直线k中值问题
试题2 图形变换问题
试题3 无向图的最大割问题。