11信安算法设计与分析课程设计.docx
- 文档编号:4266960
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:14
- 大小:26.17KB
11信安算法设计与分析课程设计.docx
《11信安算法设计与分析课程设计.docx》由会员分享,可在线阅读,更多相关《11信安算法设计与分析课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
11信安算法设计与分析课程设计
《算法设计与分析课程设计》大纲
一、设计的性质、任务
算法设计与分析课程设计是与对应课程配套的一个实践性教学环节。
它是连接算法设计与分析理论教学课程与实际运用的桥梁。
学生通过这门课的学习能够更好地掌握算法设计与分析的理论部分的内容,同时将理论运用于实践,提高综合应用算法设计的能力,通过分析算法进而对算法进行优化。
经过这一阶段的训练,使学生得到抽象能力、演绎推理能力、综合概括能力的提高。
二、设计的基本要求
1.充分掌握算法设计与分析理论课的基本内容;
2.每名学生独立完成;
3.学生可从教师提出的课题中选择一个题目。
如果学生自命题,学生应在老师的指导下完成题目的选择。
所有课程设计完成后应有规范的文档;
4.学生可从不同方式、渠道获取相关知识完成课程设计,但杜绝任何形式的抄袭和剽窃,或他人代做行为;
5.学生应将设计内容按学校规定的格式提交设计报告(包括书面、电子文档各1份);
三、设计内容
参见附件:
算法设计与分析课程设计题目
四、成绩考核办法
课程设计成绩=工作态度分(10分)+课程设计内容(75分)+课程设计报告的书写(15分)=100分;
附件1:
《算法设计与分析》课程设计要求及题目
一.课程设计的目的
课程设计的目的是训练学生灵活应用所学的算法设计与分析知识,独立完成问题分析、总体设计、详细设计和编程实现等软件开发全过程的综合实践能力。
巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。
二.课程设计的要求
在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过类的设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。
前期准备工作完备与否直接影响到后序上机调试工作的效率。
在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。
三.课程设计的内容
题目一:
五子棋游戏软件设计
1.设计内容:
设计一程序能完成五子棋游戏功能。
五子棋规则:
双方各执一色棋子,轮流下子(即将棋子放在棋盘的任一空交叉点上),直到有一方的棋子有5个排成一线(无论是横向、竖向还是斜向均可),则棋局结束,该方胜利。
2.设计要求:
(1)设计游戏的核心算法;
(2)设计可视化的界面且双方所使用的两色棋子和彩色棋盘得体大方、比例恰当;
(3)双方轮流用键盘或鼠标下子。
只有当鼠标单击在棋盘网格交叉点附近时才可下子,点击其他地方及已有子的位置不能下子,且应给出相应提示;
(4)在适当位置可显示比赛结果,比赛中能随时存储当前棋局。
题目二:
象棋游戏软件设计
1.设计内容:
中国象棋是中国一种流传十分广泛的游戏。
下棋双方根据自己对棋局形式的理解和对棋艺规律的掌握,调动车马,组织兵力,协调作战在棋盘--这块特定的战场上进行着象征性的军事战斗。
设计软件能实现此游戏。
游戏规则:
“将”或“帅”的移动范围只能在王宫内,移动规则为每一步只可以水平或垂直移动一点。
“士”的移动范围只能在王宫内,移动规则为每一步只可以沿对角线方向移动一点。
“象”的移动范围为河界的一侧,移动规则为每一步只可以沿对角线方向移动两点,另外,在移动的过程中不能够穿越障碍。
“马”的移动范围为任何位置,移动规则为每一步只可以水平或垂直移动一点,再按对角线方面向左或者右移动。
另外,在移动的过程中不能够穿越障碍。
“车”的移动范围为任何位置,移动规则为可以水平或垂直方向移动任意个无阻碍的点。
“炮”的移动范围为任何位置,移动规则为和车相似,但它必须跳过一个棋子来吃掉对方的一个棋子。
“兵”的移动范围为任何位置,移动规则:
每步只能向前移动一点。
过河以后,它便增加了向左右移动的能力,兵不允许向后移动。
2.设计要求:
(1)设计游戏的核心算法;
(2)设计可视化的界面且双方所使用的两色棋子和彩色棋盘得体大方、比例恰当;
棋子活动的场所——"棋盘",在长方形的平面上,绘九条平行的竖线和十条平行的横线相交组成,共九十个交叉点,棋子就摆在这些交叉点上。
中间第五、第六两横线之间未画竖线的空白地带,称为"河界",整个棋盘就以"河界"分为相等的两部分;两方“将”“帅”坐镇。
各棋子为:
红方:
帅
(1)、仕
(2)、相
(2)、车
(2)、马
(2)、炮
(2)、兵(5)
黑方:
将
(1)、士
(2)、象
(2)、车
(2)、马
(2)、炮
(2)、卒(5)
(3)双方轮流用键盘或鼠标下子。
只有当鼠标单击在棋盘网格交叉点附近时才可下子,点击其他地方及已有子的位置不能下子,且应给出相应提示;
(4)在适当位置可显示比赛结果,比赛中能随时存储当前棋局。
题目三:
围棋游戏软件设计
1.设计内容:
设计一程序能完成围棋游戏功能。
围棋是一种由两个人进行对抗的竟技游戏,它是以哪一方在棋盘上占领的地多与少来区分胜负的。
如果把棋盘的整个盘面看作一块土地,双方各用自己的棋子去开拓这片土地,由于每一方都想在棋盘上多占一些领地,这就要首先去占领棋盘上的有利位置,并用棋子每隔一定的距离打下桩子,表示这是你的领地,然后再不断地经营和巩固这些领地。
棋盘上的地域完全划分完毕后,棋局就终了了。
这时可以计算一下双方的地域,谁占的地多,谁就赢了。
2.设计要求:
(1)设计游戏的核心算法;
(2)设计可视化的界面且双方所使用的两色棋子和彩色棋盘得体大方、比例恰当;
棋盘:
棋盘纵横十九条线,棋子要下在线与线的交叉点上,方格中不能放入棋子。
交叉点的数目是19*19=361个。
为了便于识别棋子的位置,棋盘上划了九个点,术语称做“星",中央的星点又称为“天元"。
下让子棋时,所授之子要放在星上。
棋盘可分为九个部分:
四个“角",即左上角、左下角、右上角、右下角;四条“边",即上边、下边、左边、右边;角、边以外的地方就是“中腹”。
棋子:
棋子以黑和白区别各自的一方。
棋子的数量和棋盘的交点相同,黑181个,白180个,合计361个。
不过一次对局不会全部用完,也就是说不需要这么多棋子就可以对局;
(3)双方轮流用键盘或鼠标下子。
只有当鼠标单击在棋盘网格交叉点附近时才可下子,点击其他地方及已有子的位置不能下子,且应给出相应提示;
(4)在适当位置可显示比赛结果,比赛中能随时存储当前棋局。
题目四:
陆军棋游戏软件设计
1.设计内容:
陆军棋是小朋友喜欢玩的游戏。
陆军棋的目的是攻占对方的军旗,而由于棋子都是盖着的,因此在布署、进攻及防守时都有其学问,是一个相当好玩的策略益智游戏。
现要求设计一程序能完成陆军棋游戏功能,满足下面要求:
(1)其中棋盘布局为:
行走路线包括公路线和铁路线,显示较细的是公路线,任何棋子在公路线上只能走一步,显示为粗黑的为铁路线,铁路上没有障碍时,工兵可在铁路线上任意行走,其它棋子在铁路线上只能直走或经过弧形线,不能转直角弯;
(2)棋子落点包括结点、行营、两个司令部,行营是个安全岛,进入以后,敌方棋子不能吃行营中的棋子,军旗必须放在司令部中,进入任何司令部的棋子不能再移动;
(3)棋子布局的限制为:
炸弹不能放在第一行,地雷只能放在最后两行,军棋只能放在司令部;
(4)吃子规则为:
司令>军长>师长>旅长>团长>营长>连长>排长>工兵,但只有工兵可以挖地雷。
工兵可以顺着1黑1白的轨道走,只要不出轨道走多远都可以。
军旗与地雷不能走,任何人都可以抗军旗!
军旗没了就输了,任何人碰到炸弹会一起消失……;
(5)胜负判决方法为:
最后的幸存的一方为胜家,军旗被扛、无棋可走、超时5次都会被判负。
2.设计要求:
(1)设计游戏的核心算法;
(2)设计可视化的界面且双方所使用的两色棋子和彩色棋盘得体大方、比例恰当;
(3)双方轮流用键盘或鼠标出子;
(4)在适当位置可显示比赛结果,比赛中能随时存储当前棋局。
题目五:
跳棋游戏软件设计
1.设计内容:
跳棋在我国是一项老少皆宜、流传广泛的益智型棋类游戏。
由于其规则简单,一玩就懂,一辈子都不会忘,所以几乎每个人从小到大都下过跳棋。
设计一程序能完成跳棋游戏功能。
跳棋规则和胜负判定方法如下:
首先,游戏参与人数必须是偶数,即2人、4人或者6人,然后与对角线的一方对抗。
棋子的移动可以一步步在有直线连接的相邻六个方向进行,如果相邻位置上有任何方的一个棋子,该位置直线方向下一个位置是空的,则可以直接"跳"到该空位上,"跳"的过程中,只要相同条件满足就可以连续进行。
谁最先把正对面的阵地全部占领,谁就取得胜利。
2.设计要求:
(1)设计游戏的核心算法;
(2)设计可视化的界面且双方所使用的两色棋子和彩色棋盘得体大方、比例恰当;
(3)双方轮流用鼠标出子;
(4)在适当位置可显示比赛结果,比赛中能随时存储当前棋局。
题目六:
24点游戏软件设计
1.设计内容:
24点游戏为随机产生的四个数,通过四则计算(每个数只能使用一次),使其结果为24.本游戏对培养人们的注意力、计算力(尤其是心算能力),开阔人们的思路,大有益处。
游戏规则为:
每次由计算机随机给出1至10四个数字,使用这些数字计算,使结果等于24。
要求:
(1)只能使用加、减、乘、除四种运算;
(2)每一数字必须且只能使用一次。
(3)如果用户能做题目,则可以通过把数字拖到两个方框中,并选择一种运算来显示他的计算步骤。
每一步骤,只能计算两个方框中的数字,其结果能用于下一步。
例如,如果给出数字1、2、3和4;可以这样做:
步骤1:
3*4=12
步骤2:
2*12=24
步骤3:
24*1=24(每一数字必须被使用一次)
有时不能从诸如1、1、1、1或者9、9、9、9的四个数中得到结果“24”,当遇到困难或确信不能得到数字“24”时,可以点按“帮助”按钮查看答案或者点按“开始”按钮做下一道题。
2.设计要求:
(1)设计游戏的核心算法;
(2)设计可视化的界面;
(3)能随机产生4个1位数并显示;
(4)用户能利用鼠标或键盘选择给出的数和运算符;
(5)程序能判别正误并计分;
(6)能给出帮助和能重产生数。
题目七:
地图着色问题
1.设计内容:
已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色总数最少。
2.设计要求:
(1)设计该问题的核心算法;
(2)设计可视化的界面,界面中能显示和区分中国地图中各省、市、自治区;
(3)程序能正确对地图着色。
题目八:
校园导航问题
1.设计内容:
设计你所在学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。
2.设计要求:
(1)设计该问题的核心算法;
(2)设计可视化的界面,界面中能有效显示学校的主要场所以及各场所间的有效路径;
(3)程序能根据用户输入的两个场所找出两场所间的最短路径,并最好以图示化方式演示。
题目九:
学校超市选址问题(带权有向图的中心点)
1.设计内容:
对于某一学校超市,其他各单位到其的距离不同,同时各单位人员去超市的频度也不同。
请为超市选址,要求实现总体最优。
2.设计要求:
(1)设计该问题的核心算法;
(2)设计可视化的界面,界面中能有效显示学校超市可设立的地点和各单位的位置以及它们之间的有效路径;
(3)程序能自动计算出最优设立点,并最好以图示化方式演示。
题目十:
走迷宫游戏
1.设计内容:
程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。
游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。
2.设计要求:
(1)老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;
(2)迷宫的墙足够结实,老鼠不能穿墙而过;
(3)正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;
(4)添加编辑迷宫功能,可修改当前迷宫,修改内容:
墙变路、路变墙;
(5)找出走出迷宫的所有路径,以及最短路径;
(6)利用序列化功能实现迷宫地图文件的存盘和读出等功能。
题目十一:
拓扑排序与关键路径在实际中的应用
1.设计内容:
给出一个问题,如排课问题等,作如下设计:
(1)判定问题是否存在拓扑序;
(2)如果是求关键路径;
(3)求所有关键路径;
(4)求关键之关键路径。
2.设计要求:
(1)给出如上所述的各算法,并将此算法用在解决此实际的应用问题中;
(2)分析在数据结构课程中出现的算法是属于我们学过的那一种方法;
(3)给出新的方法;
(4)编程实现这些算法。
题目十二:
最优二叉搜索树在数据库中的应用
1.设计内容:
将最优二叉搜索树应用于数据库中。
2.设计要求:
(1)实现该算法;
(2)模拟一个数据库,该数据库具有动态的非顺序结构;
(3)实现数据库的快速搜索。
题目十三:
积木游戏的设计
1.设计内容:
设计完成一个多情况积木游戏。
2.设计要求:
(1)完成积木为矩形块,区间是矩形的设计;
(2)完成积木为矩形块,T形块、L形块,区间是矩形的设计;
(3)完成积木为矩形块,T形块、L形块,区间是凸边形的设计;
(4)完成积木为矩形块,T形块、L形块,区间是矩形的设计;
(5)积木为矩形块,T形块、L形块,区间是口袋的设计;
题目十四:
利用贪婪算法实现多种实际问题
1.设计内容:
参考教材和其他算法分析与设计的文献给出多种可以用贪婪算法解决的典型问题,并分析、总结、编程。
2.设计要求:
(1)贪婪算法的基本思想;
(2)给出不同贪婪算法的应用及分析
(3)对给出的算法进行编程并给出自己的心得体会和总结。
题目十五:
递归算法的应用
1.设计内容:
参考教材和其他算法分析与设计的文献实现多种问题的递归算法并分析、总结,编程,给出结论。
2.设计要求:
(1)递归算法的基本思想
(2)给出不用问题的递归算法和程序;
(3)总结哪些问题可能用递归算法实现。
题目十六:
回溯法的应用
1.设计内容:
参考教材和其他算法分析与设计的文献给出多种可以用贪婪算法解决的典型问题,并分析、编程和总结。
2.设计要求:
(1)给出回溯法的基本思想;
(2)给出不用问题的回溯算法和程序;
(3)总结哪些问题可能用回溯算法实现。
题目十七:
动态规划算法的应用
1.设计内容:
实现多种问题的动态规划算法并分析、编程和总结,给出结论。
2.设计要求:
(1)给出动态规划的基本思想;
(2)给出不用问题的动态规划算法的应用和程序;
(3)总结哪些问题可能用动态规划算法实现。
题目十八:
分治法的应用
1.设计内容:
利用分治法实现多种问题,并分析、编程和总结,给出结论。
2.设计要求:
(1)给出分治法思想;
(2)给出不用问题的分治算法、时间复杂度和程序;
(3)总结哪些问题可能用分治算法实现。
题目十九:
利用贪婪法构造哈夫曼编码
1.设计内容:
哈夫曼(Huffman)编码方法广泛应用于各种数据压缩技术中,且不失为编码中的最佳编码方法。
现要求给出静态和动态存储方式下的Huffman编码算法和程序。
2.设计要求:
(1)给出静态存储方式下的Huffman编码算法并编程实现;
(2)给出动态存储方式下的Huffman编码算法并编程实现;
(3)给出算法时间复杂度分析。
题目二十:
利用贪婪法构造最小生成树
1.设计内容:
给出构造最小生成树的算法并编程实现,分析并总结所用方法的优缺点和时间复杂度。
2.设计要求:
(1)自行设计算法或收集并给出已有算法;
(2)对给定算法编程实现之;
(3)以图形化界面展示图和最小生成树。
题目二十一:
求解限条件的两整数
1.设计内容:
有张三和李四两个人,还有一个考官。
考官说我这里有两个数字,这两个数字的范围在2到100之间。
然后他告诉张三这两个数字的和,告诉了李四这两个数字的乘积。
让张三和李四说出这两个数字分别是多少。
张三看了看“和”,说“你肯定不知道这两个数字是多少。
”李四听了这话,想了想,说,“那么,我现在知道这两个数字是多少了。
”张三听了李四的话,也说:
“那我也知道是多少了”。
分析并求解此问题的答案。
2.设计要求:
(1)给出求解算法;
(2)编程实现此趣味问题。
题目二十二:
0/1背包问题的应用
1.设计内容:
在杂货店中有n种不同的货物。
现将货物装车,规定从每种货物中最多只能拿一件,车子的容量为c,物品i需占用wi的空间,价值为pi。
现要求设计算法和程序使车中装载的物品价值最大。
当然,所装货物不能超过车的容量,且同一种物品不得拿走多件。
2.设计要求:
(1)给出多种求解算法,如递归算法、非递归算法;
(2)编程实现所给算法;
(3)对所写算法给出时空复杂性分析。
题目二十三:
用动态规划法求解数塔问题
1.设计内容:
有如下图所示的数塔,从顶部出发,在每一结点可以选择向左走或是向右走,一起走到底层,要求找出一条路径,使路径上的值最大。
2.设计要求:
(1)给出求解算法;
(2)实现所给算法;
(3)以图形化界面展示数塔及所求解的结点和路径;
(4)给出所列算法的时间复杂度分析。
题目二十四:
用探索(穷举)法求解货郎担问题
1.设计内容:
货郎担问题又称推销员问题,是组合数学中的一个著名问题。
求解四个城市的货郎担问题,距离关系如下:
1到2、3、4城的距离分别为6、7、9
2到1、3、4城的距离分别为8、9、7
3到1、2、4城的距离分别为5、8、8
4到1、2、3城的距离分别为6、5、5
当推销员从1城出发,经过每个城市一次且仅一次,最后回到1城,问按照怎样的路线走,使总的行程距离最短。
2.设计要求:
(1)给出求解算法;
(2)编程实现此算法;
(3)以图形化界面各城市间及各城市间的路径和距离;
(4)给出时间复杂度分析。
题目二十五:
用分支限界法求解0/1背包问题
1.设计内容:
分枝限界是另一种系统地搜索解空间的方法,它与回溯法的主要区别在于对E-节点的扩充方式。
每个活节点有且仅有一次机会变成E-节点。
当一个节点变为E-节点时,则生成从该节点移动一步即可到达的所有新节点。
在生成的节点中,抛弃那些不可能导出(最优)可行解的节点,其余节点加入活节点表,然后从表中选择一个节点作为下一个E-节点。
从活节点表中取出所选择的节点并进行扩充,直到找到解或活动表为空,扩充过程才结束。
现要求给出一个具体的0/1背包问题,并用分支限界法求解之。
2.设计要求:
(1)给出一个实例;
(2)编写算法;
(3)编程实现;
(4)给出分析。
题目二十六:
用深度优先和广度优先法求连通图的一棵生成树
1.设计内容:
给出一个可以抽象为图的实例,用深度优先和广度优先法求连通图的一棵生成树。
2.设计要求:
(1)给出实例;
(2)给出上述两种算法;
(3)编写程序实现生成树的求解;
(4)以图形化界面表现实例并显示求解结果。
教材附录(P290页)里的十一个题目。
四.设备、环境
采用PC计算机,程序设计语言不限。
五.课程设计步骤
1.上机前要求认真分析题目要求,完成书面的需求分析、概要设计和详细设计。
其中:
(1)需求分析包括要实现题目的数据需求、功能需求等。
(2)概要设计包括问题分析和总体方案设计(基本数据结构、算法思路、功能设计、模块划分)。
形式可用图表,文字说明。
(3)详细设计包括:
每个模块的功能,入出信息,处理逻辑,以及关键技术问题的具体解决办法。
2.完成程序设计并调试正确,然后应请老师检查并得到认可。
全部完成后应写出完整的课程设计报告(成绩的重要因素),A4纸装订,连同源程序电子版一起提交。
六.验收标准
验收包括程序测试结果、类设计的合理性和文档质量三部分。
程序测试分标准数据样本的测试、随机输入数据测试、查看源代码和变更问题需求条件的随机数据测试。
发现有过分相似的代码和文档将另行处理。
七.上交相关内容要求
上交的成果的内容必须由以下四个部分组成,缺一不可。
1.上交源程序(电子版):
学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中)。
2.上交程序的说明文件(电子版):
(保存在.txt中),在说明文档中应该写明上交程序所在的目录,上交程序的主程序文件名,如果需要安装,要有程序的安装使用说明。
3.课程设计报告电子文档:
(保存在word文档中,文件名要求按照“学号姓名算法分析课设报告.doc”起名,如文件名为“200300109张三算法分析课设报告.doc”),按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成:
其中包括:
(1)需求分析:
在该部分中叙述每个模块的功能要求等。
(2)概要设计
在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义。
(3)详细设计
各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)。
源程序要按照写程序的规则来编写。
要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
(4)调试分析
包括测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?
问题如何解决?
),算法的改进设想。
(5)课设总结
总结可以包括:
课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对算法设计与分析这门课程的思考、在课程设计过程中对《算法设计与分析》课程的认识等内容。
4.课程设计报告打印稿。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 11 算法 设计 分析 课程设计