算法想象
㈠ 什么是算法
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。
形式化算法的概念部分源自尝试解决希尔伯特提出的判定问题,并在其后尝试定义有效计算性或者有效方法中成形。这些尝试包括库尔特·哥德尔、Jacques Herbrand和斯蒂芬·科尔·克莱尼分别于1930年、1934年和1935年提出的递归函数,阿隆佐·邱奇于1936年提出的λ演算,1936年Emil Leon Post的Formulation 1和艾伦·图灵1937年提出的图灵机。即使在当前,依然常有直觉想法难以定义为形式化算法的情况。
㈡ 编程想不出算法怎么办
首先假设你是计算机专业的大学生,或准备报考计算机专业的高中生。
需要先搞清楚自己是以下哪一类症状:
1. 对于简单的数学问题(如楼主提到的找质数、算阶乘)想不出思路(想出非最优思路也算合格)。
2. 想得出数学思路,但是不会转化为代码(代码冗长也算合格)。
如果是第1类,那么考虑转行比较实在吧;
如果是第2类,而且题主学习编程语言已经超过1个月,那么也请考虑转行吧;
如果是第2类,但是题主初学编程语言时间<1个月,那么请继续坚持,多读现成代码,然后自己编写。如此1个月仍不乐观,参考上一条。
对于用程序来解决数学问题,一个比较有效的方式是从对数学问题的定义入手。
再强调一遍,没有思路的时候,试着从定义入手。
比如寻找质数的简单(并不高效)算法,有如下思维过程:
1. 质数的定义:只能被1和自身整除的大于1的正整数。
2. 从定义提炼判断条件:
2.a. 不能被1或自身之外的任何数整除;
2.b. 大于1的正整数。
3. 用自然语言描述算法过程:
3.a. 2是质数;
3.b. 对每一个大于2的正整数(N)进行如下验证:用2到N-1除N(实际上到N的正平方根即可),若出现整除,则此数不是质数,否则是质数。
4. 将上述步骤翻译为伪代码或代码。
5. 优化算法(如剔除不必要的除法操作)。
熟练之后对于简单问题可以在脑中进行迅速的问题定义和条件提炼,并在脑中想出模糊的算法过程,然后直接写代码。
㈢ 计算机算法的一般含义
所谓算法就是面对某些实际问题,把人想象的自然想法用计算机术语来表示出来
㈣ 有关启发式算法(Heuristic Algorithm)的一些总结
节选自维基网络:
启发法 ( heuristics ,源自古希腊语的εὑρίσκω,又译作:策略法、助发现法、启发力、捷思法)是指 依据有限的知识 (或“不完整的信息”)在短时间内找到问题解决方案的一种技术。
它是一种依据 关于系统的有限认知 和 假说 从而得到关于此系统的结论的分析行为。由此得到的解决方案有可能会偏离最佳方案。通过与最佳方案的对比,可以确保启发法的质量。
计算机科学的两大基础目标,就是 发现可证明其运行效率良好 且可 得最佳解或次佳解 的算法。
而启发式算法则 试图一次提供一个或全部目标 。例如它常能发现很不错的解, 但也没办法证明它不会得到较坏的解 ; 它通常可在合理时间解出答案,但也没办法知道它是否每次都可以这样的速度求解。
有时候人们会发现在某些特殊情况下,启发式算法会得到很坏的答案或效率极差, 然而造成那些特殊情况的数据结构,也许永远不会在现实世界出现 。
因此现实世界中启发式算法很常用来解决问题。启发式算法处理许多实际问题时通常可以在合理时间内得到不错的答案。
有一类的 通用启发式策略称为元启发式算法(metaheuristic) ,通常使用随机数搜索技巧。他们可以应用在非常广泛的问题上,但不能保证效率。
节选自网络:
启发式算法可以这样定义:一个 基于直观或经验构造 的算法, 在 可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解 , 该可行解与最优解的偏离程度一般不能被预计。 现阶段,启发式算法以仿自然体算法为主,主要有蚁群算法、模拟退火法、神经网络等。
目前比较通用的启发式算法一般有模拟退火算法(SA)、遗传算法(GA)、蚁群算法(ACO)。
模拟退火算法(Simulated Annealing, SA)的思想借鉴于固体的退火原理,当固体的温度很高的时候,内能比较大,固体的内部粒子处于快速无序运动,当温度慢慢降低的过程中,固体的内能减小,粒子的慢慢趋于有序,最终,当固体处于常温时,内能达到最小,此时,粒子最为稳定。模拟退火算法便是基于这样的原理设计而成。
求解给定函数的最小值:其中,0<=x<=100,给定任意y的值,求解x为多少的时候,F(x)最小?
遗传算法(Genetic Algorithm, GA)起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说。其本质是一种 高效、并行、全局搜索 的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并 自适应 地控制搜索过程以求得最佳解。
给定一组五个基因,每一个基因可以保存一个二进制值 0 或 1。这里的适应度是基因组中 1 的数量。如果基因组内共有五个 1,则该个体适应度达到最大值。如果基因组内没有 1,那么个体的适应度达到最小值。该遗传算法希望 最大化适应度 ,并提供适应度达到最大的个体所组成的群体。
想象有一只蚂蚁找到了食物,那么它就需要将这个食物待会蚂蚁穴。对于这只蚂蚁来说,它并不知道应该怎么回到蚂蚁穴。
这只蚂蚁有可能会随机选择一条路线,这条路可能路程比较远,但是这只蚂蚁在这条路上留下了记号(一种化学物质,信息素)。如果这只蚂蚁继续不停地搬运食物的时候,有其它许多蚂蚁一起搬运的话,它们总会有运气好的时候走到更快返回蚂蚁穴的路线。当蚂蚁选择的路线越优,相同时间内蚂蚁往返的次数就会越多,这样就在这条路上留下了更多的信息素。
这时候,蚂蚁们就会选择一些路径上信息素越浓的,这些路径就是较优的路径。当蚂蚁们不断重复这个过程,蚂蚁们就会更多地向更浓的信息素的路径上偏移,这样最终会确定一条路径,这条路径就是最优路径。
㈤ 设计算法找出三个数中的最大值
有a,b,c三个数,比较它们的大小
方法一,按顺序两两比较,取较大的
if (a > b) {
max = a;
} else {
max = b;
}
if (max < c) {
max = c;
}方法二,假设第一个是最大的,与后面两个数进行比较,将较大的值赋给max
int max = a;
if (b > max) {
max = b;
}
if (c > max) {
max = c;
}
拓展资料
1、什么是算法
算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。
mark:我们可以把所有的算法想象为一本“菜谱”,特定的算法比如菜谱中的的一道“老醋花生米”的制作流程,只要按照菜谱的要求制作老醋花生米,那么谁都可以做出一道好吃的老醋花生米。so,这个做菜的步骤就可以理解为:“解决问题的步骤”
2、算法的意义
假设计算机无限快,并且计算机存储容器是免费的,我们还需要各种乱七八糟的算法吗?如果计算机无限快,那么对于某一个问题来说,任何一个都可以解决他的正确方法都可以的!
当然,计算机可以做到很快,但是不能做到无限快,存储也可以很便宜但是不能做到免费。
那么问题就来了效率:解决同一个问题的各种不同算法的效率常常相差非常大,这种效率上的差距的影响往往比硬件和软件方面的差距还要大。
3、如何选择算法
第一首先要保证算法的正确性
一个算法对其每一个输入的实例,都能输出正确的结果并停止,则称它是正确的,我们说一个正确的算法解决了给定的计算问题。不正确的算法对于某些输入来说,可能根本不会停止,或者停止时给出的不是预期的结果。然而,与人们对不正确算法的看法想反,如果这些算法的错误率可以得到控制的话,它们有时候也是有用的。但是一般而言,我们还是仅关注正确的算法!
第二分析算法的时间复杂度
算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的好坏。
㈥ 算法为什么重要
第一,算法实际上不能孤立理解。算法必须和数据、产品一起来理解。算法的出现,实际上背后隐藏着人们阅读行为的“数据化”。我们知道,阅读是一种私密的行为,阅读的行为是人们建立精神世界的支柱。那么问题来了,我们使用产品,我们必须上传数据。当每个人的阅读都变为数据,实际上意味着每个人的爱好都能够被迅速的存储(你也可以被理解为监视)。而算法则使得机器能够最有效率的对人们的爱好和行为进行判断和分析。从用户上看,这即是方便,也是隐私的暴露。而对于商业来看,当数据和算法达到一定水平之后,判断人们的爱好和规律,进而制作广告,推出吸引人的媒介产品就成了轻而易举的事情。可以说未来的数据就是最核心,最重要的资源。
第二,算法意味着预测,意味着在人们的意识之外,发现他还没有找到的需求。这是很有意思的。它超出了人们的想象,机器比我们更加了解我们自己。从媒介产品角度来说,这非常有意思,传播的生产模式可能改变了,反馈滞后的问题也会解决。而从更长远的角度看,了解阅读数据只是第一步,下一步可能是更加深层次的爱好,甚至是更底层的行为和思考。但从这个方面来,算法不是人工智能,但他意味着人工智能。它是一个关键的入口,从这个地方开始,人们可以借助机器的力量对自己的行为进行矫正,人的感性思维能力和数据得出的科学结论开始融合了,这是人走向人机合一的第一步。但反过来,我们也需要警惕,算法的这种功能是不是掌握在社会的良性力量手里?如果资本或者其他利益集团掌握了算法和数据资源,是否会对社会控制又多一层牢不可破的枷锁,一个反乌托邦的社会可能会到来。
第三,不要忘记了算法的迭代。算法的妙处在于它是自我成长的。人的迭代是有限的,因为人的思维模式是固定的,学习能力在成年后随着时间递减。但是算法,就像Alphago的棋术,几年内就涨了几个量级。这是因为随着人们使用,给予越来越多的反馈,算法会越来越精确,发展到人们难以想象的地步,因为算法是机器学习得出的,人们也越来越不知道算法背后究竟是什么东西。可以说,这是其他任何模式都无法做到的。他不知道这背后到底是什么。
所以总的来说一句话,算法是很有意思也很有价值的一个热点。我们要答这个热点,可以用到的理论既要包括新媒体、人工智能的相关理论包括一些我们已经说到的如信息茧房、知识沟之类的问题,也要从反面用到传播政治经济学(考虑算法和数据资源的所有权)、全景监视(算法意味着对人们彻底的监视)。这样我们答题会比较有深度,也比较完整。
㈦ 如何做算法研究
一、DSP与TI
为什么提到电机控制很多人首先会联想到DSP?而谈到DSP控制总绕不过TI,首先DSP芯片是一种具有特殊结构的微处理器。该芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,提供特殊的指令,可以用来快速地实现各种数字信号处理算法。基于DSP芯片构成的控制系统事实上是一个单片系统,因此整个控制所需的各种功能都可由DSP芯片来实现。因此,可以减小目标系统的体积,减少外部元件的个数,增加系统的可靠性。优点是稳定性好、精度高、处理速度快,目前在变频器、伺服行业有大量使用。主流的DSP厂家有美国德州仪器(Texas Instruments,TI)、ADI、motorola、杰尔等其他厂商,其中TI的TMS320系列以数字控制和运动控制为主,以价格低廉、简单易用、功能强大很是受欢迎。
二、常见的电机控制算法及研究方法
1、电机控制按工作电源种类划分:可分为直流电机和交流电机。按结构和工作原理可划分:可分为直流电动机、异步电动机、同步电动机。不同的电机所采用的驱动方式也是不相同的,这次主要介绍伺服电机,伺服主要靠脉冲来定位,伺服电机接收到1个脉冲,就会旋转1个脉冲对应的角度,从而实现位移,因此,伺服电机本身具备发出脉冲的功能,所以伺服电机每旋转一个角度,都会发出对应数量的脉冲,同时又与伺服电机接受的脉冲形成了呼应,或者叫闭环,进而很精确的控制电机的转动,从而实现精确的定位,可以达到0.001mm。伺服电机相比较普通电机优势在于控制精度、低频扭矩,过载能力,响应速度等方面,所以被广泛使用于机器人,数控机床,注塑,纺织等行业
三、PWM控制及测试结果
脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中,脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变