- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法分析与设计
学习总结
题目: 算法分析与设计学习总结
学 院 信息科学与工程学院 专 业 2013 级计算机应用技术届 次
学生姓名
学 号 2013110657
二○一三年一月十五日
算法分析与设计学习总结
本学期通过学习算法分析与设计课程, 了解到: 算法是一系列解决问题的清晰指令, 代表着用系统的方法描述解决问题的策略机制。 算法能够对一定规范的输入, 在有限时间内获得所要求的输出。 如果一个算法有缺陷, 或不适合某个问题, 执行这个算法将不会解决这个 问题。 不同的算法可能用不同的时间、 空间或效率来完成同样的任务。 一个算法的优劣可以 用空间复杂性和时间复杂度来衡量。 算法可以使用自然语言、 伪代码、 流程图等多种不同的方法来描述。 计算机系统中的操作系统、 语言编译系统、 数据库管理系统以及各种各样的计 算机应用系统中的软件, 都必须使用具体的算法来实现。 算法设计与分析是计算机科学与技 术的一个核心问题。
设计的算法要具有以下的特征才能有效的完成设计要求,算法的特征有: (1)有穷性。算法在执行有限步后必须终止。 ( 2)确定性。算法的每一个步骤必须有确切的定义。 ( 3)输入。一个算法有 0 个或多个输入,作为算法开始执行前的初始值,或初始状态。 ( 4)输出。一个算法有一个或多个输出, 以反映对输入数据加工后的结果。 没有输出的算法是毫无意义 的。( 5)可行性。在有限时间内完成计算过程。
算法设计的整个过程, 可以包含对问题需求的说明、 数学模型的拟制、 算法的详细设计、算法的正确性验证、 算法的实现、算法分析、 程序测试和文档资料的编制。 算法可大致分为基本算法、数据结构的算法、数论与 代数算法、计算几何的算法、图论的算法、动态规划
以及数值分析、加密算法、排序算法、检索算法和并行算法。
经典的算法主要有:
1、 穷举搜索法
穷举搜索法是对可能是解的众多候选解按某种顺序进行逐一枚举和检验, bing 从中找出那些符合要求的候选解作为问题的解。
穷举算法特点是算法简单, 但运行时所花费的时间量大。 有些问题所列举书来的情况数 目会大得惊人, 就是用高速计算机运行, 其等待运行结果的时间也将使人无法忍受。 我们在用穷举算法解决问题是, 应尽可能将明显不符合条件的情况排除在外, 以尽快取得问题的解。
2、 迭代算法
迭代法是数值分析中通过从一个初始估计出发寻找一系列近似解来解决问题 (一般是解方程或方程组) 的过程, 为实现这一过程所使用的方法统称为迭代法。 迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为 f(x)=0, 用某种数学方法导出等价的形式x=g(x), 然后按以下步骤执行:
(1)选一个方程的近似根,赋给变量 x 0。
(2) 将 x0 的值保存于变量 x 1,然后计算 g(x 1),并将结果存于变量 x 0。
当 x0 与 x 1 的差的绝对值还小于指定的精度要求时,重复步骤( 2)的计算。
若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的 x 0 就认为是方程的根。
3、 递推算法
递推算法是利用问题本身所具有的一种递推关系求问题解的一种方法。 它把问题分成若干步,找出相邻几步的关系,从而达到目的。
4、 递归算法
递归算法是一种直接或间接的调用自身的算法。
能采用递归描述的算法通常有这样的特征: 为求解规模为 n 的问题, 设法将它分解成规模较小的问题, 然后从这些小问题的解方便地构造出大问题的解, 并且这些规模较小的问题也能采用同样的分解和综合方法, 分解成规模更小的问题, 并从这些更小问题的解构造出规
模较大问题的解。特别的,当规模 n=0 或 1 时,能直接得解。递归算法解决问题的特点有:
( 1) 递归就是在过程或函数里调用自身
( 2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口
( 3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低
( 4) 在递归调用的过程中系统为每一层的返回点、局部变量等开辟堆栈来存储。
举例如下:
Fibonacci 数列
int fib[50]; //采用数组保存中间结果void fibonacci(int n)
{
fib[0] = 1;
fib[1] = 1;
for (int i=2; i=n; i++)
fib[i] = fib[i-1]+fib[i-2];
}
5、 分治算法
分治算法是把一个复杂的问题分成两个或更多的相同或相似的子问题, 再把子问题分成更小的子问题,直到最后子问题可以简单地直接求解,原问题的解即子问题解的合并。
如果原问题可分割成 k 个子问题, 且这些子问题都可解, 并可利用这些子问题的解求出原问题的
您可能关注的文档
最近下载
- 教你如何破解软件OD破解软件OD使用教程.doc VIP
- 施工重大危险源辨识与防控措施月报表.pdf VIP
- 人教版(部编版)小学语文五年级上册 圆明园的毁灭第二课时 名师教学PPT课件.pptx VIP
- 一体机-柯尼卡美能达-bizhubC220说明书.pdf VIP
- BS EN 60079-32-2-2015 国外国际规范.pdf VIP
- 急诊科患者转运途中突然病情变化应急预案.pptx VIP
- G30连云港至霍尔果斯高速景家口至清水驿段扩容改造报告书.pdf VIP
- 股骨粗隆间骨折护理查房——护理问题及措施与健康指导.ppt VIP
- 零星工程 投标方案(技术方案).docx
- 一种比色法检测金黄色葡萄球菌活菌的Cu-MOF材料及其制备方法和应用.pdf VIP
文档评论(0)