北京工业大学算法分析与设计一纸开卷资料.docVIP

北京工业大学算法分析与设计一纸开卷资料.doc

  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文档。上传文档
查看更多
北京工业大学算法分析与设计一纸开卷资料

如果f(n)=O(s(n))并且g(n)=O(r(n)),则f(n)+g(n)=O(s(n)+r(n)) 如果f(n)=O(s(n))并且g(n)=O(r(n)),则f(n)*g(n)=O(s(n)*r(n)) 根据符号O的定义,存在正常数C1,C2和自然数N1,N2,使得对所有的n= N1,f(n)=C1s(n);对所有的n= N2,g(n) =C2r(n)所以 f(n)+ g(n) = C1s(n)+ C2r(n),f(n)*g(n)= C1C2s(n)r(n);令 C3=max(C1,C2),C4=C1*C2; 则:f(n)+ g(n) = C3[s(n)+ r(n)]=O(s(n)+ r(n)) f(n)*g(n) = C4*s(n)*r(n)=O(s(n)* r(n)) 试说明为什么“在现代计算机上运行指数(如2n)时间算法是不可能的,要想在顺序处理机上扩大所处理问题的规模,有效的途径是降低算法计算复杂度的数量级,而不是提高计算机的速度”。 一个计算时间为Ο(1)的算法,它的基本运算执行的次数是固定的,因此,总的时间由一个常数(即零次多项式)来限界,而一个时间为Ο(n2)的算法则由一个二次多项式来限界。当数据集的规模(即n的取值)很大时,要在现代计算机上运行具有比O(nlog2 n)复杂度还高的算法是很困难的,尤其是指数时间算法,它只有在在n值取得非常小的时候才实用。例:假设解决同一个问题的两个算法,它们都有n个输入,计算时间的数量级分别是n^2和nlogn.则N=1024,分别需要1048576和10240次运算。N=2048:分别需要4194304和22528次运算。由此,在n加倍的情况下,一个O(n^2)的算法计算时间增长4倍,而一个O(nlogn)算法则只用两倍多一点的时间。所以数量级的大小对算法的有效性有决定性的影响。尽管通过提高计算机的速度之前快,甚至,但指数规模的n足够大,n增加的瞬间化为乌有 算法是一种描述程序行为的语言,NP完全问题?请简述研究NP完全问题的意义; (1)NP即是多项式复杂程度的非确定性问题。 而如果任何一个NP问题都能通过一个多项式时间算法转换为某个NP问题,那么这个NP问题就称为NP完全问题。如果一个NP完全问题能在多项式时间内得到解决,那么NP中的每一个问题都可以在多项式时间内解决。 (2)它可以在多项式时间内求解,当且仅当所有的其他的NP-完全问题也可以在多项式时间内求解。这样一来,只要我们找到一个NPC问题的多项式解,所有的NP问题都可以多项式时间内划归成这个NPC问题,再用多项式时间解决,这样NP就等于P了.知道一个问题是NP完全的就给我们提供了有价值的信息,告诉我们采用什么样的途径可以是最富有成效的。简言之,NP完全性理论的初步应用是帮助算法设计人员找到最有可能得到有用的算法的努力方向 3、“当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质”。问题的最优子结构性质是该问题可用动态规划算法求解的基本要素,试简要阐述“论证某一问题的最优子结构性质”时的一般方法; 矩阵连乘计算次序问题的最优解包含着其子问题的最优解。这种性质称为最优子结构性质。首先假设由问题的最优解导出的子问题的解不是最优的,然后再设法说明在这个假设下可构造出比原问题最优解更好的解,从而导致矛盾。利用问题的最优子结构性质,以自底向上的方式递归地从子问题的最优解逐步构造出整个问题的最优解。最优子结构是问题能用动态规划算法求解的前提。 1、棋盘覆盖问题 2、使用一个快速排序的迭代模型可以使原递归算法所需的栈空间总量减至O(logn)。试设计这一迭代模型(算法)。(18分) 3、社会名流问题 给定一个n×n邻接矩阵,确定是否存在一个i,其满足在第i列所有项(除了第ii项)都为1,并且第i行所有项(除了第ii项)都为0。大致的算法思路:随便取一个非对角线元素比如Array[i][j],如果Array[i][j]=0成立,则j不是社会名流,于是删去第j行和第j列。同样,如果Array[i][j]=1成立,则删去第i行和第i列;总之,无论对应项取何值,都可以删去一行和一列,因此整个操作只耗费O(n)的时间。重复此操作直至剩下最后一个元素。最后,检验该元素是否为社会名流即可。如果该元素不是,则该群人中不存在社会名流。 设N为B型机上钟能的问题的规模N)=3*2^N=3*2^(n+6) 则:N=n+6 4. 试说明如何修改快速排序算法,使它在最坏情况下的计算时间为O(nlgn)。 可以通过减少递归栈的使用进行优化,快速排序的实现需要消耗递归栈的空间,而大多数情况下都会通过使用系统递归栈来完成递归求解。对系统栈的频繁存取会影响到排序的效率。在数据量较大时,快速排序的复杂度的复杂度有n

文档评论(0)

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

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

1亿VIP精品文档

相关文档