第二章第9题程序报告.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章第9题程序报告

算法设计与分析第二章第9题 构造Gray码算法 姓名:高煜 学号:122103111 班级:12计科2班 问题描述 Gray码又叫循环二进制码或反射二进制码,在数字系统中只能识别0和1,各种数据要转换成二进制码才能进行处理。Gray码是一个长度为2的序列。序列中无相同元素,每个元素都是长度为n位的串,相邻元素恰好只有1位不同。用分治策略设计一个算法,对任意的n构造相应的Gray码。 2.分治思想 在我们这个程序里,我们用分治法构造Gray码。分治是一种重要算法分析的方法。分治的基本思想就是我们将一个复杂的问题分解为两个或两个以上较小的问题,这些问题相互独立而且还与原问题是相同或相似的。递归的解这些小的问题,然后将各个小的问题的解合并或简单运算得到原来复杂的问题的解。 3.公式 当n=1 时的GRAY码为:0 ,1当=2 时的GRAY码为:00,01,11,10当=3时的GRAY码为:000,001,011,010,110,111,101,100;从上面的简单情形可以看出G(n)的构造规律:G(n+1)=0G(n)1G1(n)其中G1(n)的第一个n位串相同,可用数学归纳法证明G(n)的上述构造规律。Gray码,除最高位以外,虚线①的上下两侧对称的,对称的两组码恰好是宽度为3的Gray码,虚线①上方最高位全为0,下方全是1;对于宽度为3的Gray码,除最高位以外,虚线②上下两侧也是对称的,对称两组码恰好是宽度为2的Gray码,并且虚线②上方最高位全为0,下方全为1。同理,规律对于任意宽度的Gray码都适用。总结出Gray码的构造规律:即宽度为n的Gray码,共有2n个元素,前2n-1个元素可由宽度为n-1的Gray码和第n位的0构成,后2n-1元素可由之前经过逆序的(n-1)位的Gray码和第n位的组成的。 4.关键代码 void Gray( int a, int b, int ** sz) { if(a==1) return; for(int i = 0; i a/2 ; i++) { sz [i][b-1] = 0;//上半部分赋值为0 sz [a-i-1][b-1]=1; //下半部分赋值为1 } Gray(a/2,b-1,sz);//递归调用,生成列数为b-1的Gray码,填写高的半部分 for(int k = a/2; ka; k++)//将(n-1)位的Gray码逆序后,填入目标码字的低的半部分 for( int j =0; jb-1; j++) sz [k][j]= sz [a-k-1][j]; } 5.调试遇到的问题 输入宽度较小时,可以很快的出结果,但输入到20多时,计算量就已经相当大了,以至于我输入到23的时候,我的笔记本电脑直接崩溃了。其他的也没什么问题就是把一些有关的量忘了定义,总之,如果把递归规律找出来,其实程序很好写的。 6.结果分析 输入的宽度n较小时,可以很快的出结果,但输入到20多时,计算量就已经相当大了,耗费的时间也多了,以至于我输入到23的时候,我的笔记本电脑直接崩溃了。分析发现Gray码具有对称性,算法的时间复杂度是O(n ·2n)。 我觉得算法有待提高。

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档