文档库 最新最全的文档下载
当前位置:文档库 › 背包问题实验报告

背包问题实验报告

背包问题实验报告
背包问题实验报告

《程序设计和算法语言》上机实验报告

题目名称:背包问题

一、实验目的:

1. 掌握动态规划的基本思想

2. 了解动态规划的背包问题类型,并能设计相应的算法

3. 掌握动态规划算法时间空间复杂度分析,以及问题复杂性分析方法。

算法描述(算法设计的思想和实现的步骤,可用文字描述,也可用流程图):

给定N中物品和一个背包。物品i的重量是W i,其价值位V i,背包的容量为C。问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大??

在选择物品的时候,对每种物品i只有两种选择,即装入背包或不装入背包。不能讲物品i装入多次,也不能只装入物品的一部分。因此,该问题被称为0-1背包问题。

问题分析:令V(i,j)表示在前i(1<=i<=n)个物品中能够装入容量为就j(1<=j<=C)的背包中的物品的最大价值,则可以得到如下的动态规划函数:

(1) V(i,0)=V(0,j)=0

(2) V(i,j)=V(i-1,j) jw i

(1)式表明:如果第i个物品的重量大于背包的容量,则装人前i

个物品得到的最大价值和装入前i-1个物品得到的最大价是相同的,即物品i不能装入背包;第(2)个式子表明:如果第i个物品的重量小于背包的容量,则会有一下两种情况:(a)如果把第i个物品装入背包,则背包物品的价值等于第i-1个物品装入容量位

j-w i的背包中的价值加上第i个物品的价值v i;(b)如果第i个物品没有装入背包,则背包中物品价值就等于把前i-1个物品装入容量为j的背包中所取得的价值。显然,取二者中价值最大的作为把前i个物品装入容量为j的背包中的最优解。

二、源代码:

public class bb

{

public static void knapsack(int[] v, int[] w, int c, int[][] m)

{

int n = v.length-1;

int jMax = Math.min(w[n]-1, c);

for(int j = 0; j <= jMax; j++)

m[n][j] = 0;

for (int l = w[n]; l <= c; l++)

m[n][l] = v[n];

for(int i = n-1; i >=1; i--)

{

jMax = Math.min(w[i]-1,c);

for(int k = 0; k <=jMax; k++)

m[i][k] = m[i+1][k];

for(int h = w[i]; h <= c; h++)

m[i][h] =

Math.max(m[i+1][h],m[i+1][h-w[i]]+v[i]);

}

m[0][c] = m[1][c];

if(c >= w[0])

m[0][c] =

Math.max(m[0][c],m[1][c-w[0]]+v[0]);

System.out.println("bestw ="+m[0][c]);

}

public static void traceback(int[][] m, int[] w, int c, int[] x)

{

int n = w.length-1;

for(int i = 0; i

if(m[i][c] == m[i+1][c])

x[i] = 0;

else{

x[i] = 1;

c -= w[i];

}

x[n] = (m[n][c]>0)?1:0;

}

public static void main(String[] args) {

int[] ww = {2,2,6,5,4};

int[] vv = {6,3,5,4,6};

int[][] mm = new int[11][11];

knapsack(vv,ww,10,mm);

int[] xx =new int[ww.length];

traceback(mm,ww,10,xx);

for(int i = 0;i

System.out.println(xx[i]);

}

四、运行结果(用户屏幕,即程序运行时出现在机器上的画面):bestw =15

1

1

1

信息安全加密实验报告

重庆交通大学实验报告 班级:计信专业2012级2班 学号: 631206060232 姓名:娄丽梅 实验项目名称:DES加解密程序设计与实现 实验项目性质:设计性(验证性) 实验所属课程:信息安全 实验室(中心):软件实验室 指导教师:米波 实验完成时间: 2014 年12月11日

一、实验目的 1、理解DES加密与解密的程序设计算法思想。 2、编写DES加密与解密程序,实现对明文的加密与解密,加深对数据加密与解密的理解,掌握DES加密算法思想,提高网络安全的编程能力。 二、实验主要内容及原理 (一)实验内容 1、掌握DES算法; 2、编写DES算法。 (二)实验原理 1、初始置换 初始置换在第一轮运算之前执行,对输入分组实施如下表所示的变换。此表应从左向右、从上向下读。在将这64位数据分为左右两部分,每部分分别为32位,将左32位留下,将右32位按照下表进行排列 2、密钥置换 一开始,由于不考虑每个字节的第8位,DES的密钥由64位减至56位。每个字节第8位可作为奇偶校验位以确保密钥不发生错误。接着,56位密钥被分成两部分,每部分28位。然后,根据轮数,这两部分分别循环左移l位或2位。在DES的每一轮中,从56位密钥选出48位子密钥(Sub Key)。 3、S盒置换 当产生了48位密钥后就可以和右边32位明文进行异或运算了,得到48位的密文。 再经过下论的S盒跌带,其功能是把6bit数据变为4bit数据,每个S盒是一个4行、16列的表。盒中的每一项都是一个4位的数。S盒的6个位输入确定了其对应的输出在哪一行哪一列。 4、P盒置换 S盒代替运算后的32位输出依照P盒进行置换。该置换把每输入位映射到输出位,任意一位不能被映射两次,也不能被略去,这个置换叫做直接置换。 5、再次异或运算 最后,将P盒置换的结果与最初的64位分组的左半部分异或,然后左、右半部分交换,接着开始另一轮。 6、当进行到16轮后,最终进行一次末置换,形成密文

文件加密与解密实验报告

HUNAN UNIVERSITY 程序设计训练——文件加密与解密 报告 学生姓名X X X 学生学号20110102308 专业班级建环308 指导老师何英 2012-07-01至 2012-07-13

一、程序设计目的和要求 (3) 二、程序设计内容 (4) 1、总体设计 (4) 1.1主控选择模块 (4) 1.2加密模块 (4) 1.3解密模块 (4) 2、流程图 (5) 三模块详细说明 (6) 四、测试数据及其结果 (7) 五、课程设计总结 (8) 六、附录 (9) 附录1:参考文献 (9) 附录2:程序源代码 (9)

一、程序设计目的和要求 1、目的:为保证个人数据资料不被他人窃取使用,保护个人隐私及个人文件。设计一个基于c语言的文本文件加密及解密软件,可以方便对文本文件的加密与解密。本设计实现了文本文件的解密及解密,运行软件之后只需输入任意一个文本文件的文件名及后缀名即可对该文本文件进行加密或解密操作。本设计的加密与解密系统,使用了面向各类文件的方法,运用Microsoft Visual C++ 6.0实现具有加密、解密、帮助信息、读取文本文件、显示结果、退出等功能的文件加密与解密系统。 2、要求: (1)从键盘输入要进行加密的一行字符串或者需要加密的文件名。 (2)显示菜单: (3)选择菜单,进行相应的操作。加密方法是设置一加密字符串以及对文件的哪些部分进行加密;加密是将原始文件加密并保存到文件中;解密是将加了密的文件还原并保存到文件中,同时应比较与原始文件的一致性; 3、其他要求 (1)变量、函数命名符合规范。 (2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。

算法设计背包问题

算法实验报告 ---背包问题 实验目的 1.掌握动态规划算法的基本思想,包括最优子结构性质和基于表格的最优 值计算方法。 2.熟练掌握分阶段的和递推的最优子结构分析方法。 3.学会利用动态规划算法解决实际问题。 问题描述: 给定n种物品和一个背包。物品i的重量是wi,体积是bi,其价值为vi, 背包的容量为c,容积为d。问应如何选择装入背包中的物品,使得装入背包中 物品的总价值最大? 在选择装入背包的物品时,对每种物品只有两个选择:装入 或不装入,且不能重复装入。输入数据的第一行分别为:背包的容量c,背包的 容积d,物品的个数n。接下来的n行表示n个物品的重量、体积和价值。输出 为最大的总价值。 问题分析: 标准0-1背包问题,MaxV表示前i个物品装入容量为j的背包中时所能产生的最大价值,结构体objec表示每一个可装入物品,其中w表示物品的重量,v表示物品的价值。如果某物品超过了背包的容量,则该物品一定不能放入背包,问题就变成了剩余i-1个物品装入容量为j的背包中所能产生的最大价值;如果该物品能装入背包,问题就变成i-1个物品装入容量为j-objec[i].w的背包所能产生的最大价值加上物品i的价值objec[i].v. 复杂性分析 时间复杂度,最好情况下为0,最坏情况下为:(abc) 源程序 #include #include #include #include #include int V [200][200][200]; int max(int a,int b) {

数据加密实验报告

实验报告 课程:计算机保密_ _ 实验名称:数据的加密与解密_ _ 院系(部):计科院_ _ 专业班级:计科11001班_ _ 学号: 201003647_ _ 实验日期: 2013-4-25_ _ 姓名: _刘雄 _ 报告日期: _2013-5-1 _ 报告评分:教师签字:

一. 实验名称 数据加密与解密 二.运行环境 Windows XP系统 IE浏览器 三.实验目的 熟悉加密解密的处理过程,了解基本的加密解密算法。尝试编制基本的加密解密程序。掌握信息认证技术。 四.实验内容及步骤 1、安装运行常用的加解密软件。 2、掌握加解密软件的实际运用。 *3、编写凯撒密码实现、维吉尼亚表加密等置换和替换加解密程序。 4、掌握信息认证的方法及完整性认证。 (1)安装运行常用的加解密软件,掌握加解密软件的实际运用 任务一:通过安装运行加密解密软件(Apocalypso.exe;RSATool.exe;SWriter.exe等(参见:实验一指导))的实际运用,了解并掌握对称密码体系DES、IDEA、AES等算法,及非对称密码体制RSA等算法实施加密加密的原理及技术。 ?DES:加密解密是一种分组加密算法,输入的明文为64位,密钥为56位,生成的密文为64位。 ?BlowFish:算法用来加密64Bit长度的字符串或文件和文件夹加密软件。 ?Gost(Gosudarstvennyi Standard):算法是一种由前苏联设计的类似DES算法的分组密码算法。它是一个64位分组及256位密钥的采用32轮简单迭代型加密算法. ?IDEA:国际数据加密算法:使用128 位密钥提供非常强的安全性; ?Rijndael:是带有可变块长和可变密钥长度的迭代块密码(AES 算法)。块长和密钥长度可以分别指定成128、192 或256 位。 ?MISTY1:它用128位密钥对64位数据进行不确定轮回的加密。文档分为两部分:密钥产生部分和数据随机化部分。 ?Twofish:同Blowfish一样,Twofish使用分组加密机制。它使用任何长度为256比特的单个密钥,对如智能卡的微处理器和嵌入在硬件中运行的软件很有效。它允许使用者调节加密速度,密钥安装时间,和编码大小来平衡性能。 ?Cast-256:AES 算法的一种。 (同学们也可自己下载相应的加解密软件,应用并分析加解密过程) 任务二:下载带MD5验证码的软件(如:https://www.wendangku.net/doc/da16467116.html,/downloads/installer/下载(MySQL):Windows (x86, 32-bit), MSI Installer 5.6.11、1.5M;MD5码: 20f788b009a7af437ff4abce8fb3a7d1),使用MD5Verify工具对刚下载的软件生成信息摘要,并与原来的MD5码比较以确定所下载软件的完整性。或用两款不同的MD5软件对同一文件提取信息摘要,而后比较是否一致,由此可进行文件的完整性认证。

西藏大学关于加强本科生毕业论文指导与管理的意见

西藏大学关于加强本科生毕业论文指导与管理的意见

西藏大学关于加强本科生毕业论文(设计)指导与管理的意见毕业论文(设计)是实现培养目标的重要环节,是教育与生产劳动及社会实践相结合的重要体现,是培养大学生的创新能力、实践能力和创业精神的重要途径。毕业论文(设计)的质量也是衡量教学水平,学生毕业与学位资格论证的重要依据。毕业论文(设计)在培养学生探求真理、强化社会意识、进行科学研究基本训练、提高综合实践能力与素质等方面都具有重要意义。为了保证西藏大学本科生毕业论文(设计)的教学质量,根据教育部办公厅《关于加强普通高等学校毕业设计(论文)工作的通知》(教高厅[2004]14号)精神,特提出加强本科学生毕业论文(设计)撰写规范、指导工作及管理的意见。 一、毕业论文(设计)工作的组织管理 全校的本科生毕业论文(设计)在主管校长统一领导下进行,实行分级管理,层层负责的办法。 1.教务处负责协调有关问题,检查毕业论文(设计)执行情况;汇总各学院(部)毕业论文(设计)选题和指导教师情况;收集和保管各学院(部)毕业论文(设计)工作总结及毕业论文(设计)分析报告;收集各学院(部)本科生毕业论文(设计)成绩等。 2.各学院(部)负责布置本学院(部)毕业论文(设计)工作任务,制定具体的工作安排并填写《西藏大学学院(部)200 届本科生毕业论文(设计)工作日程安排表》(见附件4),审查毕业论文(设计)题目和任务书;安排指导教师,进行毕业论文(设计)工作动员;定期检查毕业论文(设计)工作进展情况;协调处理毕业论文(设计)中的有关问题,考核指导教师的工作;对学生毕业论文(设计)进行审查,组织毕业论文(设计)答辩、成绩考核与评定工作,复查成绩评定情况。对优秀和不及格的毕业论文 (设计)进行审核评价;推荐优秀毕业论文(设计);进行毕业论文(设计)工作总结;收集并妥善保存学生毕业论文(设计)原件及评审情况相关资料。 二、毕业论文(设计)的基本教学要求 1.培养学生调查研究、文献检索与阅读、资料收集、归纳整理、综合分析及创新能力; 2.培养学生综合运用所学专业理论知识,独立发现、分析和解决实际问题的能力; 3.培养学生研究和正确撰写论文(设计)的能力。 三、毕业论文(设计)工作流程 本科生毕业论文(设计)工作由选题及定题、论文(设计)指导、中期检查、定稿、论文(设计)评阅、答辩与评定成绩、论文(设计)抽检、优秀论文(设计)推荐、工作总结等九个环节组成。其工作流程见附件23。 四、毕业论文(设计)选题工作及要求 1.毕业论文(设计)应由各系(教研室)组织教师拟定若干方面的题目,于第7学期开学初交学院院长(部长)审查,之后由分管教学的院长(部主任)以任务形式下达给各系(教研室),系(教研室)主任最后将任务分配给本系(教研室)的教师。 2.第7学期的第5周,由学院(部)将审定后的毕业论文(设计)题目以毕业论文(设计)选题指南的形式向本单位毕业学生公布和介绍。论文(设计)题目的确定按照“双向选择”的原则进行,学生填写选题志愿,由学院(部)根据学生志愿和教师的意见,最后由学生在指导教师的指导下确定毕业论文(设计)选题。 3.毕业论文(设计)的选题要求: ①选题内容覆盖面要宽,利于拓展学生的思维与眼界。 ②专业学科特点鲜明,符合专业培养目标。选题应与社会、生产、科研和实验室建设等实际情况相结合。 ③理论与实践联系紧密,其中具有理论和实际意义的选题应在80%以上,培养学生实际应用知识的能力。 ④能够跟踪学科发展新趋势,选题关注专业学科的热点、焦点等问题。

AES加密解密实验报告

信息安全工程课程 实验报告 AES加密解密的实现 课程名称:信息安全工程 学生姓名:黄小菲 学生学号: 3112041006 专业班级:系统工程2038班 任课教师:蔡忠闽 2012年11月22日

目录 1.背景 (1) 1.1 Rijndael密码的设计标准: (1) 1.2 设计思想 (1) 2.系统设计 (2) 2.1系统主要目标 (2) 2.2功能模块与系统结构 (2) 2.2.1字节替换SubByte (2) 2.2.2行移位ShiftRow (2) 2.2.3 列混合MixColumn (3) 2.2.4 轮密钥加AddRoundKey (4) 2.2.5 逆字节替换 (4) 2.2.6逆行移位InvShiftRow (4) 2.2.7 逆列混淆 (4) 3 加密模式 (5) 3.1 电子密码本ECB模式 (5) 3.2加密块链模式CBC模式 (6) 4 系统功能程序设计 (8) 4.1基本加密部分 (8) 4.1.1字节替换 (8) 4.1.2行移位 (8) 4.1.3列混合 (9) 4.1.4轮密钥加 (9) 4.1.5密钥扩展 (10) 4.1.6逆字节替换 (11) 4.1.7逆行移位 (11) 4.1.8逆列混合 (12) 4.1.9加密 (12) 4.1.10解密 (13) 5 实验结果 (14) 5.1 需要加密文件 (14) 5.2 实验加密解密结果 (15) 6 参考资料 (16)

1.背景 AES,密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。AES 有一个固定的128位的块大小和128,192或256位大小的密钥大小。Rijndael算法汇聚了安全性、效率高、易实现性和灵活性等优点,是一种较DES更好的算法。 该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael之命名之,投稿高级加密标准的甄选流程。(Rijdael的发音近于"Rhine doll"。)AES在软体及硬件上都能快速地加解密,相对来说较易于实作,且只需要很少的记忆体。作为一个新的加密标准,目前正被部署应用到更广大的范围. 1.1 Rijndael密码的设计标准: ①抵抗所有已知的攻击。 ②在多个平台上速度快,编码紧凑。 ③设计简单。 当前的大多数分组密码,其轮函数是Feistel结构。 Rijndael没有这种结构。 Rijndael轮函数是由3个不同的可逆均匀变换 1.2 设计思想 ?分组和密钥长度可变,各自可独立指定为128、192、256比特。 ?状态 ?算法中间的结果也需要分组,称之为状态,状态可以用以字节为元素的矩阵 阵列表示,该阵列有4行,列数N b为分组长度除32 ?种子密钥 ?以字节为元素的矩阵阵列描述,阵列为4行,列数N k为密钥长度除32

毕业论文管理规定

毕业论文管理规定 (2008) 安徽建筑工业学院法律与政治系 目录 1、法律与政治系本科毕业论文管理办法(2008)-------------------------------1 附件: (1)法律与政治系毕业论文文本规范----------------------------------------------8 (2)法律与政治系本科毕业论文工作进程----------------------------------------13 (3)法律与政治系本科毕业论文答辩程序----------------------------------------16 附表: (3)法律与政治系本科毕业论文任务书-------------------------------------------19 (4)法律与政治系本科毕业论文开题报告----------------------------------------21 (5)法律与政治系本科毕业论文承诺书-------------------------------------------25 (6)法律与政治系本科毕业论文成绩考核表-------------------------------------26 (7)法律与政治系本科毕业论文评分表-------------------------------------------28 (8)法律与政治系本科毕业答辩成绩评定表-------------------------------------31(9)法律与政治系本科毕业答辩成绩汇总表-------------------------------------32(10)法律与政治系本科毕业论文答辩会议记录--------------------------------33 (11)法律与政治系本科毕业论文指导教师变更申请表----------------------35

算法分析与复杂性理论 实验报告 背包问题

深圳大学实验报告课程名称:算法分析与复杂性理论 实验名称:实验四动态规划 学院:计算机与软件学院专业:软件工程 报告人:文成学号:2150230509班级:学术型 同组人:无 指导教师:杨烜 实验时间:2015/11/5——2015/11/18 实验报告提交时间:2015/11/18 教务处制

一. 实验目的与实验内容 实验目的: (1) 掌握动态规划算法设计思想。 (2) 掌握背包问题的动态规划解法。 实验内容: 1.编写背包问题的动态规划求解代码。 2.背包容量为W ,物品个数为n ,随机产生n 个物品的体积(物品的体积不可大于W )与价值,求解该实例的最优解。 3. 分别针对以下情况求解 第一组:(n=10,W=10),(n=10,W=20),(n=10,W=30) 第二组:(n=20,W=10),(n=20,W=20),(n=20,W=30) 第三组:(n=30,W=10),(n=30,W=20),(n=30,W=30) 4. 画出三组实验的时间效率的折线图,其中x 轴是W 的值,y 轴是所花费的时间,用不同的颜色表示不同n 所花费的时间。 二.实验步骤与结果 背包问题的问题描述: 给定n 种物品和一个背包。物品i 的重量是 i w , 其价值为i v , 背包容量为C 。问应该如何选择装入背包的物品,使得装入背包中物品的总价值最大? 背包问题的算法思想: 考虑一个由前i 个物品(1<=i<=n )定义的实例,物品的重量分别为w1,…,w2、价值分别为v1,…,vi ,背包的承重量为j (1<=j<=w )。设v[i,j]为该实例的最优解的物品总价值,也就是说,是能够放进承重量为j 的背包中的前i 个物品中最有价值子集的总价值。可以把前i 个物品中能够放进承重量为j 的背包中的子集分成两个类别:包括第i 个物品的子集和不包括第i 个物品的子集。 1. 根据定义,在不包括第i 个物品的子集中,最优子集的价值是V[i-1,j]。 2. 在包括第i 个物品的子集中(因此,j-wi>=0),最优子集是由该物品和前i-1个物品中能够放进承重量为j-wi 的背包的最优子集组成。这种最优子集的总价值等于vi+V[i-1,j-wi]。 因此,在前i 个物品中最优解得总价值等于这两个价值中的最大值。当然,如果第i 个物品不能放进背包,从前i 个物品中选出的最优子集的总价值等于从前i-1个物品中选出的最优子集的总价值。这个结果导致了下面的这个递推关系式: 初始条件:

发送数字签名和加密邮件-实验报告

一、实验目的 ●了解什么是数字签名与加密 ●掌握用Outlook Express发送签名的方法 ●掌握用Outlook Express 发送加密的方法。 二、实验环境 ●实验室所有机器安装了Windows 操作系统,并附带Outlook Express。 三、实验容和步骤 1、设置Outlook Express收发QQ (1)打开OUTLOOK EXSPRESS方法为开始/所有程序/OUTLOOK EXPRESS; (2)申请方法:OUTLOOK EXSPRESS的工具//添加//输入显示名/输入你的QQ地址/设置电子服务器名pop.qq. smtp.qq./输入电子的名称和密码/下一步/完成 2、申请免费数字证书

查看证书: 3、在 Outlook Express 设置数字证书 (1)在 Outlook Express 中,单击“工具”菜单中的“”(2)选取“”选项卡中用于发送安全的,然后单击“属性”。

(3)选取安全选项卡中的签名标识复选框,然后单击选择按健 (4)在弹出的“选择默认数字标识”窗口中,选择要使用的数字证书,就选择你刚才申请的个人电子保护证书 (5)点击“确定”按钮,完成证书设置。至此,你可以发送带数字签名的。 4、发送签名 发送时从“工具”菜单中选择“签名”,收件人地址栏后面出现“签名”标志。

本次实验我给为 qq. 发送一个签名。 发送成功: 5、发送加密 发送加密前必须正确安装了对方的“电子保护证书”,只要请对方用他的“电子保护证书”给你发送一个签名,证书会自动安装,并与对方Email地址绑定,否则就要手工安装对方“电子保护证书”。(1)从Outlook Express“工具”菜单中选择“选项”。 (2)鼠标单击“数字标识”按钮。

本科生毕业论文管理制度

本科生毕业论文(设计)撰写基本规范 毕业论文(设计)全文包括:封面、学士学位论文原创性申明、中英文摘要(中文摘要300字左右,外文摘要250个实词左右)、目录、正文、结论、参考文献、附录(可选)、致谢(可选)等); 毕业论文(设计)字数:理工科5000字以上;文科6000字以上,其中外语专业4000单词以上,艺术类专业3000字以上(含图表、程序和计算数字等)。 一、毕业论文(设计)撰写的内容要求 (一)目录 目录按三级标题编写(即:1……、1.1 ……、1.1.1 ……),要求标题层次清晰。目录中标题应与正文中标题一致。 (二)标题 标题应简短、明确、有概括性。标题字数要适当,不超过20字。 (三)摘要 毕业论文(设计)摘要或总说明书要概括研究课题的内容、方法和观点以及取得的成果和结论,应反映整个内容的精华,字数在300字左右。 (四)前言部分 前言部分要说明本课题的意义、目的、研究范围及要求达到的技术参数;简述本课题应解决的主要问题。 (五)正文部分 正文部分是作者对研究工作的详细表述,其内容包括:问题的提出,研究工作的基本前提、假设和条件,基本概念和理论基础,模型的建立,实验方案的拟定,基本概念和理论基础,设计计算的方法和内容,实验方法、内容及其分析,理论论证,理论在课题中的应用,课题得出的结果及结果的讨论等。 撰写设计(设计)正文部分的具体要求是: 1.理论分析部分应写明所作的假设及其合理性,应以简练的文字概略地表达。所用的分析方法、计算方法、实验方法等,要写明哪些为人所用,哪些为己所改进,哪些为己所创造,以便指导教师审查和纠正。 2.对于用实验方法研究的课题,应具体说明实验用的装置、仪器的性能,并对所用装置、仪器做出检验和标定;对实验的过程和操作方法,力求叙述简明扼要;对于由理论推导达到研究目的的课题,内容要精心组织,做到概念准确,判断推理符合客观事物的发展规律。 3.结果与讨论是全文的心脏,对必要而充分的数据、现象、认识等要作为分析的依据进行具体撰写。在对结果作定性和定量分析时,应说明数据的处理方法以及误差分析,说明现象出现的条件及其可证性,交代理论推导中认识的由来和发展;对结果进行分析后得出的结论,应说明其适用的条件与范围。 此外,作为结果与分析的图、表,应精心制作、整洁美观。 (六)结论 结论包括对整个研究工作进行归纳和综合而得出的总结,所得结果与已有结果的比较和本课题尚存在的问题,以及进一步开展研究的见解与建议。 结论集中反映作者的研究成果,表达作者对所研究的课题的见解,结论要概括、简短。 结论撰写时应注意以下几点:

背包问题

课程设计报告 课程名称数据结构课程设计 课题名称背包问题 专业信息与计算科学 班级1001班 学号22 姓名王锐 指导教师刘洞波张晓清郭芳 2012年6月9日

课程设计任务书 课程名称数据结构课程设计课题背包问题 专业班级信科1001班 学生姓名王锐 学号22 指导老师刘洞波张晓清郭芳 审批刘洞波张晓清郭芳 任务书下达日期:2012年6月9日 任务完成日期:2012年6月16日

一、设计内容与设计要求 1.设计内容: 1)问题描述 假设有一个能装入总体积为T的背包和n件体积分别为W1,W2,···,Wn的物品,能否从n件物品中挑选若干件恰好装满背包,即使W1+W2+···+Wn=T,要求找出所有满足 上述条件的解。例如:当T=10,共6件物品,物品的体积为{1,2,3,4,5,8},那么 可找到下列4组解:(1,2,3,4)、(1,4,5)、(2,3,5)、(2、8)。 2)实现提示 可利用回溯法的设计思想来解决背包问题。首先,将物品排成一列,然后顺序选取物品装入背包,假设已选取了前i件物品之后背包还没有装满,则继续选取第i+1件物品, 若该件物品“太大”不能装入,则丢弃而继续选取下一件,直至背包装满为止。但如果在 剩余的物品中找不到合适的物品以填满背包,则说明“刚刚”装入背包的那件物品“不合 适”,应将它取出“丢弃一边”,继续再从“它之后”的物品中选取,如此重复,直至求得 满足条件的解,或者无解。 由于回溯求解的规则是“后进先出”,因此要用到栈。 2.设计要求: 课程设计报告规范 1)需求分析 a.程序的功能。 b.输入输出的要求。 2)概要设计 a.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。 b.课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构, 它们之间有什么关系等。 3)详细设计 a.采用C语言定义相关的数据类型。 b.写出各模块的类C码算法。 c.画出各函数的调用关系图、主要函数的流程图。

分支界限法解0-1背包问题实验报告

实验5 分支界限法解0-1背包问题 一、实验要求 1.要求用分支界限法求解0-1背包问题; 2.要求交互输入背包容量,物品重量数组,物品价值数组; 3.要求显示结果。 二、实验仪器和软件平台 仪器:带usb接口微机 软件平台:WIN-XP + VC++6.0 三、源程序 #include "stdafx.h" #include #include #include #include using namespace std; int *x; struct node //结点表结点数据结构 { node *parent;//父结点指针 node *next; //后继结点指针 int level;//结点的层 int bag;//节点的解 int cw;//当前背包装载量 int cp;//当前背包价值 float ub; //结点的上界值 }; //类Knap中的数据记录解空间树中的结点信息,以减少参数传递及递归调用所需的栈空间class Knap { private: struct node *front, //队列队首 *bestp,*first; //解结点、根结点 int *p,*w,n,c,*M;//背包价值、重量、物品数、背包容量、记录大小顺序关系long lbestp;//背包容量最优解 public: void Sort(); Knap(int *pp,int *ww,int cc,int nn);

~Knap(); float Bound(int i,int cw,int cp);//计算上界限 node *nnoder(node *pa,int ba,float uub);//生成一个结点ba=1生成左节点ba=0生成右节点 void addnode(node *nod);//向队列中添加活结点 void deletenode(node *nod);//将结点从队列中删除 struct node *nextnode(); //取下一个节点 void display(); //输出结果 void solvebag(); //背包问题求解 }; //按物品单位重量的价值排序 void Knap::Sort() { int i,j,k,kkl; float minl; for(i=1;i

DES加密算法实验报告

苏州科技学院 实验报告 学生姓名:杨刘涛学号:1220126117 指导教师:陶滔 刘学书1220126114 实验地点:计算机学院大楼东309 实验时间:2015-04-20 一、实验室名称:软件实验室 二、实验项目名称:DES加解密算法实现 三、实验学时:4学时 四、实验原理: DES算法由加密、子密钥和解密的生成三部分组成。现将DES算法介绍如下。1.加密 DES算法处理的数据对象是一组64比特的明文串。设该明文串为m=m1m2…m64 (mi=0或1)。明文串经过64比特的密钥K来加密,最后生成长度为64比特的密文E。其加密过程图示如下:

图2-1:DES算法加密过程 对DES算法加密过程图示的说明如下: 待加密的64比特明文串m,经过IP置换(初始置换)后,得到的比特串的下标列表如下: 表2-1:得到的比特串的下标列表

该比特串被分为32位的L0和32位的R0两部分。R0子密钥K1(子密钥的生成将在后面讲)经过变换f(R0,K1)(f变换将在下面讲)输出32位的比特串 f1,f1与L0做不进位的二进制加法运算。运算规则为: f1与L0做不进位的二进制加法运算后的结果赋给R1,R0则原封不动的赋给L1。L1与R0又做与以上完全相同的运算,生成L2,R2……一共经过16次运算。最后生成R16和L16。其中R16为L15与f(R15,K16)做不进位二进制加法运算的结果,L16是R15的直接赋值。 R16与L16合并成64位的比特串。值得注意的是R16一定要排在L16前面。R16与L16合并后成的比特串,经过置换IP-1(终结置换)后所得比特串的下标列表如下: 表2-2:置换后所得比特串的下标列表 经过置换IP-1后生成的比特串就是密文e。 变换f(Ri-1,Ki): 它的功能是将32比特的输入再转化为32比特的输出。其过程如图2-2所示:

毕业论文工作管理办法

xx大学本科生毕业论文(设计)工作管理办法(修订) 第一章总则 第一条本科生毕业论文(含毕业设计,以下统称毕业论文),是本科人才培养方案的重要组成部分,是培养学生创新思维,提高学生实践能力的有效途径,是学生综合运用所学专业知识解决学术和实际问题的重要方式,是反映学生全面素质和能力的重要标志。为了进一步加强我校毕业论文管理工作,提高毕业论文质量,特制订本办法。 第二章毕业论文工作的目的 第二条毕业论文是本科教学计划中独立设置的一门必修课程,本科生毕业论文教学的基本目标是通过该课程培养学生以下几方面的能力: (一)培养学生综合运用专业基本理论、基本知识、基本技能的能力;培养学生独立提出问题、分析问题、解决问题的能力;提高学生的创新意识; (二)培养学生理论联系实际的工作作风和严肃认真的科学态度; (三)培养学生运用专业手段及科学方法获取信息和处理信息的能力; (四)培养学生开展调查研究、处理实验数据、利用文献和书面表达等综合能力。 第三章毕业论文工作的组织 第三条学院(系)是毕业论文工作组织和实施的主体,提倡各学院(系)分专业成立由系主任牵头的毕业论文课程组,开展毕业论文教学工作。 毕业论文课程组主要负责提出本专业毕业论文课程的基本要求,落实毕业论文课程计划,指导教师的配备,毕业论文题目筛选,毕业论文指导,评阅,论文答辩,成绩评定,质量分析,推荐优秀论文等具体工作。 学院(系)要对毕业论文工作给予高度重视,组织学院(系)教学指导委员会审核课程组拟定的课程计划和论文要求,制订本院(系)的毕业论文工作管理办法和实施细则;督促和协调课程组做好指导教师的

安排,明确毕业论文指导教师的教学工作量,保证毕业论文工作经费及时到位,监督和检查毕业论文的质量。 第四条教务部负责制定全校毕业论文工作的指导原则,组织校内外专家对毕业论文工作进行抽查和监督,负责对优秀毕业论文和优秀指导教师的评选和奖励。 第四章毕业论文的选题要求 第五条毕业论文选题是确保毕业论文课程效果,提高毕业论文质量的关键,各学院(系)及毕业论文课程组要切实加强论文选题工作,做好选题指导。毕业论文的选题应遵循以下原则: (一)专业性论文题目要符合专业培养目标、满足人才培养基本要求,使学生在专业知识应用方面得到比较全面的训练。理工医科学生要尽量选择实验类、工程实践类的毕业论文题目,人文社科类学生应根据专业特点,结合社会实践设立题目。拟题要有明确的针对性,切忌题目立意过大,内容空泛。要通过做毕业论文,使学生具备运用所学专业知识解决实际问题的能力。 (二)实践性论文题目应尽可能结合生产实践、社会实践和科研实践,鼓励学院与外单位科研院所、大型企事业研发和生产单位联合拟定论文题目,符合要求的可采取联合指导的方式。毕业设计的选题要注重与实际工程项目结合,难度和工作量应高于课程设计,并体现出一定的综合性。 (三)创新性论文题目应突出创新性,要结合学科创新、技术创新和具体产品创新,使论文题目在难度适中的情况下尽可能地反映科技创新和社会生产创意的需要。 (四)可行性论文题目要具有可行性,符合本科生知识、能力、水平和工作条件的实际,切实满足本科毕业论文工作量的要求,避免过多和过少两个极端。保证学生在规定时间内通过努力能够完成任务或取得阶段性成果。 (五)个性化论文题目要体现因材施教的教育方针,避免千篇一律,鼓励学生根据兴趣在教师指导下自拟题目,并创造性地开展工作,同时鼓励学生根据兴趣参与教师的科研课题,使不同能力和水平的学生都能得到较大的提高。

算法实验报告

《算法设计与分析》上机实验报告

一、分治与递归 1、问题描述 编写程序,实现线性时间内选择n个元素的中位数的算法。并对于不同的n,测试平均时间效率。 2、问题分析 本问题属于线性选择问题的一个特例,可以使用分治法进行求解。其基本思想是模仿快速排序方法,对输入的数组进行划分,求出中位数所在的子数组,然后用递归的方法进行求解,最终可以求得问题的解。 3、算法设计 将n个输入元素根据随机选择的基准划分成2个子数组,a[p:r]被划分成a[p:i]和a[i+1:r]两组,使得a[p:i]中每个元素都不大于a[i+1:r]中元素。接着算法计算子数组a[p:i]中元素个数j,如果k<=j,则a[p:r]中第k个小元素落在子数组a[p:i]中元素均小于要找的第k小元素,因此要找的a[p:r]中第k小元素是a[i+1:r]中的第k-j小元素。 按照上述的方法递归的执行,直到当前数组中只剩下一个元素,就可以得到问题的解。 4、算法实现 #include"iostream.h" #include"stdlib.h" #include"time.h" #include #include #include"windows.h" #include int randomizedSel(int *,int ,int ,int );

void main() { srand((unsigned int)time(NULL)); _timeb time0,time1; int n; cout << "请输入数组的长度:"; cin >> n; cout << "请输入数组的每一个数:" << endl; int *a=new int[n]; for(int i=0;i> a[i]; DWORD stime=GetTickCount(); _ftime(&time0); int result=randomizedSel(a,0,n-1,(n+1)/2); DWORD Etime=GetTickCount(); _ftime(&time1); cout << "结果为:" << result << endl; cout << https://www.wendangku.net/doc/da16467116.html,litm*https://www.wendangku.net/doc/da16467116.html,litm*1000<x); if(i>=j) break; swap(a,i,j); } a[p]=a[j]; a[j]=x; return j;

加密技术及密码破解实验报告

第九章、实验报告 实验一、设置Windows启动密码 一、实验目的:利用Windows启动密码保存重要文件。 二、实验步骤: 1、在Windows XP系统中选择开始——运行,在打开输入框中“syskey.exe”,点击确定,打开“保证Windows XP账户数据库的安全”对话框。 2、单击【更新】,打开【启动密码】对话框,然后输入密码,在【确认】文本框中再次输入密码,单击【确定】

实验二、为word文档加密解密 一、实验目的:保护数据的安全 二、实验步骤: 1、打开一个需要加密的文档,选择【工具】——【选项】——【安全性】然后输入想要设置打开文件时所需的密码 2、单击【高级(A)】打开加密类型对话框,选中【加密文档属性】复选框,单击【确定】。

3、打开文件的【确认密码】对话框,输入打开文件时需要的密码,单击【确定】,随即打开【确认密码】对话框,输入密码。 4、保存文件后,重新打开Word文档,打开【密码】,输入打开文件所需的密码,单击【确定】输入修改的密码,单击【确定】 破解word密码 (1)安装Advanced Office Password Recovery软件,安装完成后打开需要破解的word 文档,进行暴力破解,结果如图所示: 实验三、使用WinRAR加密解密文件

一.实验目的:加密文件,保证文件的安全性。 二.实验步骤: 1、在需要加密的文件夹上右击,选中【添加到压缩文件】打开【压缩文件名和参数】 2、选中【压缩文件格式】组合框中的【RAR】并在【压缩选项】中选中【压缩后删除源文件】然后切换到【高级】,输入密码,确认密码。 3、关闭对话框,单击确定,压缩完成后,双击压缩文件,系统打开【输入密码对话框】 破解WinRAR加密的文件 (1)安装Advanced RAR Password Recovery软件,打开WinRAR加密文件,进行暴力破解,获得密码。结果如图:

人工智能之遗传算法求解01背包问题实验报告

人工智能之遗传算法求解0/1背包问题实验报告 Pb03000982 王皓棉 一、问题描述: 背包问题是著名的NP完备类困难问题, 在网络资源分配中有着广泛的应用,已经有很多人运用了各种不同的传统优化算法来解决这一问题,这些方法在求解较大规模的背包问题时,都存在着计算量大,迭代时间长的弱点。而将遗传算法应用到背包问题的求解,则克服了传统优化方法的缺点,遗传算法是借助了大自然的演化过程,是多线索而非单线索的全局优化方法,采用的是种群和随机搜索机制。 遗传算法(GA)是一类借鉴生物界自然选择和自然遗传机制的随机化的搜索算法,由美国J.Holland教授提出,其主要特点是群体搜索策略、群体中个体之间的信息交换和搜索不依赖于梯度信息。因此它尤其适用于处理传统搜索方法难于解决的复杂和非线性问题,可广泛应用于组合优化,机器学习,自适应控制,规划设计和人工生命领域。 GA是一种群体型操作,该操作以群体中的所有个体为对象。选择,交叉和变异是遗传算法的三个主要算子,他们构成了遗传算法的主要操作,使遗传算法具有了其它传统方法所没有的特性。遗传算法中包含了如下五个基本要素:1 .参数编码,2.初始群体的设置,3.适应度函数的设计, 4.遗传操作设计,5.控制参数设定,这个五个要素构成可遗传算法的核心内容。 遗传算法的搜索能力是由选择算子和交叉算子决定,变异算子则保证了算法能够搜索到问题空间的每一个点,从而使其具有搜索全局最优的能力.而遗传算法的高效性和强壮性可由Holland提出的模式定理和隐式并行性得以解释。 二、实验目的: 通过本实验,可以深入理解遗传算法,以及遗传算法对解决NP问题的作用。 三、算法设计: 1、确定种群规模M、惩罚系数 、杂交概率c p、变异概率m P、染色体长度n及最大 max. 进化代数gen x=1表 2、采用二进制n维解矢量X作为解空间参数的遗传编码,串T的长度等于n, i x=0表示不装入背包。例如X={0,1,0,1,0,0,1}表示第2,4,7示该物件装入背包, i 这三个物件被选入包中。

AES加密算法实验报告

实验报告 学号:姓名:专业:班级:第10周

简介 #in elude vstri ng> #in elude class pla in text { public : plai ntext(); static void createplaintext( unsigned char a[]); 实验内容(算法、 程 序、 步骤 和方 法)

static void SubBytes( unsigned char p[16]); static void inSubBytes( unsigned char p[16]); static void ShiftRows( unsigned char e[]); static void inShiftRows( unsigned char e[]); static void MatrixToByte( unsigned char e[]); static void inMatrixToByte( unsigned char e[]); static unsigned char FFmul( unsigned char a, unsigned char b); static void KeyAdding( unsigned char state[16], unsigned char k[][4]); static void KeyExpansion( unsigned char* key, unsigned char w[][4][4]); ~plai ntext(); private : }; #in elude "" using namespacestd; static unsigned char sBox[] = {}; /定义加密S盒/ unsigned char insBox[256] ={}; //定义解密S盒 pla in text ::plai ntext() { unsigned int p[16]; for (int j = 0; j<200; j++) { p[i] = a[i]; a[i] = a[i + 16]; } void pla in text ::createpla in text( un sig ned char a[]) // 仓U建明文 int i = 0; if ( a[j] == 0) for (; i<16; i++)

相关文档
相关文档 最新文档