注册
登录
会员
搜索
标签
设施
帮助
振动论坛
»
算法及编程语言
» [转贴]算法的概念
搜索
‹‹ 上一主题
|
下一主题 ››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
[其他相关]
[转贴]算法的概念
本主题由 风花雪月 于 2008-1-24 15:06 推荐主题
风花雪月
教研室主任
个人空间
发短消息
加为好友
当前离线
楼主
大
中
小
发表于 2007-4-28 06:38
只看该作者
[转贴]算法的概念
3.2.1算法的概念
3.2.1.1 什么叫算法
算法
(Algorithm)是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。算法+数据结构=程序,求解一个给定的可计算或可解的问题,不同的人可以编写出不同的程序,来解决同一个问题,这里存在两个问题:一是与计算方法密切相关的算法问题;二是程序设计的技术问题。算法和程序之间存在密切的关系。
算法是一组有穷的规则,它们规定了解决某一特定类型问题的一系列运算,是对解题方案的准确与完整的描述。制定一个算法,一般要经过设计、确认、分析、编码、测试、调试、计时等阶段。
对算法的学习包括五个方面的内容:①设计算法。算法设计工作是不可能完全自动化的,应学习了解已经被实践证明是有用的一些基本的算法设计方法,这些基本的设计方法不仅适用于计算机科学,而且适用于电气工程、运筹学等领域;②表示算法。描述算法的方法有多种形式,例如自然语言和算法语言,各自有适用的环境和特点;③确认算法。算法确认的目的是使人们确信这一算法能够正确无误地工作,即该算法具有可计算性。正确的算法用计算机算法语言描述,构成计算机程序,计算机程序在计算机上运行,得到算法运算的结果;④分析算法。算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。分析算法可以预测这一算法适合在什么样的环境中有效地运行,对解决同一问题的不同算法的有效性作出比较;⑤ 验证算法。用计算机语言描述的算法是否可计算、有效合理,须对程序进行测试,测试程序的工作由调试和作时空分布图组成。
3.2.1.2算法的特性
算法的特性
包括:① 确定性。算法的每一种运算必须有确定的意义,该种运算应执行何种动作应无二义性,目的明确;② 能行性。要求算法中有待实现的运算都是基本的,每种运算至少在原理上能由人用纸和笔在有限的时间内完成;③ 输入。一个算法有0个或多个输入,在算法运算开始之前给出算法所需数据的初值,这些输入取自特定的对象集合;④ 输出。作为算法运算的结果,一个算法产生一个或多个输出,输出是同输入有某种特定关系的量;⑤ 有穷性。一个算法总是在执行了有穷步的运算后终止,即该算法是可达的。
满足前四个特性的一组规则不能称为算法,只能称为计算过程,操作系统是计算过程的一个例子,操作系统用来管理计算机资源,控制作业的运行,没有作业运行时,计算过程并不停止,而是处于等待状态。
3.2.2算法的描述
算法的描述方法
可以归纳为以下几种:
(1) 自然语言;
(2) 图形,如NS图、流程图,图的描述与算法语言的描述对应;
(3) 算法语言,即计算机语言、程序设计语言、伪代码;
(4) 形式语言,用数学的方法,可以避免自然语言的二义性。
用各种算法描述方法所描述的同一算法,该算法的功用是一样的,允许在算法的描述和实现方法上有所不同。
人们的生产活动和日常生活离不开算法,都在自觉不自觉地使用算法,例如人们到商店购买物品,会首先确定购买哪些物品,准备好所需的钱,然后确定到哪些商场选购、怎样去商场、行走的路线,若物品的质量好如何处理,对物品不满意又怎样处理,购买物品后做什么等。以上购物的算法是用自然语言描述的,也可以用其他描述方法描述该算法。
图3.3用流程图描述算法的例子,其函数为:
图3.3是用流程图图形描述算法
3.2.3算法的复杂性
算法的复杂性
是算法效率的度量,在评价算法性能时,复杂性是一个重要的依据。算法的复杂性的程度与运行该算法所需要的计算机资源的多少有关,所需要的资源越多,表明该算法的复杂性越高;所需要的资源越少,表明该算法的复杂性越低。
计算机的资源,最重要的是运算所需的时间和存储程序和数据所需的空间资源,算法的复杂性有时间复杂性和空间复杂性之分。
算法在计算机上执行运算,需要一定的存储空间存放描述算法的程序和算法所需的数据,计算机完成运算任务需要一定的时间。根据不同的算法写出的程序放在计算机上运算时,所需要的时间和空间是不同的,算法的复杂性是对算法运算所需时间和空间的一种度量。不同的计算机其运算速度相差很大,在衡量一个算法的复杂性要注意到这一点。
对于任意给定的问题,设计出复杂性尽可能低的算法是在设计算法时考虑的一个重要目标。另外,当给定的问题已有多种算法时,选择其中复杂性最低者,是在选用算法时应遵循的一个重要准则。因此,算法的复杂性分析对算法的设计或选用有着重要的指导意义和实用价值。
在讨论算法的复杂性时,有两个问题要弄清楚:
(1) 一个算法的复杂性用怎样的一个量来表达;
(2) 怎样计算一个给定算法的复杂性。
找到求解一个问题的算法后,接着就是该算法的实现,至于是否可以找到实现的方法,取决于算法的可计算性和计算的复杂性,该问题是否存在求解算法,能否提供算法所需要的时间资源和空间资源。
转自:
http://public.whut.edu.cn
搜索更多相关主题的帖子:
算法
计算机
概念
定义
Algorithm
UID
18
帖子
1284
精华
2
积分
447
威望
315 点
振动币
350557 个
管理积分
128 点
阅读权限
100
性别
男
来自
黑龙江
在线时间
327 小时
注册时间
2005-4-23
最后登录
2008-11-12
查看个人网站
查看详细资料
TOP
aaa0131106
布衣书生
个人空间
发短消息
加为好友
当前离线
沙发
大
中
小
发表于 2007-6-14 19:35
只看该作者
xie谢谢搂主
看一看,顶一下!
仰天大笑出门去,
我辈岂是蓬蒿人!
UID
55540
帖子
48
精华
0
积分
24
威望
19 点
振动币
2883 个
管理积分
0 点
阅读权限
30
性别
男
来自
山东 南京
在线时间
59 小时
注册时间
2007-1-19
最后登录
2008-12-2
查看详细资料
TOP
wanghongmao
应门书童
个人空间
发短消息
加为好友
当前离线
板凳
大
中
小
发表于 2007-11-26 11:16
只看该作者
谢谢搂主
UID
73314
帖子
19
精华
0
积分
2
威望
0 点
振动币
340 个
管理积分
0 点
阅读权限
10
性别
男
来自
厦门
在线时间
3 小时
注册时间
2007-10-17
最后登录
2008-2-15
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
家园建设
论坛公告
论坛建设
新人送积分活动
版主管理
振动基础
基础力学理论
一般力学和振动理论
数学与非线性科学
结构可靠性及优化设计
控制理论及应用
CFD专区
CFD基础理论与实践
Fluent讨论区
信号处理
振动实验与测试技术
信号处理方法
人工智能与模式识别
故障诊断及健康监测
声学分析
声学基础及噪声治理
声学分析软件
声学测量
算法编程
算法及编程语言
Matlab讨论区
Simulink仿真专区
虚拟仪器技术
其他数学软件
工程软件
Ansys讨论区
MSC系列软件专区
ABAQUS讨论区
CAD软件讨论区
其他软件及相关讨论
专题讨论
振动沙龙
振动沙龙资料
NVH及振动利用工程
科研辅助工具
科学研究方法
信息广场
信息广场
过时信息
休闲娱乐
管理专区
控制面板首页
编辑个人资料
积分交易
积分记录
公众用户组
勋章
访问推广
邀请查询
名人殿堂
鲜花鸡蛋
会员许愿
红包中心
虚拟股市
社区银行
宠物中心
宣传中心
勋章中心
基本概况
流量统计
客户软件
发帖量记录
版块排行
主题排行
发帖排行
积分排行
交易排行
在线时间
管理团队
管理统计