《算法分析与设计》课程教学大纲
算法分析与设计课程(本科)教学大纲
算法分析与设计课程(本科)教学大纲一、课程编号二、课程类别:选修课三、先修课程:程序设计、数据结构四、适用专业:计算机科学与技术,信息安全五、课程学分/学时: 2.5学分/40学时六、课程的性质与任务:计算机科学是一种创造性思维活动,其教育必须面向设计。
计算机算法分析与设计是面向设计的,因此,它是计算机科学和计算机应用的核心。
无论是计算机系统、系统软件和解决计算机的各种应用课题都可归结为算法的设计。
通过本课程的学习,使学生掌握计算机领域中许多常用的非数值的精确的描述:分治法、贪心法、动态规划、回溯法等。
并掌握算法分析的方法。
从而将学生分析问题和解决问题的能力提高到高层理论的高度。
七、教学主要内容及学时分配(一)、引论(4学时)1.算法的定义及其特点2.算法分析的方法(二)、分治法(8学时)1.分治法的思想2.二分检索、归并分类法、快速分类法及其它们的算法分析3.Strassen矩阵乘法4.其他问题(三)、贪心方法(6学时)1.贪心方法的思想2.背包问题、最小生成树、单源最短路径问题3.其他问题(四)、动态规划(6学时)1.动态规划的思想2.多段图、每队节点之间的最短路径、0/1背包问题和货郎担问题3.其他问题(五)、基本检索与周游方法(4学时)1.二元树周游、树周游、图的检索和周游的一般方法(六)、回溯法(6学时)1.回溯法的思想2.8-皇后问题、背包问题3.以上算法的算法分析4.其他问题(七)、N P难度和NP完全问题(2学时)1.NP难度和NP完全概念(八)、其他有关方法简介(4学时)1.常见概率算法2.并行算法基本概念3.其它相关知识八、教学基本要求(一)、掌握算法的定义及其特点;掌握算法分析的方法。
(二)、掌握分治法的思想;重点掌握二分检索、归并分类法、快速分类法及其它们的算法分析;了解Strassen矩阵乘法。
(三)、掌握贪心方法的思想;理解背包问题、最小生成树、单源最短路径问题;理解以上算法的算法分析。
《算法分析与设计》教学大纲
《算法分析与设计》教学大纲《算法分析与设计》教学大纲大纲说明课程代码:3235058总学时:32学时(讲课32学时)总学分:2课程类别:限制性选修课适用专业:本大纲适用于计算机科学与技术专业使用预修要求:高等数学、C语言程序设计、数据结构课程的性质、目的、任务:本课程是计算机科学与技术专业选修课。
通过本课程的学习,使学生理解和掌握算法设计的主要方法,培养学生对算法复杂性进行正确分析的基本能力,为独立地设计求解问题的最优算法和对给定算法进行复杂性分析奠定坚实的基础。
课程教学的基本要求:算法分析与设计是一门理论性较强的课程,是计算机科学与计算机应用的核心。
本课程主要介绍算法设计的基本方法,其先修课为高等数学、程序设计、数据结构。
通过本课程的学习,能够在掌握算法设计基本方法的基础上,加深对计算机领域中常用的非数值算法的理解和应用。
该课程采用教师授课和学生自学相结合的教学方法,以教师授课为主,结合理论知识,通过具体算法来论证,加深理解。
在授课过程中采用多媒体课件进行操作演示,帮助学生进一步理解和掌握。
大纲的使用说明:本教学大纲供计算机科学与技术专业使用,若学时小于32或大于32则可以根据教学实际酌情取舍有关的内容。
大纲正文第一章:导引与基本数据结构学时:4学时通过本章的学习,使学生理解算法的概念及其特性,学会分析算法的一般方法,掌握计算机科学中常用的数据结构,了解本教材描述算法所用的语言。
另外,若学过数据结构的可跳过1.4节。
本章讲授要点:算法、分析算法、用SPARKS语言写算法、基本数据结构和递归和消去递归重点:算法及分析算法难点:递归和消去递归第一节:算法第二节:分析算法第三节:用SPARKS语言写算法第四节:基本数据结构第五节:递归和消去递归习题:书后习题一第二章:分治法学时:4学时通过本章的学习,使学生理解分治法的内涵,然后从解决计算机科学和应用中出现的几个实际问题入手,用二分法的基本思想描述了几个经典的精巧的算法,包括二分检索算法、分类算法、选择算法等,同时对每个算法给出了数量级的分析,以使学生理解本章介绍的算法,并能用于解决实际问题。
《算法设计与分析教学》课程教学大纲
算法设计与分析课程教学大纲(DesignandAna1ysisofA1gorithms)48实验学时:0课外学时:03计算机科学与技术一、课程的性质、目的和任务《算法分析与设计》课程是计算机专业的一门限选专业课程,是计算机科学与技术应用的核心。
设立本课程的目的是适应21世纪我国计算机科学技术及软件工程人才培养的需要,培养学生设计和分析算法的能力。
通过学习本课程,学生应该掌握计算机软件常用的几种算法,并可以对算法的复杂性进行分析,从而能够在实际工作中根据具体问题设计和优化算法。
二、课程教学的基本要求通过本课程的学习,学生应比较系统地掌握算法设计的基本方法,加深对计算机领域中常用的非数值算法的理解和应用。
这对于培养学生在计算机科学与技术领域的兴趣、提高他们动手进行程序设计的能力以及解决实际问题的技能技巧无疑有着深远的意义。
学生在学习本课程时,要善于把算法设计的基本理论与解决实际问题现实结合起来。
通过学习和研究经典的数学、计算机问题,如何使用具体的算法进行求解。
为了较好地理解和掌握不同的算法,要勤于思考、联系实际,能够对比较经典问题使用不同的算法进行求解,从中得到启迪和借鉴,提高算法的设计和分析能力。
必要的时候要强化一些算法设计的模式和框架,以求达到对相关算法分析与设计的融会贯通。
三、课程的教学内容、重点和难点本课程的重点:贪心算法,动态规划,基本检索与周游方法,回溯法。
本课程的难点:回溯法,分枝-限界法。
第1章算法概述(2学时)教学内容:1.算法与程序2 .表达算法的抽象机制3 .描述算法4 .算法复杂性分析。
基本要求:理解算法的概念;理解什么是程序,程序与算法的区别和内在联系;掌握求解问题的基本步骤;掌握算法在最坏情况、最好情况和平均情况下的计算复杂性概念;掌握算法复杂性的渐近性态的数学表述;掌握用C++语言描述算法的方法。
学时数: 其中: 学分数:适用专业:第2章递归与分治策略(10学时)教学内容:1.递归的概念2 .分治法的基本思想3 .二分搜索技术4 .棋盘覆盖5 .合并排序6 .快速排序7 .线性时间选择8 .最接近点对问题9 .循环赛日程表基本要求:理解递归的概念;掌握设计有效算法的分治策略;通过二分搜索技术、Strassen 矩阵乘法、合并排序和快速排序、线性时间选择等范例的学习掌握分治策略设计技巧。
算法设计与分析课程教学大纲
算法设计与分析课程教学大纲【适用专业】计算机科学与技术【课时】理论课时:32【学分】 2【课程性质、目标和要求】《算法设计与分析》是计算机科学与技术专业的专业课。
无论是计算科学还是计算实践,算法都在其中扮演着重要角色。
本课程的教学目的是讲授在计算机应用中常常遇到的实际问题的解法,讲授设计和分析各种算法的基本原理、方法和技术,培养学生对算法复杂性进行正确分析的能力。
课程基本要求是⑴掌握算法分析的基本概念和理论。
⑵掌握算法设计技术和分析算法以及算法复杂性。
【教学时间安排】本课程计 2 学分,理论课时32, 学时分配如下:【教学内容要点】第一章算法引论一、学习目的要求1.了解算法的计算复杂性分析方法2.理解算法分析的基本理论3.掌握算法分析的基本概念二、主要教学内容1. 算法的基本概念2. 表达算法的抽象机制3. 采用Java语言与自然语言相结合的方式描述算法的方法4. 算法的计算复杂性分析方法第二章递归与分治策略一、学习目的要求1.理解典型范例中递归与分治策略应用技巧2.掌握递归与分治策略3.掌握数学归纳法证明算法正确性方法二、主要教学内容1. 递归的概念2. 分治法的基本思想3. 二分搜索技术4. 大整数的乘法5. Strassen阵乘法6. 棋盘覆盖7. 合并排序8. 快速排序9. 线性时间选择10. 最接近点对问题11. 循环赛日程表第三章动态规划一、学习目的要求1.理解典型范例中动态规划算法的设计思想2.掌握动态规划算法的基本要求以及算法的设计要点二、主要教学内容1. 矩阵连乘问题2. 动态规划算法的基本要素3. 最长公共子序列4. 最大子段和5. 凸多边形最优三角剖分6. 多边形游戏7. 图像压缩8. 电路布线9. 流水作业调度10. 0—l背包问题11. 最优二叉搜索树12. 动态规划加速原理三、课堂讨论选题1. 最长公共子序列2. 0—l背包问题第四章贪心算法一、学习目的要求1.了解贪心算法的理论基础及基本要素2. 理解典型范例中贪心算法的设计思想3. 掌握贪心算法的设计要点二、主要教学内容1. 活动安排问题2. 贪心算法的基本要素3. 最优装载4. 哈夫曼编码5. 单源最短路径6. 最小生成树7. 多机调度问题8. 贪心算法的理论基础三、课堂讨论选题1. 最优装载2. 单源最短路径第五章回溯法一、学习目的要求1.理解回溯法的效率分析方法2.掌握回溯法的算法框架和应用技巧二、主要教学内容1. 回溯法的算法框架2. 装载问题3. 批处理作业调度4. 符号三角形问题5. n后问题6. 0—l背包问题7. 最大团问题8. 图的m着色问题9. 旅行售货员问题10. 圆排列问题11. 电路板排列问题12. 连续邮资问题13. 回溯法的效率分三、课堂讨论选题1. 0—l背包问题2. 图的m着色问题第六章分支限界法一、学习目的要求1.理解分支限界法的基本思想2.掌握典型范例中分支限界法的应用技巧二、主要教学内容1. 分支限界法的基本思想2. 单源最短路径问题3. 装载问题4. 布线问题5. 0-1背包问题6. 最大团问题7. 旅行售货员问题8. 电路板排列问题9. 批处理作业调度三、课堂讨论选题1. 0-1背包问题2. 批处理作业调度第七章概率算法一、学习目的要求1.理解概率算法的基本思想2.掌握典型范例中概率算法的应用技巧二、主要教学内容1. 随机数2. 数值概率算法3. 舍伍德算法4. 拉斯维加斯算法5. 蒙特卡罗算法第八章 NP完全性理论一、学习目的要求1.了解P类与NP类问题2.了解典型的NP完全问题二、主要教学内容1. 计算模型2. P类与NP类问题3. NP完全问题4. 一些典型的NP完全问题第九章近似算法一、学习目的要求1.掌握近似算法的基本思想2.掌握常用近似算法的应用二、主要教学内容1. 近似算法的性能2. 顶点覆盖问题的近似算法3. 旅行售货员问题近似算法4. 集合覆盖问题的近似算法5. 子集和问题的近似算法第十章算法优化策略一、学习目的要求1.掌握算法优化策略2.掌握算法优化的基本方法二、主要教学内容1. 算法优化策略的比较与选择2. 动态规划加速原理3. 问题的算法特征4. 优化数据结构5. 优化搜索策略【教学(实验)内容要点】算法设计与分析实验是算法设计与分析课的一个实践性教学环节。
算法分析与设计教学大纲
算法分析与设计教学大纲一、课程概述二、预修条件1.数据结构基础知识。
2.编程语言基础。
三、授课目标1.掌握算法分析的基本方法和工具。
2.理解常见算法的设计思想和实现技巧。
3.能够独立设计、实现和优化算法解决实际问题。
四、教学内容1.算法基础知识(1)算法的概念和分类(2)算法分析的基本概念和方法(3)复杂度分析(4)递归与递归算法(5)分治法与减治法2.基本算法设计(1)贪心算法(2)动态规划算法(3)回溯算法3.高级算法设计(1)图算法:最短路径、最小生成树等(2)网络流算法:最大流、最小割等(4)近似算法:近似算法的基本思想与应用4.数据结构与算法分析(1)线性表和链表(2)栈和队列(3)树和二叉树(4)图和图的遍历算法五、教学方法1.理论课讲授:通过教师讲解、演示和示范等方式,让学生掌握算法基本知识和分析方法。
2.实践教学:通过课程设计和编程实践,让学生动手实践算法设计与实现,并对其进行分析和优化。
3.讨论与交流:组织学生进行小组讨论和互动交流,培养学生的合作学习能力和问题解决能力。
六、教学评估1.平时成绩:考察学生的课堂参与、作业完成情况和实验报告质量。
2.期中考试:考察学生对课程内容的掌握和理解。
3.期末考试:考察学生对课程内容的整体把握和综合应用能力。
七、参考教材1. 算法导论(第3版)- Thomas H. Cormen等2. 算法设计与分析基础(第4版)- Levitin A. V.八、教学资源1.电子课件和习题集。
2.在线编程平台和算法分析工具。
九、教学进度安排1.第1-2周:算法基础知识2.第3-5周:基本算法设计3.第6-8周:高级算法设计4.第9-11周:数据结构与算法分析5.第12-14周:综合应用与实践6.第15周:复习与总结备注:以上为算法分析与设计教学大纲的基本框架和内容,具体教学安排和进度可根据实际情况进行调整补充。
《算法分析与设计》课程教学大纲概要
《算法分析与设计》课程教学大纲Algorithms Analysis and Design一.课程教学目标:1.任务和地位:《算法分析与设计》是计算机应用与技术专业(本科)的一门专业课,其内容是研究计算机领域及其它有关领域中的一些常用算法,它是计算机科学通常要解决的主要问题之一,因而也是各专业方向可以选修的一门重要的专业基础课。
通过本课程的学习,使学生掌握算法设计的常用方法,以便运用这些方法来设计解决一些常用的或较为复杂的实际问题的算法,并力争做到快捷、有效,从而提高程序设计的质量。
除此,还要使学生学会分析算法、估计算法的时空复杂性,以便理解并科学评估有关算法。
因而,对于计算机专业的技术人员,学习和掌握这方面的知识是很有必要的。
2.知识要求:通过一学期学习要达到如下要求1)掌握算法的定义及基本概念、计算模型和复杂度的质量;2)为分析算法的复杂性作准备,要了解相应的数学知识;3)了解各种分类方法,重点是学会分析分类方法的复杂性。
3.能力要求:通过本课程的学习,学生要掌握几种常用的算法设计策略,包括递归与分治策略、动态规划算法、贪心算法、回溯法和分支限界法等,并会分析算法的效率。
能够用所学方法解决实际问题。
二、教学内容的基本要求和学时分配12.具体要求第一章算法概述[目的要求] 掌握算法基本概念及算法复杂性分析。
[教学内容] 算法与程序、算法复杂性分析。
[重点难点] 让同学们了解本门学科在科技发展中地位和作用,增强学好本课程的信心。
[教学方法] 课堂讲授与自学(课外)相结合。
[课时] 3学时。
第二章递归与分治策略[目的要求] 掌握递归与分治策略设计算法。
[教学内容] 递归的概念、分治法的基本思想、及分治算法实例。
[重点难点] 分治法的基本思想的具体实现及时间复杂度分析。
[教学方法] 课堂讲授与自学结合。
[课时] 14学时。
第三章动态规划[目的要求] 掌握用动态规划法设计算法。
[教学内容] 动态规划算法的基本要素、基本思想及算法实例。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《 算法分析与设计 》 课程教学大纲
课程编号: 18A83
制定单位: 软件与通信工程学院
制 定 人(执笔人): 尹爱华
审 核 人:
制定(或修订)时间:2016年09月
江西财经大学教务处
一、课程总述
本课程大纲以2014年软件工程本科专业人才培养方案为依据编制。
课程名称算法分析与设计
英文名称Algorithm Analysis And
Design
课程代码48303
课程性质专业选修先修课程C语言、数据结构、离散数学
总学时数48 周学时数 3
开课院系件与通信工程学院任课教师尹爱华、涂保东、李刚
编写人尹爱华编写时间2016-09
课程负责人大纲主审人
使用教材
《算法设计技巧与分析》 M.H.Alsuwaiyel著,吴伟昶方世昌等译电子
工业出版社 2014年6月第5次印刷
教学参考资料《算法导论》(第三版)Thomas H.Cormen Charles E.Leiserson Ronald L.Rivest Clifford Stein 著,殷建平,徐云,王刚等译机械工业出版社 2012年2月第4次印刷
课程教学目的
本课程面向本科二、三年级学生,讲授算法分析方法、算法设计一般原则并针对不同问题熟练实现典型算法,通过对典型问题的建模、简单实例的求解等练习,引导学生初步掌握基础的算法分析、描述、实现与设计等技能。
目标是为学生进行专业课程学习打下坚实的理论和方法基础,培养学生具备基本的问题分析与建模、算法分析与设计能力。
本课程是其他多门软件系统开发实践后续课程的前导课程,它与C/C++程序设计、数据结构、离散数学、编译原理、操作系统和软件工程等课程形成一个相对完整的课程体系。
课程教学要求
了解典型算法的发展简史、算法分析基本方法和算法设计基本原则,理解算法、算法分析、算法描述与算法设计等基本概念;初步掌握问题分析与建模、算法复杂度分析、算法正确性分析和算法设计等技能;结合先前掌握的程序设计语言基础,初步掌握算法调试与检测的方法和技术;熟练掌握算法描述方法。
本课程的重点和难点重点:
(1)算法正确性分析;(2)算法复杂度分析;(3)算法实现;(4)算法调试与检测;(5)算法设计。
难点:
(1)算法正确性分析;(2)算法设计;
课程考试书面考试与上机考试结合
平时成绩:30%,实验(兼顾考勤及课堂表现);中期测试:30%;
期末大作业:40%,设计性实验。
二、教学时数分配
教学时数分配
章目教学内容
课堂讲授实验(上机)
1 算法分析基本概念
2 0
2 归纳法(Induction) 2 4
3 分治法( Divide and Conquer ) 2 4
4 动态规划( Dynamic Programming ) 2 4
5 检查(中期测试)0 2
6 贪心法( Greedy Algorithm ) 2 4
7 图的遍历(Graph traversal) 2 4
8 回溯法( Back Tracking ) 2 4
9 问题的复杂性与实例 4 4
合计18 30
三、单元教学目的、教学重难点和内容设置第1章算法分析基本概念
【教学目的】
了解算法分析基本方法与内容
理解算法时间复杂度的计算方法
掌握算法描述的方法
【重点难点】
算法时间复杂度的计算方法
【教学内容】
第一节时间复杂性、空间复杂性
第二节输入大小和问题实例
第三节递推关系
第四节表、图、树、堆等基础数据结构
第2章归纳法
【教学目的】
了解归纳法在算法设计中的作用
理解算法设计的关键点
掌握三种常见的高效算法
熟练掌握三种算法的编程实现
【重点难点】
算法复杂度分析方法
【教学内容】
第一节基数排序
第二节整数幂计算
第三节寻找多数元素
第四节堆排序
第3章分治法
【教学目的】
了解分治思想在算法设计中的作用
理解分治范式的复杂度分析
掌握四种常见算法
熟练掌握编程实现四种算法
【重点难点】
分治范式及其在算法设计中的运用【教学内容】
第一节归并排序
第二节快速排序
第三节寻找第 k 小元素
第四节平面上最近点对问题
第4章动态规划
【教学目的】
了解动态规划思想在算法设计中的作用
理解动态规划范式分析
掌握三种常见算法的设计方法
熟练掌握实现三种常见算法
【重点难点】
动态规划范式在算法设计中的运用
【教学内容】
第一节最长公共子序列问题
第二节动态规划范式
第三节图中所有点对的最短路径问题
第四节0-1背包问题
第5章贪心法
【教学目的】
了解贪心算法基本设计思想
理解贪心算法分析方法
掌握三种常见算法的设计方法
熟练掌握实现三种常见算法
【重点难点】
贪心算法在算法设计中的运用
【教学内容】
第一节单源点最短路径问题
第二节最小耗费生成树(Kruskal算法)第三节最小耗费生成树(Prim算法)
第四节文件压缩(选讲)
第6章图的遍历(选讲)
【教学目的】
了解图的遍历的两种方法
理解遍历算法的复杂度
掌握两种常见图的遍历算法
熟练掌握实现两种常见算法【重点难点】
遍历算法的实现与应用
【教学内容】
第一节深度优先搜索
第二节深度优先搜索的应用
第三节广度优先搜索
第四节广度优先搜索的应用第7章回溯法
【教学目的】
了解回溯法的基本思想
理解回溯法复杂度
掌握三种常见算法设计方法
熟练掌握实现三种常见算法【重点难点】
回溯法的设计与实现
【教学内容】
第一节回溯算法基本原理
第二节3着色问题
第三节8皇后问题
第四节分支限界法实例
第8章问题的复杂性与实例
【教学目的】
了解问题分类
理解难问题求解算法复杂度
掌握简单的难问题求解算法设计
熟练掌握实现简单的难问题求解算法【重点难点】
难问题求解算法设计
【教学内容】
第一节P类
第二节NP类
第三节难问题实例。