《算法设计与分析》课程标准

课程目标1:掌握递归与分治策略、动态规划法、贪心算法、回溯法与分支限界法的基本原理和算法框架,熟悉使用这些方法解决经典问题的算法。

课程目标2:掌握使用高级语言实现算法的的方法。

课程目标3:掌握算法的复杂性分析方法。

三、课程目标与毕业要求的关系

毕业要求

指标点

课程目标

2.数学基础

2.1具有扎实的数学基础,掌握分析学、代数学等主干数学课程的基本原理、基本技巧和结论,受到比较严格的数学思维训练

课程目标1

课程目标3

2.2具备运用数学知识解决实际问题的能力,了解数学的历史概况和广泛应用

3.软件开发

3.1具有熟练的计算机算法设计与软件开发能力,能够熟练掌握高级程序设计语言的语法,并设计适当的数据结构和算法,编程解决实际问题。

课程目标2

4.数据分析

4.1掌握数学建模和数据挖掘的常用方法,具备较强的数据分析与处理能力,能综合运用所学知识分析和解决问题。

2、课程目标与毕业要求的矩阵关系图

思想政治

数学基础

软件开发

数据分析

外语体育

人文劳动

1.1

1.2

1.3

2.1

2.2

2.3

3.1

3.2

3.3

4.1

4.2

4.3

5.1

5.2

5.3

6.1

6.2

L

H

M

序号

课程内容框架

教学要求

教学重点

教学难点

1

算法概述

(1)了解算法与程序的概念;

(2)掌握算法复杂性分析及其有关概念。

算法复杂性分析。

算法复杂性分析

2

递归与分治策略

(1)理解递归的概念;

(2)掌握分治法的基本思想;

(3)掌握二分搜索技术;

(4)掌握Strassen矩阵算法的分治法;

(5)了解棋盘覆盖问题的的分治法;

(6)掌握合并排序和快速排序算法;

分治法的设计和分析。

分治法的设计和分析

3

动态规划

(1)掌握动态规划算法的概念、步骤和基本要素;

(2)掌握最长公共子序列的动态规划算法;

(3)掌握矩阵的连乘的动态规划算法;

(4)掌握图像压缩的动态规划算法;

(5)了解流水作业调度的动态规划算法;

(6)掌握0-1背包问题的动态规划算法。

动态规划算法的设计和分析。

动态规划算法的设计和分析

4

贪心算法

(1)掌握贪心算法的概念和基本要素;

(2)了解贪心算法的理论基础;

(3)了解最优装载问题的贪心算法;

(4)掌握哈夫曼编码的贪心算法;

(5)了解单源最短路径的Dijkstra算法;

(6)了解最小生成树的Prim和Kruskal算法。

贪心算法的设计和分析。

贪心算法的设计和分析

5

回溯法

(1)掌握回溯法的算法框架;

(2)掌握批处理作业调度问题的回溯法;

(3)掌握n后问题的回溯法;

(4)了解符号三角形问题的回溯法;

(5)了解背包问题的回溯法;

(6)了解最大团问题的回溯法;

(7)了解图的m着色问题的回溯法;

(8)了解旅行售货问题的回溯法。

回溯法的算法设计和分析。

回溯法的算法设计和分析

6

分支限界法

(1)掌握分支限界法的基本思想;

(2)掌握单源最短路问题的分支限界法;

(3)掌握背包问题的分支限界法;

(4)了解旅行售货员问题的分支限界法。

分支限界法的算法设计与分析。

分支限界法的算法设计与分析

课程内

容框架

教学内容

教学方式

学时

支撑

算法与程序的概念,算法复杂性分析及其有关的概念。

讲授、演示、实验

2+2

8+4

动态规划算法的概念、步骤和基本要素,最长公共子序列,矩阵的连乘,图像压缩,流水作业调度,0-1背包问题。

6+4

贪心算法的概念、基本要素、理论基础,最优装载问题,哈夫曼编码,单源最短路径,最小生成树的Prim和Kruskal算法。

4+4

回溯法的算法框架,批处理作业调度问题,n后问题,背包问题,最大团问题,图的m着色问题,旅行售货问题。

8+2

分支限界法的基本思想,单源最短路问题,背包问题,旅行售货员问题。

6+1

考核内容

评价依据

课程目标1:掌握递归与分治策略、动态规划法、贪心算法、回溯法与分支限界法的基本原理和算法框架,熟悉使用这些方法解决经典问题的算法。(支撑毕业要求指标点2.1,2.2,3.1,4.1)

递归与分治策略、动态规划法、贪心算法、回溯法与分支限界法的算法框架、算法流程。

课堂表现;

平时作业;

平时测验;

实验成绩;

期末考试。

课程目标2:掌握使用高级语言实现算法的的方法。(支撑毕业要求指标点3.1,4.1)

简单算法的实现。

课程目标3:掌握算法的复杂性分析方法。(支撑毕业要求指标点2.1,2.2,3.1)

考核方式

比例

考核/评价细则

课堂表现

10%

评价标准:根据学生上课出勤情况和课堂讨论,回答问题等情况。基础分90分;旷课一次扣10分,迟到、早退、事假一次扣5分;有效参与讨论并正确回答问题一次加5分,最高100分。

作业

20%

评价标准:平时成绩使用百分制,作业成绩为各次作业的平均成绩。

平时测验

评价标准:取各次测验的平均成绩。

实验

评价标准:实验考核成绩。

期末考试

50%

评价标准:严格按照《算法设计与分析》期末试题参考答案及评分细则进行阅卷。

综合成绩

100%

课堂表现(10%)+作业(20%)+平时测验(10%)+实验(10%)+期末考试(50%)

如果期末考试成绩小于50分,则总评成绩与期末考试成绩相同。

八、课程目标达成度评价

参考《数学学院课程目标达成度评价方法》进行评价。

九、本课程各个课程目标的权重

依据第八部分中的课程目标达成度评价方法,计算得到本课程的各个课程目标的权重如下:

课程目标-1

课程目标-2

课程目标-3

权值wi

0.58

0.25

0.17

十、持续改进

根据学生的课堂表现、作业、平时测验和期末考试情况及教学督导的反馈,检验学生对本课程涉及的学科素养和学会反思的达成情况,及时对教学中的不足之处进行改进,调整教学指导策略;根据学生的课堂表现、作业、平时测验及期末考试成绩,检验本课程所支撑的毕业要求分解指标点的达成度情况;根据本课程所支撑的毕业要求分解指标点的达成度情况,在本学院教学指导委员会指导下,重新修订本课程大纲,实现持续改进。

十一、推荐教材及参考书目

1.推荐教材

[1]王晓东,计算机算法设计与分析(第3版)[M].北京:清华大学出版社2014.2

2.参考书目

[1]ThomasH.CormenCharlesE.LeisersonRonaldL.RivestCliffordStein,算法导论(影印版)[M].北京:高等教育出版社2002.5

THE END
1.动态规划之01背包问题(最易理解的讲解)01背包问题,是用来介绍动态规划算法最经典的例子,网上关于01背包问题的讲解也很多,我写这篇文章力争做到用最简单的方式,最少的公式把01背包问题讲解透彻。 01背包的状态转换方程 f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >= Wi ), f[i-1,j] } https://blog.csdn.net/mu399/article/details/7722810
2.01背包问题算法详解(动态规划)四 复杂度 显然算法空间复杂度与时间复杂度均为O(n*m)。其中m为背包容量。 五 总结 用动态规划算法解决0-1背包问题相较于暴力求解法时间复杂度大大降低,理解关键在于状态转移方程的推演过程。https://www.jianshu.com/p/31885390fa5f
3.Python中的背包问题:3种解决的算法实现星星猫的技术博客注意:请记住,这些约束可能会根据您的问题陈述而更改。 解决背包问题的不同方法 Python 以下3 种方法是解决 Python 中背包问题的可用方法—— 贪婪算法 动态规划算法 蛮力算法 贪婪算法 classKnapsackPackage(object):""" Knapsack Package Data Class """def__init__(self,weight,value):self.weight=weight https://blog.51cto.com/u_14249042/10451210
4.C++01背包问题Hello算法(C++版)首页 / Hello 算法(C++版) / C++0-1背包问题 C++0-1背包问题背包问题是一个非常好的动态规划入门题目,是动态规划中最常见的问题形式。其具有很多变种,例如 0-1 背包问题、完全背包问题、多重背包问题等。 在本节中,我们先来求解最常见的 0-1 背包问题。 Question 给定n 个物品,第 i 个物品的重量为 wgthttps://m.w3cschool.cn/hellocpp/hellocpp-y2gz3tli.html
5.基于猴群算法求解0背包问题已成为众多学者研究的一个热点问题, 寻找新的方法来求解背包问题具有重要的理论和实际意义[3]. 目前, 求解背包问题的方法主要有两种: 最优算法和启发式算法. 最优算法包括穷举法、动态规划法、递归算法、回溯法和分支界限法等[4–7]. 启发式算法包括差分进化算法[8], 粒子群算法[9]和遗传算法[10]等.https://c-s-a.org.cn/html/2018/5/6340.html
6.动态规划背包问题合集背包系列作为动态规划问题中的经典,一直是新手村的精英BOSS。通过这几天的学习,对出现的一些背包系列进行总结归纳,希望对大家有所帮助。 背包问题 问题描述:给定N个物品和一个容量有限为V的背包,每个物品有两种属性:v[i](该物品的体积) 和 w[i](该物品的价值,即权重),求解在不超过背包最大容量的情况下,能装https://leetcode.cn/circle/discuss/u9jlGz/
7.2024.11.28DailyProblem考虑4种转移: 有r×cn×n的概率,dpr,c→dpr,c 有(n?r)×cn×的概率,dpr+1,c→dpr,c 有r×(n?c)n×n的概率,dpr,c+1→dpr,c 有(n?r)×(n?c)n×n的概率,dpr+1,c+1→dpr,c 可以考虑记忆化搜索,然后转移式子注意移项解决环依赖的问题。 https://zhuanlan.zhihu.com/p/9667603218
8.动态规划专题刷题记录③:背包问题腾讯云开发者社区问题的名称来源于如何选择最合适的物品放置于给定背包中。常见的背包问题有:01背包,完全背包,多重背包,分组背包,混合背包,有依赖的背包问题等,考察方向一般为求最优解、最优方案数、最优方案。下面会分别介绍这几种背包问题的分析方法和例题。 本文所有例题均来自:Acwing 算法提高课https://cloud.tencent.com/developer/article/2034056
9.java动态规划算法——硬币找零问题实例分析java这篇文章主要介绍了java动态规划算法——硬币找零问题,结合实例形式分析了java动态规划算法——硬币找零问题相关原理、实现方法与操作注意事项,需要的朋友可以参考下本文实例讲述了java动态规划算法——硬币找零问题。分享给大家供大家参考,具体如下:问题描述现在有3种硬币分别为:1元,5元,10元,现在给你63元,让你全部https://www.jb51.net/article/187327.htm