0906130205郁博文数据结构课程设计报告.docx
- 文档编号:3827105
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:12
- 大小:408.61KB
0906130205郁博文数据结构课程设计报告.docx
《0906130205郁博文数据结构课程设计报告.docx》由会员分享,可在线阅读,更多相关《0906130205郁博文数据结构课程设计报告.docx(12页珍藏版)》请在冰豆网上搜索。
0906130205郁博文数据结构课程设计报告
中南大学
数据结构课程设计
实验报告
学生姓名郁博文
学院信息科学与工程学院
专业班级信息安全1302班
完成时间2015年11月22日
数据结构课程设计
1.实验内容
数据结构是计算机专业的核心课程,是计算机科学的算法理论基础和软件设计的技术基础。
数据结构是实践性很强的课程。
课程设计是加强学生实践能力的一个强有力手段。
本课程属于集中实践教学环节,是在学习了C语言、面向对象程序设计(C++)和数据结构后开设的。
要求学生掌握数据结构的应用、算法的编写、将算法转换成C(C++,Java)程序并上机调试的基本方法。
课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。
严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用:
1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
实验1哈弗曼编码译码器
实验2遗传算法的模拟
实验3基于细胞自动机实现tribute模型的模拟与分析
2.实验1:
哈弗曼编码译码器
2.1实验目的
利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
但是,这是要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。
对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。
试为这样的信息收发站写一个哈夫曼的编/译码系统。
2.2实验内容
一个完整的系统应该具有以下功能:
(1)I:
初始化(Initialization)。
从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。
(2)E编码(Encoding)。
利用建好的哈夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran中正文进行编码,然后将结果存入文件CodeFile中。
(3)D:
译码(Decoding)。
利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。
(4)P印代码文件(Print)。
将文件CodeFile以紧凑格式显示在终端上,每行50个代码。
同时将此字符形式的编码文件写入文件CodePrin中。
(5)T印哈夫曼树(Treeprinting)。
将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此文字符
形式的哈夫曼树写入文件TreePrint中。
2.3实验结果
实验结果:
2.4模块分析
模块分析:
1.编码模块:
2.解码模块:
3.哈弗曼树结构模块:
4.哈弗曼树创建模块:
5.哈弗曼树形输出模块:
6.输出的哈弗曼树结构:
3.实验2:
遗传算法的模拟
3.1实验目的
遗传算法是以达尔文生物进化论为基础,借鉴自然界中物种进化原理,依据优胜劣
汰而达到优化的规律而创建的一种数学模型和算法。
遗传算法(也可称为基因算法)的
基本原理:
优化问题的可能解被称为是个体(individuals),首先考虑可能解(个体)组
成的集合,即群体(population);然后依据环境特征(优化问题特征)评定各个体的优
劣(其适应度(fitness)来定义);对适应度较差的个体进行淘汰,选取适应度好的个体(类比生物选择),在其上进行杂交,变异等操作形成新的群体;最后再进入下一轮遗传进化,上述过程不断迭代,直到群体满足了某条件,此时出现了满足要求的优化解。
对于计算机问题而言,一般要将问题的解进行编码,编码成二进制字符串,杂交和变异就在这些字符串上进行。
遗传算法可以很好解决很多的优化问题。
3.2实验内容
①编写遗传算法的基本操作函数,包括选择,变异,交叉等。
②应用遗传算法实现求解如下函数的极值
f(x)=x*sin(10*π*x)+1.0x∈[-1,2]
③结果精度要求在小数点后六位。
④给出算法效率分析的实验结果
3.3实验结果
3.4模块分析
模块分析:
1. 个体编码
遗传算法的运算对象是表示个体的符号串,所以必须把变量x编码为一种
符号串。
本题中,用无符号二进制整数来表示。
由于区间长度为2–(-1)=3,为了保证精度要求,至少把区间[-1,2]分为3×106等份。
又因为
所以编码的二进制串至少需要22位。
把一个二进制串(b0,b1,....bn)转化位区间里面对应的实数值通过下面两个步骤:
(1)将一个二进制串代表的二进制数转化为10进制数:
(2)对应区间内的实数:
个体的表现型x和基因型X之间可通过编码和解码程序相互转换,下图就是编码模块。
下图是解码模块:
2.适应度计算模块:
遗传算法中以个体适应度的大小来评定各个个体的优劣程度,从而决定其遗传机会的大小,本题中因为是要求出一个函数的极值,所以把函数的值作为适应度评判标准
3.选择运算模块:
选择运算把当前群体中适应度较高的个体按某种规则或模型遗传到下一代群体中。
一般要求适应度较高的个体将有更多的机会遗传到下一代。
本题中我采用了轮盘赌选择法。
假设种群数目,某个个体其适应度,则其被选中的概率为:
比如我们有5条染色体,他们所对应的适应度评分分别为:
5,7,10,13,15。
所以累计总适应度为:
所以各个个体被选中的概率分别为:
下图为选择模块:
4.基因重组/交叉模块:
交叉运算是遗传算法中产生新个体的主要操作过程,它以某一概率相互交换某
两个个体之间的部分染色体。
本题采用二进制交叉的方法,其具体操作过程是:
•先对群体进行随机配对;
•其次随机设置交叉点位置;
•最后再相互交换配对染色体之间的部分基因。
这样只要随机产生就能得到介于父代基因编码值和母代基因编码值之间的值作为子代基因编码的值。
重组模块如下图:
5.基因突变模块
基因突变是染色体的某一个位点上基因的改变。
基因突变使一个基因变成它的等位基因,并且通常会引起一定的表现型变化。
二进制编码的遗传操作过程和生物学中的过程非常相类似,基因串上的“0”或“1”有一定几率变成与之相反的“1”或“0”
本题中,我们采用基本位变异的方法来进行变异运算,其具体操作过程是:
•首先随机确定出各个个体的基因变异位置
•然后依照某一概率将变异点的原有基因值取反。
模块代码如下:
4.实验3:
基于细胞自动机实现tribute模型的模拟与分析
4.1实验目的
细胞自动机是一个时间和空间都离散的动态系统,每个细胞自动机都是由细胞单元
(cell)组成的规则网格,每个细胞元都有k个可能的状态,其当前状态由其本身及周围
细胞元的前一状态共同决定
4.2实验内容
①编写tribute模型的模拟(最好有图形界面,可用C的图形库)。
②该模型是一个一维模型,包含N个参与者(细胞元,N可配置,缺省为10,此处就用10说明问题),将其命名为actors。
这10个actors组织成一个环形,每个actor都有一定的初始化财富量(可随机确定,在300~500之间均匀分布,也可设定),标记为W。
③该模型的基本规则为:
1.Actors只可以和它的邻居(左邻居和右邻居)进行交互,只有两种可能的交互动作:
一是向其邻居索取供品(demandtribute),二是和其邻居结为联盟(alliance)。
2.一个离散的时间片(表示1年)内,3个随机选择的Actors一个接一个的被激活,每个Actor(A)会向他的其中一个邻居(T)索取Tribute,T可以pay,也可以拒绝并fight,如果pay,TpayAmin(250,WT);如果fight,交战双方都会造成财富损失,每方损失的是对方财富量的25%,如果其中一方的财富不足以承担这一数量时,双方的损失将成比例缩减,此时财富不足的那一方(B)将失去全部财富,引起另一方(A)的财富损失为0.25*(B/(0.25*A))*B。
3.A选取T的原则是使得WT*(WA–WT)/WA最大,但如果没有T使得该值大
于0,A选择不动作。
4.T选取pay或fight的哪一动作依据的是哪一种动作花费更少。
5.另外,每一年,每个Actors都有少量额外的财富(20)补充进来。
④上述规则描述了Tribute模型。
⑤模拟时间应超过1000年。
⑥根据上述模拟得出Tributemodel较为全面的实验结果:
财富的变化规律;各参
数对结果的影响等。
4.3实验结果
初始时tribute模型的财富值分布:
100年时tribute模型的财富值分布:
500年时tribute模型的财富值分布:
1000年时tribute模型的财富值分布:
可以发现随着时间变化财富值向少数点聚集,且速度趋向于先快后慢,后期基本保持不变
4.4模块分析
模块分析
1.初始化财富值:
2.规则2:
3.规则3:
4.规则4:
5.规则5:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 0906130205 郁博文 数据结构 课程设计 报告