-实验1分治法
一、实验目的
1.理解分治法的方法;
2. 掌握使用分治法解决一般问题的步骤;
3. 掌握分治算法求解数组的最大值和最小值的方法。
二、实验原理
在一个给定数组中查找最大值和最小值是一类常见的问题,也是解决其他一些算法的基础。
假设给定数组为a,数组中含有n个元素,一般的算法是在数组中进行直接
循环的次数在算法第2行给出,为(n-2)+1=n-1次,因此,算法元素比较总次数为2(n-1)次。
现在采用分治的思想,假设数组的长度为2的整数幂,将数组分割成两半,分别为a[0…(n/2)-1]和a[n/2…n-1],在每一半中分别查找最大值和最小值,并返回这两个最小值中的最小值以及两个最大值中的最大值。
假设给定数组为a,数组的下标上界和下界分别为low和high,则其算法伪
接比较数组的两个元素,选出最大值和最小值,此为函数的递归终止条件;代码第7行和第8行是两个递归调用,分别在数组的下标范围[low,mid]和
[mid+1,high]查找最小值和最大值,第9行比较两个最大值取其中较大者,第10行比较两个最小值取较大者。
代码的第2、9和10行涉及到元素的比较,第7、8行由于递归也产生元素比较,因此令算法总的元素比较次数为C(n),则有
???>+==2
2)2/(221)(n n C n n C 若若 对递推式进行求解
2
2/3 2
2)2/( 2)2(2 2
2...22)2/(2 ...
2
48)8/(824)2)8/(2(4 2
4)4/(42)2)4/(2(22)2/(2)(1
1122111-=-+=+=+++++==+++=+++=++=++=+=∑-=-----n n C n C n C n C n C n C n C n C k k j j
k k k k k 得到minmax 算法的元素比较总次数为3n/2-2,优于直接比较的性能。
三、实验内容及要求
1. 编写程序使用分治算法MINMAX 求解数组的最小值和最大值,并用实际数组对算法进行测试。
2. 要求算法中元素比较的次数为3n/2-2,在程序中元素比较的地方进行记录,并在程序末尾输出数组最大值和最小值以及元素比较次数。
四、实验步骤
1. 定义结构体类型或类,用以在函数的返回值同时返回数组的最大值和最小值。
3. 在main函数中使用给定数组{21,25,49,16,25,6,78,1}测试MINMAX函数
并输出元素比较次数,效果如下图所示。
五、思考和作业
1. 试修改程序MINMAX,使得当数组长度n不是2的整数幂也能运行,并分
析修改后算法的元素比较次数。
2. 使用分治算法解决最大子数组和问题,问题描述如下:
给定一个整数序列S,找出S中的连续子序列,使得该子序列和最大,要求
算法时间复杂性为Θ(nlogn)。例如:-2, 11, -4, 13, -5, -2; 结果为20: (11,
-4, 13)。
提示:
假定要寻找子数组S[low…high]的最大子数组,使用分治法将数组分解成
两个尽可能想相等的子数组,找到子数组中点mid,则S[low…high]中任何连续
数组S[i…j]必然是一下三种情况之一:
完全位于S[low…mid]中,low≤i≤j≤mid
完全位于S[mid+1…high]中,mid
跨越中点mid,low≤i≤mid 因此,S[low…high]的一个最大子数组所处的位置必然是三种情况之一。可 以通过递归方法求解A[low…mid]和A[mid+1…high]的最大子数组,则剩下的问 Part 1Part 2 the sub with largest sum may be in: Part 1Part 2 or: Part 1Part 2 recursion The largest is the result DES 差分分析实验报告 四大队四队五班 刘杰 一、实验目的 差分密码分析是一种选择明文攻击,是现代分组密码分析的重要方法之一,也是理论分析密码算法和算法抗攻击测试的重要依据之一。本实验通过3轮DES 简化算法的差分分析来达到加深学员对差分分析方法原理的理解和利用该原理分析实际问题的操作能力。 二、实验内容 (1)3轮DES 简化算法的差分分析; (2)通过三组明密文对(每组两个相关明文和相应密文),利用差分原理提取密钥。 明 文 密 文 748502CD38451097 03C70306D8A09F10 3874756438451097 78560A0960E6D4CB 486911026ACDFF31 45FA285BE5ADC730 375BD31F6ACDFF31 134F7915AC253457 357418DA013FEC86 D8A31B2F28BBC5CF 12549847013FEC86 0F317AC2B23CB944 三、实验原理 设DES 两个明密文对:=00m L R ***=00m L R =33c L R *** =33c L R 计算过程: (,)(,)(,)(,)=⊕=⊕=⊕⊕322312300123R L f R k R f R k L f R k f R k (,)(,)****=⊕⊕300123R L f R k f R k 令:*'=⊕000L L L (,)(,)(,)(* **''=⊕=⊕⊕⊕⊕333001012323R R R L f R k f R k f R k f R k 观察得:在本次实验原始数据中,明文对*=00R R ,即* '=⊕=00000000000R R R 则(,)(,)** ''=⊕=⊕⊕33302323R R R L f R k f R k 同时有:=00m L R ***=00m L R =23R L ** =23R L 则可计算出:*'=⊕000L L L *'=⊕333R R R (,)(,)* ''⊕=⊕232330f R k f R k R L 则可得出: S 盒输入差:(())(())()()* *⊕⊕⊕=⊕232333E R k E R k E L E L S 盒输出差:()*-''⊕=⊕13 0D D P R L 分析过程: 令:()()*⊕=3312345678E L E L B B B B B B B B ()-''⊕=13 012345678P R L C C C C C C C C ()=312345678E L A A A A A A A A =312345678 k J J J J J J J J ()⊕=3312345678E L k X X X X X X X X *()⊕=3312345678E L k Y Y Y Y Y Y Y Y 基本思路:(分别计算12345678J J J J J J J J ) {|,()()∈=⊕⊕=⊕=i i i i i i i J T e s t x A x y B S x S y C ,,,,,,,=12345678i 对于本次实验的3个具有明文差(*,0)的明密文对,则可构造上面的3个 Test 集合,显然 ()()( )∈12 i i i i J Test Test Test t ,,,,,,,=12345678i 一种确定Ji 的直接方法: 1.建立26=64长度的数组J[64]={0}; 2.对Testi(r),r = 1,2,…,t ,若a ∈Testi(r),则 J[a] = J[a] + 1。 3.若J[b] =3,则6比特串b 就是可能的密钥比特 Ji 。 四、实验环境 Microsoft visual c++ 五、实验步骤 (1)计算简化算法第3轮S 盒输入差 1.正治 是逆其证候性质而治的一种常用治疗法则,又称逆治。逆,是指采用方药的性质与疾病的性质相反。即通过分析疾病的临床证候,辨明疾病的寒热虚实,然后分别采用“寒者热之”、“热者寒之”、“虚则补之”、“实则泻之”等不同方法去治疗。 正治法适用于疾病的征象与本质相一致的病证。由于临床上大多数疾病的征象与其性质是相符的,如寒病即见寒象,热病即见热象,虚病即见虚象,实病即见实象等等,所以,正治法是临床上最常用的一种治疗方法。 (1)寒者热之 是指寒性病证出现寒象,用温热方药来治疗。即以热药治寒证。如表寒证用辛温解表方药,里寒证用辛热温里的方药等。 (2)热者寒之 是指热性病证出现热象,用寒凉方药来治疗。即以寒药治热证。如表热证用辛凉解表方药,里热证用苦寒清里的方药等。 (3)虚则补之 是指虚损性病证出现虚象,用具有补益作用的方药来治疗。即以补益药治虚证。如阳虚用温阳的方药,阴虚用滋阴方药,气虚用益气的方药,血虚用补血的方药等。 (4)实则泻之 是指实性病证出现实象,用攻逐邪实的方药来治疗。即以攻邪泻实药治实证。如食滞用消食导滞的方药,水饮内停用逐水的方药,瘀血用活血化瘀的方药。湿盛用祛湿的方药等。 2.反治 是顺从疾病假象而治的一种治疗方法,又称从治。从,是指采用方药的性质顺从疾病的假象,与疾病的假象相一致而言,究其实质,还是在治病求本法则指导下,针对疾病本质而进行治疗的方法,故其实质上仍是“治病求本”。主要有“热因热用”、“寒因寒用”、“塞因塞用”、“通因通用”等。 (1)热因热用 是以热治热,即用热性药物治疗具有假热症状的病证。适用于阴寒内盛,格阳于外,反见热象的真寒假热证。例如《伤寒论》“少阴病下利清谷,里寒外热,手足厥逆,脉微欲绝,身反不恶寒,其人面色赤……通脉四逆扬主之”,就是热因热用的范例。由于阳虚寒盛是其本质,故仍用温热药治其真寒,而假热就自然会消失。 (2)寒因寒用 是以寒治寒,即用寒性药物治疗具有假寒症状的病证。适用于里热盛极,阳盛格阴,反见寒象的真热假寒证。例如热厥证,因阳盛于内,格阴于外,出现四肢厥冷,脉沉,很似寒证,但有壮热心烦,口渴而喜冷饮,小便短赤等,因为热盛是其本质,须用寒凉药治其真热,而假象方能消失。这就叫“寒因寒用”。 (3)塞因塞用 数值实验报告I 实验名称Poisson方程九点差分格式实验时间2016年 4 月 15 日姓名米瑞琪班级信息1303学号04成绩 一、实验目的,内容 1、理解Poisson方程九点差分格式的构造原理; 2、理解因为网格点的不同排序方式造成的系数矩阵格式的差异; 3、学会利用matlab的spdiags(),kron()函数生成系数矩阵; 二、算法描述 针对一个Poisson方程问题: 在Poisson方程五点差分格式的基础上,采用Taylor展开分析五点差分算子的截断误差,可以得到: 为了提高算子截断误差的精度,在(1)式中配凑出了差分算子的形式,将原Poisson方程代入(1)式有: 考虑,有: 将(3)代回(2)可得 得到Poisson方程的九点差分格式: 在计算机上实现(4)式,需要在五点差分格式 的基础上在等式两端分别增加一部分,将等式左侧新增的部分写成紧凑格式,有: 对于该矩阵,可以看成是两个矩阵的组合: 以及 则生成这两个矩阵可以采用Kroncker生成,方法类似于五点差分格式。 对于右端添加的关于f(x,y)的二阶导数,可以采用中心差分格式进行近似代替,即: 写成相应的紧凑格式有: 该式中的矩阵又可以分解为两个矩阵的和: %计算误差 u_real=@(x,y)exp(pi*(x+y))*sin(pi*x).*sin(pi*y); for i=1:N1-1 u_m((i-1)*(N2-1)+1:i*(N2-1))=u_real(x(i),y); end u_v=u_m'; err_d=max(abs(u_d-u_v)); sol=reshape(u_d,N2-1,N1-1); mesh(X,Y,sol) 四. 数值结果 针对课本P93给出的问题,分别采用步长,将计算出的误差列表如下: 步长五点差分格式误差九点差分格式误差 可见采用九点差分格式可以进一步缩小误差,达到更高阶的精度。 五. 计算中出现的问题,解决方法及体会 在生成九点差分格式的时候,等号右端涉及到了对f的二阶偏导,我最初利用符号函数定义了f,随后求出其二阶偏导(仍然是符号函数)之后带入网格点,求f二阶偏导的精确解,但是代入过程相当繁琐,运行速度非常慢,最终我改变策略,选用f关于x,y的二阶中心差分格式替代精确值,最终得到了相对满意的结果。 教 师 评 语 指导教师:年月日 实验报告分治与递归 中国矿业大学计算机科学与技术学院孟靖宇 一、实验目的与要求 1、熟悉C/C++语言的集成开发环境; 2、通过本实验加深对递归过程的理解 二、实验内容: 掌握递归算法的概念和基本思想,分析并掌握“整数划分”问题的递归算法。 三、实验题 任意输入一个整数,输出结果能够用递归方法实现整数的划分。 四、算法思想 对于数据n,递归计算最大加数等于x 的划分个数+最大加数不大于x-1的划分个数。最大加数x 从n 开始,逐步变小为n-1, (1) 考虑增加一个自变量:对于数据n,最大加数n1不大于m 的划分个数记作),(m n q 。则有: ???????>>=<==-+--+=1 1,1),()1,()1,(1),(1),(m n m n m n m n m m n q m n q n n q n n q m n q 五、代码实现 #include "stdafx.h" #include return 0; } int q(intn,int m){ if((n<1)||(m<1)) return 0; if((n==1)||(m==1)) return 1; if(n 工程电磁场 实验报告 ——有限差分法 用超松弛迭代法求解 接地金属槽内电位的分布 一、实验要求 按对称场差分格式求解电位的分布 已知: 给定边值:如图1-7示 图1-7接地金属槽内半场域的网格 给定初值)()(.1j 40 100 1j p 1 2j i -= --= ??? 误范围差: 510-=ε 计算:迭代次数N ,j i ,?,将计算结果保存到文件中 二、实验思想 有限差分法 有限差分法(Finite Differential Method )是基于差分原理的一种数值计算法。其基本思想:将场域离散为许多小网格,应用差分原理,将求解连续函数?的泊松方程的问题转换为求解网格节点上? =?= V 100 ? 0 =?0 =? 的差分方程组的问题。 泊松方程的五点差分格式 )(4 1 4243210204321Fh Fh -+++=?=-+++?????????? 当场域中,0=ρ得到拉普拉斯方程的五点差分格式 )(4 1 044321004321??????????+++=?=-+++ 差分方程组的求解方法(1) 高斯——赛德尔迭代法 ][)(,)(,)(,)(,)(,2 k 1j i k j 1i 1k 1j i 1k j 1i 1k j i Fh 4 1 -+++=+++-+-+????? (1-14) 式中:??????=??????=,2,1,0,2,1,k j i , ? 迭代顺序可按先行后列,或先列后行进行。 ? 迭代过程遇到边界节点时,代入边界值或边界差分 格式,直到所有节点电位满足ε??<-+)(,)(,k j i l k j i 为止。 (2)超松弛迭代法 ][) (,)(,)(,)(,)(,)(,)(,k j i 2k 1j i k j 1i 1k 1j i 1k j 1i k j i 1k j i 4Fh 4 ?????α??--++++=+++-+-+ (1-15) 式中:α——加速收敛因子)21(<<α 可见:迭代收敛的速度与α有明显关系 三、程序源代码 #include三轮DES差分分析实验报告-刘杰
中医理论中医基础知识正治与反治
Poisson方程九点差分格式_米瑞琪
实验报告 分治与递归
有限差分法实验报告
_实验1分治法