算法设计及基本方法实例.docVIP

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

算法设计的基本方法算法设计的基本方法 为用计算机解决实际问题而设计的算法,即是计算机算法。 通常的算法设计有如下几种: (1)列举法 列举法的基本思想是,根据提出的问题,列举出所有可能的情况,并用问题中给定的条件检验哪些是满足条件的,哪些是不满足条件的。列举法通常用于解决“是否存在”或“有哪些可能”等问题。 例如,我国古代的趣味数学题:“百钱买百鸡”、“鸡兔同笼”等,均可采用列举法进行解决。 公鸡3元每只,母鸡5元每只,小鸡1元3只,一百元钱买一百只鸡。请求出公鸡,母鸡和小鸡的数目。 编程简析 我们做最极端的假设,公鸡可能是0-100,母鸡也可能是0-100,小鸡还可能是0-100,将这三种情况用循环套起来,那就是1000000种情况。这就是列举法。为了将题目再简化一下,我们还可以对上述题目进行一下优化处理: 假设公鸡数为x,母鸡数为y,则小鸡数是100-x-y,也就有了下面的方程式: 3*x+5*y+(100-x-y)/3=100 从这个方程式中,我们不难看出大体的情况:公鸡最多有33只,最少是没有,即x的范围是0-33;母鸡最多20只,最少0只,即母鸡的范围是0-20;有了公鸡母鸡,小鸡数自然就是100-x-y只。可能的方案一共有34*21种,在这么多的方案中,可能有一种或几种正好符合相等的条件。 电脑怎样工作呢?计算机事实上就是将上述34*21种方案全部过滤一遍,找出符合百钱买百鸡条件的(也即上式),只要符合,这就是我们要的输出结果。 这就是列举法,将可能的情况一网打尽;不过在应用过程中,我们最好还是做些优化,不然,要浪费好多没必要浪费的时间。 使用列举法时,要对问题进行详细的分析,将与问题有关的知识条理化、完备化、系统化,从中找出规律。(2)归纳法 归纳法的基本思想是,通过列举少量的特殊情况,经过分析,最后找出一般的关系。归纳是一种抽象,即从特殊现象中找出一般规律。但由于在归纳法中不可能对所有的情况进行列举,因此,该方法得到的结论只是一种猜测,还需要进行证明。例如,使用归纳法在如下特殊的命题中: 冰是冷的。 在击打球杆的时候弹子球移动。 推断出普遍的命题如: 所有冰都是冷的,或: 在太阳下没有冰。 对于所有动作,都有相同和相反的重做动作。 人们在归纳时往往加入自己的想法,而这恰恰帮助了人们的记忆。 物理学研究方法之一。通过样本信息来推断总体信息的技术。要做出正确的归纳,就要从总体中选出的样本,这个样本必须足够大而且具有代表性。 比如在我们买葡萄的时候就用了归纳法,我们往往先尝一尝,如果都很甜,就归纳出所有的葡萄都很甜的,就放心的买上一大串。 归纳推理也可称为归纳方法.完全归纳推理,也叫完全归纳法.不完全归纳推理,也叫不完全归纳法.归纳方法,还包括提高归纳前提对结论确证度的逻辑方法,即求因果五法,求概率方法,统计方法,收集和整理经验材料的方法等. (3)递推 递推,即是从已知的初始条件出发,逐次推出所要求的各个中间环节和最后结果。其中初始条件或问题本身已经给定,或是通过对问题的分析与化简而确定。 递推的本质也是一种归纳,递推关系式通常是归纳的结果。 例如,裴波那契数列,是采用递推的方法解决问题的。猴子分食桃子 五猴子採得一堆桃子,猴子彼此約定隔天早起後再分食。不過,就在半夜裏,一隻猴子偷偷起來,把桃子均分成五堆後,發現還多一個,它吃掉這桃子,並拿走了其中一堆。第二隻猴子醒來,又把桃子均分成五堆後,還是多了一個,它也吃掉這個桃子,並拿走了其中一堆。第三隻,第四隻,第五隻猴子都依次如此分食桃子。那麼桃子數最少應該有個呢?我們列方程求解:設原有桃子x個,第一隻猴子吃掉1個桃子,再拿走餘下桃子的五分之一,剩下桃子 第二隻猴子吃掉1個桃子,再拿走餘下桃子的五分之一,剩下桃子 第三隻猴子吃掉1個桃子,再拿走餘下桃子的五分之一,剩下桃子 第三隻猴子吃掉1個桃子,再拿走餘下桃子的五分之一,剩下桃子 第四隻猴子吃掉1個桃子,再拿走餘下桃子的五分之一,剩下桃子 最後一隻猴子也吃掉1個桃子,再拿走餘下桃子的五分之一﹔假設第五隻猴子拿走的桃子數是y個,則按題意可以列式得 經過化簡、整理,得? 256x-3125y=2101? ,其中 12y+8 是整數,所以 是整數。因為53與256互質,因此 y=255 時可滿足要求。這時 x = 3121。原來問題有無窮多解,上面求出的只是滿足條件的最小正整數解,也就是說最少有桃子3121個。以上是解不定元,此外,有一個巧思妙想的解法,:假若我們借來4個桃子,這樣桃子數就可以連續5次平均分成5堆了,所以桃子數最少應該是55-4=3121(個)。 (4)递归 在解决一些复杂问题时,为了降低问题的复杂程序,通常是将问题逐层分解,最后归结为一些最简单的问题。这种将问题逐层分解的过程,并没有对问题进行求解,而只是

文档评论(0)

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

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

1亿VIP精品文档

相关文档