算法设计与分析实验报告【荐】.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析实验报告【荐】.doc

算法设计与分析 实验报告 教师: 学号: 姓名: 实验一:串匹配问题 实验目的: (1) 深刻理解并掌握蛮力法的设计思想; (2) 提高应用蛮力法设计算法的技能; (3) 理解这样一个观点: 用蛮力法设计的算法, 一般来说, 经过适度的努力后, 都可以对算法的第一个版本进行一定程度的改良, 改进其时间性能。 实验要求: ( 1) 实现 BF 算法; (2 ) 实现 BF 算法的改进算法: KMP 算法和 BM 算法; (3 ) 对上述 3 个算法进行时间复杂性分析, 并设计实验程序验证分析结果。 #include stdio.h #include conio.h #include iostream //BF算法 int BF(char s[],char t[]) { int i; int a; int b; int m,n; m=strlen(s); //主串长度 n=strlen(t); //子串长度 printf(\n*****BF*****算法\n); for(i=0;im;i++) { b=0; a=i; while(s[a]==t[b]b!=n) { a++; b++; } if(b==n) { printf(查找成功!!\n\n); return 0; } } printf(找不到%s\n\n,t); return 0; } //前缀函数值,用于KMP算法 int GETNEXT(char t[],int b) { int NEXT[10]; NEXT[0]=-1; int j,k; j=0; k=-1; while(jstrlen(t)) { if ((k==-1)||(t[j]==t[k])) { j++; k++; NEXT[j]=k; } else k=NEXT[k]; } b=NEXT[b]; return b; } //KMP算法 int KMP(char s[],char t[]) { int a=0; int b=0; int m,n; m=strlen(s); //主串长度 n=strlen(t); //子串长度 printf(\n*****KMP算法*****\n); while(a=m-n) { while(s[a]==t[b]b!=n) { a++; b++; } if(b==n) { printf(查找成功!!\n\n); return 0; } b=GETNEXT(t,b); a=a-b; if(b==-1) b++; } printf(找不到%s\n\n,t); return 0; } //滑动距离函数,用于BM算法 int DIST(char t[],char c) { int i=0,x=1; int n; n=strlen(t); while(xi!=n-1) { if(t[i]==c) x=0; else i++; } if(i!=n-1) n=n-1-i; return n; } //BM算法 结果分析与体会:?glibc里的strstr函数用的是brute-force(naive)算法,它与其它算法的区别是strstr不对pattern(needle)进行预处理,所以用起来很方便。理论复杂度O (mn),?实际上,平均复杂度为O(n),?大部分情况下高度优化的算法性能要优于基于自动机的匹配算法,BF有一个重要性质是事先不用知道串的长度,而基于跳跃的算法是需要用字符串长度来判断结束位置的。 实验二:最近对问题 实验目的:( 1) 进一步掌握递归算法的设计思想以及递归程序的调试技术; (2 ) 理解这样一个观点: 分治与递归经常同时应用在算法设计之中。 实验要求:( 1) 分别用蛮力法和分治法求解最近对问题; (2 ) 分析算法的时间性能, 设计实验程序验证分析结论。 ClosestPair1.java????????

文档评论(0)

ucut + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档