精华内容
下载资源
问答
  • 一个算法应该是程序
    千次阅读
    2021-01-29 10:20:15

    1、算法的概念

    • 通俗意义上:算法是指解决问题的一种方法或一个过程;
    • 严格意义上:算法是由若干条指令组成的又穷序列。

    2、算法的性质

    • (1)输入:有零个或多个由外部提供的量作为算法的输入;
    • (2)输出:算法产生至少一个量作为输出;
    • (3)确定性:组成算法的每条指令是清晰的无歧义的;
    • (4)有限性:每条指令的执行次数与执行时间都是有限的。

    3、程序与算法的区别和内在联系

    • 首先,这二者是不同的。
    • 程序是算法用某种程序设计语言的具体实现,程序可以不满足算法的性质(4)有限性。
    • 例如操作系统,它是一个在无限循环中执行的程序,而不是一个算法,然而也可把操作系统的各种任务看成是一些单独的问题,每一个问题由操作系统中的一个子程序提供特定的算法来实现,该子程序得到结果后便终止。
    更多相关内容
  • 基于两维的目标跟踪航迹融合算法MATLAB仿真程序,小程序,对初学者会有帮助,里面有用到简单凸组合航迹融合算法、bar-shalom-campo航迹融合算法和卡尔曼滤波
  • 给你一个算法应该怎么写程序(数学建模 matlab)

    万次阅读 多人点赞 2017-08-27 13:29:52
    本文写作初衷:有个可爱的学妹问我在看到一个算法编程时的步骤是什么,然而作为伪大神的我,感觉并不知道怎么回答,感觉我编程就俩字死磕,错了咋办?再来一遍!不行咋办?换个写法试试!还不行?百度!不过既然人家...

    本文写作初衷:有个可爱的学妹问我在看到一个算法编程时的步骤是什么,然而作为伪大神的我,感觉并不知道怎么回答,感觉我编程就俩字死磕,错了咋办?再来一遍!不行咋办?换个写法试试!还不行?百度!不过既然人家诚心诚意的问了 o( ̄▽ ̄)o,还是说点建设性的经验。

    算法是什么?

    • 算法是处理解决问题的思路及办法,程序语言是按照一定语法把算法表达来。
    • 打个比方,你头脑里有了一套新思想,一个新发现,你可以用中文写出来,也可以用英文写出来,让大家明白。思想和发现可以比作是算法,用中文或英文可以比作是程序语言。
    • 因此核心是算法,但程序语言是实现算法的载体。在计算机等系统中,算法是处理某一问题的思路方法,而程序语言能具体表达算法从而使之运行起来通过算法需要完成的任务。

    前提假设:

    要实现的这个算法网上能搜到大量的资料,比如算法的思想是什么,使用这个算法的例子(翻书太慢,不够丰富,不推荐)。


    1. 给你一个算法,在动手编程之前,你应该把注意力放在哪里?

    算法的核心是解决问题的思路和方法,所弄明白一个算法的思路是非常有必要的(当然对于某些教材上的算法给出的步骤详细的不能再详细,不知道思路比着步骤也能编,这里不考虑)。

    比如:
    在用遗传算法解决问题时:

    1. 百度搜索遗传算法,比较多见的是百度百科,CSND博客,博客园,知乎,脚本之家的内容,也是我重点关注的搜索结果。前三者的内容相对比较系统,可以从中掌握这个算法的由来,思想,一般步骤。知乎大神的回答一般比较深入浅出,或者站在一个比较高的高度耳目一新,脚本之家给出的代码比较实用,百度知道一些论坛智库里面也会有一些有价值的回答,但是没有前面几个的思想有深度。

    2. 这里从百度百科的结果看思想:
      图片来自百度百科截图——遗传算法
      理解好这个介绍就完成了一大步(因为具体问题的具体实现不能照搬,只有思想是通用的):从这里理解了遗传算法就是仿真生物种群优胜劣汰的过程,适者生存,不适者淘汰。并且知道了这个算法的解决问题一般步骤是编码,产生初代种群,迭代演化(演化要计算个体适应度,交叉,变异,产生新的个体)
      此外还需要理解每个过程都需要实现什么功能:
      图片来自百度百科截图——遗传算法
      这里看得出整个算法的关键是构造一个迭代(不懂迭代就理解维循环),迭代的每一步需要计算种群中每个个体的适应度,优胜劣汰种群中的个体,种群中交叉运算,变异运算(是为了生成新的可行解,为寻找到初始种群里之外更好可行解提供了可能)得到新的种群

    3. 看懂了思想,知道了每步是干啥的,就可以联系我们要解决的问题思考(思考的方式大致就是要解决的问题有什么?可以对应到算法的那一部分上?这样对应后其他部分要怎么实现?):

    • 要求解的问题是最优化问题,那么个体(染色体)是不是就对应着每个可行解?
    • 适应度是不是对应着目标函数值?
    • 求得了适应度要怎么按照适应度的大小繁殖后代?(用rand函数怎么实现?)
    • 如何实现交叉运算?(不同可行解之间哪些部分可以交换,并且有益于构造出不同的可行解?)
    • 如何实现变异运算?(随机改变某些个体的某些属性的值可以吗?)
      对于这些细节有了大致的思路或者模糊的思路就可以开始尝试编写代码了
    1. 如果觉得自己的思路太模糊,可以看看别人的例子代码(如果没有理解这些算法的思想,直接看已有的代码,要看懂很困难,当然也可以从里面的循环和分支结构作为突破口,画画流程图,写一写注释,来帮助理解代码),也可以直接上手去编,遇到问题再去网上找解决方案(matlab那么杂,函数那么多,记不住的东西就要善于网上去搜)

    2. matlab编程应该熟练哪些知识?

    参考另一篇博客哪些知识点是学习matlab应该熟练掌握的?,基本功熟练,才能看到问题有想法思路(能力决定思维)


    比如针对这次数学建模第三轮训练——下料问题,假设建立了这样的模型:

    这里写图片描述

    • 可行解(切割方案)是由两个矩阵和两个向量表示的,矩阵A的每一行表示用一根5000mm长的材料切割出50种钢管的数量,由于钢管种类多达50种,如果穷举所有可能切法是困难的,所以矩阵A的行数暂定为200行,矩阵B的每一行表示用一根6000mm长的材料切割出50跟钢管的数量,同样暂定其行数为200行,列向量a的行数同A的行数一样,表示按照每种切割方法切割原材料的根数,列向量b表示按照B的每行的切割方法切割原材料的根数。
    • 目标函数是这种切割方案产生的废料的量。
    • 约束条件是每根原材料够长,切割出每种钢管数目达到需求。
      (精力有限,省去数学语言描述)

    怎么应用约束条件,是直接根绝约束条件生成可行解,还是随机生成后判断是否满足约束?前者设计困难,后者效率可能非常低下。

    1. 编写代码(本例中要遗传的个体比较复杂,就不进行编码解码,直接把80个可行解作为初始种群,相应的代价是交叉和变异不容易):
    close all;clear;clc;
    %% 数据
    AL=5000;BL=6000;
    NL=[] % 50种钢管的长度
    NN=[] % 50种钢管的数量
    %% 初始化,上面的步骤a)
    T = 1000; % 迭代1000步
    M = 80; % 种群规模
    P = []; % 种群
    for m=1:M % 初始化种群
    	temp.A = 
    	temp.B = 
    	temp.x = 
    	temp.y = 
    	P(m)=temp; % 上面需要构造一个合适的方法生成初始可行解,实现较麻烦,
    	% 我的大致思路是
    end
    %% 迭代(迭代包括个体评价,选择,交叉,变异)
    for t=1:T % 至多进化T次
    %%%%%%%%%% 个体评价,假设已有一个函数score,输入A、B、x、y,返回浪费材料的长度
    	sc = zeros(1,M);
    	for m=1:M
    		temp = P(m);
    		sc(m) = score(temp.A,temp.B,temp.x,temp.y); % 计算得分
    	end
    	% 做一个合适的变换,让浪费材料长度变为得分(适应度),这里简化了
    	sc = -sc;
    	sc = sc-min(sc)/(max(sc) - min(sc));
    %%%%%%%%%% 选择,轮盘赌算法,就是让得分对应于轮盘上扇形的宽度
    %选择50次,落到哪个扇区,对应的个体就有一个后代
    	sumsc = sum(sc);
    	csum = cumsum(sc);% 累加 a1,a1+a2,a1+a2+a3,...,sum(a)
    	oldP = P;
    	for m=1:M
    		[~,index]=find(sumsc*rand>csum);
    		if(isempty(index)) index=0;
    		P(m) = oldP(index+1);  
    	end
    %%%%%%%%%% 交叉运算,这里随机选择30对进行交叉运算,这里假设实现了交叉算子
    %across ,输入两个个体,函数交换两个个体里矩阵A,B,x,y里的部分行,列,数据
    	toex = ceil(M*rand(30,2));
    	for i=1:30
    		P(toex(i,:)) = across(P(toex(i,:)));% 两两做交叉运算
    	end
    %%%%%%%%% 变异运算,随机选取几个对象,改变A,B,x,y里的部分数据,
    %这里假设已经实现了变异算子variation
    	toch = ceil(M*rand(10,1));% 假设10个发生变异
    	for i=1:10
    		P(toch(i)) = variation(toch(i));
    	end
    end
    % 目前已经按照遗传算法的思想写出了整体骨架,细节有空再完善
    

    2021-2-10 补充
    原来鸽王竟是我自己!

    展开全文
  • 人工蜂群算法matlab程序

    热门讨论 2013-05-27 16:04:28
    人工蜂群算法是模仿蜜蜂行为提出的一种优化方法,是集群智能思想的一个具体应用,它的主要特点是不需要了解问题的特殊信息,只需要对问题进行优劣的比较,通过各人工蜂个体的局部寻优行为,最终在群体中使全局最优值...
  • 算法程序的区别与联系

    千次阅读 2021-07-19 13:34:19
    说通俗一些算法是解决一个问题的思路,程序,是解决这些问题所具体好写的代码。算法没有语言界限。他只是一个思路。为实现相同的一个算法,用不同语言编写的程序会不一样。 (2)两者的书写规定不同。程序必须用规定...

    算法和程序的区别是:

    (1) 两者定义不同。算法是对特定问题求解步骤的描述,它是有限序列指令。而程序是实现预期目的而进行操作的一系列语句和指令

    说通俗一些算法是解决一个问题的思路程序,是解决这些问题所具体好写的代码。算法没有语言界限。他只是一个思路。为实现相同的一个算法,用不同语言编写的程序会不一样。

    (2)两者的书写规定不同。程序必须用规定的程序设计语言来写,而算法很随意。算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。算法常常含有重复的步骤和一些逻辑判断。

    简单算法举例 例:求 1*2*3*4*5 

    步骤 1 :先求 1*2 ,得到结果 2 。

    步骤 2 :将步骤 1 得到的乘积 2 再乘以 3 ,得到结果 6 。

    步骤 3 :将步骤 2 得到的乘积 6 再乘以 4 ,得到结果 24 。

    步骤 4 :将步骤 3 得到的乘积 24 再乘以 5 ,得到最后结果 120 。 

    算法与程序的联系 :

    算法和程序都是指令的有限序列 ,但是程序是算法,而算法不一定是程序。程序 = 数据结构 + 算法算法的主要目的在于为人们提供阅读了解所执行的工作流程与步骤。数据结构与算法要通过程序的实现,才能由计算机系统来执行。可以这样理解,数据结构和算法形成了可执行的程序。

    扩展资料

    算法的要素:

    一、数据对象的运算和操作:计算机可以执行的基本操作是以指令的形式描述的。一个计算机系统能执行的所有指令的集合,成为该计算机系统的指令系统。一个计算机的基本运算和操作有如下四类: 

    1、算术运算:加减乘除等运算。

    2、逻辑运算:或、且、非等运算。

    3、关系运算:大于、小于、等于、不等于等运算。

    4、数据传输:输入、输出、赋值等运算。

    二、算法的控制结构:一个算法的功能结构不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。

    展开全文
  • 赵端阳、吴艳、石洗凡主编的《ACM大学生程序 设计竞赛在线题库精选题解--算法分析与设计习题解 答》是在浙江大学、北京大学和杭州电子科技大学的 在线题库中精选了部分题目进行分析和解答,比较详 细地分析和深入浅...
  • 数学之算法程序框图

    千次阅读 2021-07-07 04:10:28
    原标题:数学之算法程序框图1、算法的定义:广义的算法是指完成某项工作的方法和步骤,现代意义的算法是指可以用计算机来解决的某类问题的程序和步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内...

    原标题:数学之算法与程序框图

    1、算法的定义:广义的算法是指完成某项工作的方法和步骤,现代意义的算法是指可以用计算机来解决的某一类问题的程序和步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成。

    2、流程图的概念:流程图是用一些规定的图形、指向线及简单的文字说明来表示算法几程序结构的一种图形程序.它直观、清晰,便于检查和修改.其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,带箭头的流程线(指向线)表示操作的先后次序。

    d041e7f8f7de6d4d6707f9754d6a4614.png

    3、规范流程图的表示:

    ①使用标准的框图符号。

    ②框图一般按从上到下、从左到右的方向画,流程线要规范。

    ③除判断框外,大多数框图符号只有一个进入点和一个退出点。

    ④在图形符号内描述的语言要非常简练、清楚。

    4、算法的三种基本逻辑结构:

    课本中例题的讲解得出三种基本逻辑结构:顺序结构、条件结构、循环结构。

    (1)顺序结构:顺序结构描述的是是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的。

    例1:已知一个三角形的三边分别为2、3、4,利用海伦公式设计一个算法,求出它的面积,并画出算法的程序框图。 算法分析:这是一个简单的问题,只需先算出p的值,再将它代入公式,最后输出结果,只用顺序结构就能够表达出算法。

    cef6b3864761379978c8b4ffccca69dc.png

    (2)条件结构:根据条件选择执行不同指令的控制结构。 例2:任意给定3个正实数,设计一个算法,判断分别以这3个数为三边边长的三角形是否存在,画出这个算法的程序框图。 算法分析:判断分别以这3个数为三边边长的三角形是否存在,只需要验收这3个数当中任意两个数的和是否大于第3个数,这就需要用到条件结构。

    (3)循环结构:在一些算法中,经常会出现从某处开始,按照一定条件,反复执行某一处理步骤的情况,这就是循环结构,反复执行的处理步骤为循环体,显然,循环结构中一定包含条件结构。 循环结构分为两类:

    一类是当型循环结构,它的功能是当给定的条件P1成立时,执行A框,A框执行完毕后,再判断条件P1是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到某一次条件P1不成立为止,此时不再执行A框,从b离开循环结构。

    另一类是直到型循环结构,它的功能是先执行,然后判断给定的条件P2是否成立,如果P2仍然不成立,则继续执行A框,直到某一次给定的条件P2成立为止,此时不再执行A框,从b点离开循环结构。

    两种循环结构有什么差别?

    当型:先判断 后执行 先判断指定的条件是否为真,若条件为真,执行循环条件,条件为假时退出循环。

    直到型:先执行 后判断 先执行循环体,然后再检查条件是否成立,如果不成立就重复执行循环体,直到条件成立退出循环。

    注意:

    1.对于算法的理解不能仅局限于解决数学问题的方法,解决任何问题的方法和步骤都应该是算法。算法具有概括性、抽象性、正确性等特点,要通过具体问题的过程和步骤的分析去体会算法的思想,了解算法的含义。

    2.在学习程序框图时要掌握各程序框的作用,准确应用三种基本逻辑结构,即顺序结构、条件分支结构、循环结构来画程序框图准确表达算法。画程序框图是用基本语句来编程的前提。

    例3:设计一个计算1+2+„+100的值的算法,并画出程序框图。 算法分析:只需要一个累加变量和一个计数变量,将累加变量的初始值为0,计数变量的值可以从1到100。

    85e28dc266eed0e7bd7be1a50519ae19.png

    例题

    a5f3268b8ac8e0c9ac255d5fb8463eed.png

    2.(理)下列程序运行后输出结果为( )

    S=1;

    n=1;

    while S<100

    S=S*n;

    n=n+3;

    end

    n =?

    A.4

    B.10

    C.13

    D.16

    答案: C

    解析: S=1<100,进行第一次循环后S=1,n=4;S=1<100再进行第二次循环。循环后S=4,n=7;第三次循环后S=28,n=10;第四次循环后S=280,n=13。因S=280>100,故不再循环,跳出循环后输出n=13。

    53d1b3747df42e725c4d41d5b63610f2.png

    ---------------------------------------

    ------------------------------------------返回搜狐,查看更多

    责任编辑:

    展开全文
  • 算法程序设计

    千次阅读 2018-07-21 18:35:40
    内容:1、简要介绍程序算法程序的关系;  2、了解结构化程序设计;  3、构建对称方阵。 1、什么是程序?  所谓程序,就是组计算机能识别与执行的指令。每条指令使计算机执行特定的操作,用来完成一定...
  • 一个一个简单的遗传算法例子,代码注释详尽,很适合初学者进行学习。代码已经经过测试,请放心下载
  • 算法程序的区别

    千次阅读 2020-03-22 18:44:25
    算法首先必须是正确的,即对于任意的组输入,包括合理的输入与不合理的输入,总能得到预期的输出。 算法必须是由系列具体步骤组成的,并且每一步都能够被计算机所理解和执行,而不是抽象和模糊的概念。 每步骤...
  • PLC码垛程序算法

    千次阅读 2021-12-05 22:51:59
    PLC码垛程序算法,可根据产品类型、托盘尺寸、产品长宽高尺寸、原点位移、补偿等自动计算坐标。参数可设置
  • 程序=算法+数据结构

    千次阅读 2020-11-09 09:55:05
    程序=算法+数据结构❞这是句非常著名的话,凭借这句话直接获得图灵奖,可想数据结构和算法有多重要。同时,在各个大厂招聘面试时,也会提到数据结构和算法。❝你知道什么什么数据结构吗查找、...
  • 数据结构、算法程序的关系

    千次阅读 2020-06-02 01:14:18
    这里写目录标题初衷数据结构、算法程序的联系 初衷    数据结构、算法程序的联系 数据结构 = 数据 + 结构 算法 = 算 + 法 程序 = (流)程 + (顺)序 反爬虫措施,读者略过: 转载请标明转自:...
  • 算法如何入门以及零基础入门算法应该学些什么?​ ✅作者简介:大家好,我是新小白2022,让我们一起学习,共同进步吧! 个人主页:新小白2022的CSDN博客 系列专栏:算法基础入门 如果觉得博主的文章还不错的话,请点赞...
  • 试从日常生活中找3例子,描述它们的算法 算法:简而言之就是求解问题的步骤,对特定问题求解步骤的种描述。 比如生活中的例子: 考大学 首先填报志愿表、交报名费、拿到准考证、按时参加考试、收到录取通知书...
  • 计算问题通常都很复杂,问题实例可能很大,解决它们需要执行数以千万计的具体操作人工...程序可以看作采用计算装置能够处理的语言描述的算法,由于它是算法的实际体现,又能在实际计算机上执行,因此被称为算法的实...
  • 什么是java算法

    千次阅读 2021-02-26 10:11:41
    算法的特征:输入性:有零个或多个外部量作为算法的输入输出性:算法产生至少一个量作为输出确定性:算法中每条指令清晰,无歧义有穷性:算法中每条指令的执行次数有限,执行每条指令是时间也有限可行性:算法原则上...
  • 算法 - 程序的灵魂

    千次阅读 2020-05-28 17:18:47
    行代码都是改变世界的能量,算法程序具有灵魂
  • 如何分析一个算法的时间复杂度

    千次阅读 多人点赞 2020-04-21 11:07:35
    一直以来,分析一个算法的时间复杂度对我而言都是很头疼的。直到今天又拿起数据结构… 算法的时间复杂度就是一个算法执行次数的量级,而量级就是多项式的最高次幂。假如代码的执行次数是n(n+1)/2,那最高次幂是n^2,...
  • 蚂蚁算法蚁群算法-原理-思路-步骤-程序实现

    万次阅读 多人点赞 2020-11-02 16:14:09
    蚂蚁算法蚁群算法-原理-思路-步骤-程序实现 ❀算法介绍 蚁群优化算法种用来在图中寻找优化路径的机率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。...
  • 程序设计与基础算法

    千次阅读 2018-10-31 10:55:41
    程序 = 算法+数据结构 算法定义: 算法(Algorithm)是指解题...一个算法的优劣可以用空间复杂度与时间复杂度来衡量。  算法的五个特征: 有穷性(Finiteness)算法必须在执行有限个步骤之后终止 确切性 (Defi...
  • 一个算法只能有一个输入B.算法只能用框图来表示C.一个算法的执行步骤可以是无限的D.一个完整的算法, 不管用什么方法来表示, 都至少有一个输出结果答案: D2. 下列程序框图中表示处理计算的是( )A.①B.②C.③D.④...
  • 爬山算法matlab程序

    热门讨论 2010-08-30 23:14:12
    里面是用matlab写的爬山算法程序,对于初学算法的人有帮助,想用的下载看看。
  • 遗传算法原理及其matlab程序实现

    万次阅读 多人点赞 2019-08-06 22:50:15
    遗传算法原理及其matlab实现、遗传算法背景二、遗传算法原理及其数学模型2.1 编码方式2.1.1 二进制编码2.1.2 浮点数编码2.2 种群初始化2.3 计算初始种群的适应度函数值2.4 对初始种群个体进行筛选(以轮盘赌方式...
  • 简述算法程序的区别并举例说明

    千次阅读 2020-02-13 20:38:31
    说通俗一些算法是解决一个问题的思路,程序,是解决这些问题所具体好写的代码。算法没有语言界限。他只是一个思路。为实现相同的一个算法,用不同语言编写的程序会不一样。 (2)两者的书写规定不同。程序必须用规定...
  • 程序算法

    万次阅读 2018-07-06 12:54:57
    课程导言【从本篇开始,就要学习编程知识了。...程序是指完成某些事物的种既定方式和过程,可以将程序看成是系列动作的执行过程的描述。在百度百科中,计算机程序被定义为“组指示计算机执行动作或做出判断的...
  • 分析假定第一个结点中数据具有最大值,依次与下一个元素比较,若其小于下一个元素,则设其下一个元素为最大值,反复进行比较,直到遍历完该链表。 算法描述 int GetMax(LinkList L){ if(L->next == NULL) ...
  • 对于不带头结点的单链表 L,设计一个递归算法逆序输出所有结点值 #include "LinkList.cpp" #include <bits/stdc++.h> void Revdisp(LinkNode *L) { // 逆序输出 if(L == NULL) return ; else{...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,692,405
精华内容 676,962
热门标签
关键字:

一个算法应该是程序