精华内容
下载资源
问答
  • 常见的算法的描述方式有哪些
    万次阅读
    2021-07-29 02:05:32

    答案

    一、流程图

    流程图是描述代码的一种很好的工具,利用流程图,可以很好的表现出秩序执行过程中的三种基本结构组成—顺序结构、选择结构、循环结构等。需要注意的是,在使用流程图时,规定需要使用一些基本图形。

    还有一种流程图,叫做N-S图,是在以前的流程图的基础上重新进行了改变,去掉了流程线,并且算法的每一步都用一个框进行描述,最终的执行是将所有的矩形框按照顺序连接起来。

    二、伪代码

    伪代码是一种介于我们编写的由机器执行的语言,但是又不受语法约束的代码。这种语言时无法被机器执行的,但是和流程图一样,也是一种常用的描述算法的方法。

    伪代码主要是用来表示代码之间的逻辑关系,并不能交由计算机执行。因此,主要使用对象是设计师和程序员,是用来表达在编码前对算法执行过程中的一些想法的工具。

    三、自然语言

    算法的第三种表述,就是使用自然语言进行描述。自然语言比较符合我们的阅读习惯,是一种我们都能够理解的方式。不过,这种方式的缺点是无法很准确的描述循环、选择等结构。在使用自然语言描述算法的过程中,要求算法语言简练、层次清楚。因此,要注意语言和标点符号的使用。初次之外,还要在每个步骤前加上数字的标号。

    更多相关内容
  • 认识C语言 -算法描述的5种方法

    千次阅读 2021-05-20 13:37:13
    在 C语言中, 5 种常用的算法描述方法:自然语言、流程图、N-S 图、伪代码和程序设计语言。1. 自然语言描述算法上一讲《算法是什么》中给出的解决问题的算法 a、算法 b 和算法 c 都是用自然语言来表示算法的(见上...

    在 C语言中,有 5 种常用的算法描述方法:自然语言、流程图、N-S 图、伪代码和程序设计语言。

    1. 自然语言描述算法

    上一讲《算法是什么》中给出的解决问题的算法 a、算法 b 和算法 c 都是用自然语言来表示算法的(见上一节的图2)。自然语言就是我们日常使用的各种语言,可以是汉语、英语、日语等。

    用自然语言描述算法的优点是通俗易懂,当算法中的操作步骤都是顺序执行时比较直观、容易理解。缺点是如果算法中包含了判断结构和循环结构,并且操作步骤较多时,就显得不那么直观清晰了。

    2. 用流程图描述算法

    用流程图描述算法就可以解决上述缺点。所谓流程图(Flow Chart),是指用规定的图形符号来描述算法(见表 1)。

    表 1:流程图常用的图形符号

    图形符号

    名称

    含义

    e3cb355c169e675a083df34a7db1c6fe.gif

    起止框

    程序的开始或结束

    49c1ab243c831929adc357c319304ad1.gif

    处理框

    数据的各种处理和运算操作

    2c044909d85beec7cf6f28ea133a2647.gif

    输入/输出框

    数据的输入和输出

    66fae558402a283c22e6c8f0bdb04f4a.gif

    判断框

    根据条件的不同,选择不同的操作

    f917625baeea9a40de68dd9981a93fbf.gif

    连接点

    转向流程图的他处或从他处转入

    589616e71087e6a3c87622f361ce47df.gif

    流向线

    程序的执行方向

    结构化程序设计方法中规定的三种基本程序流程结构(顺序结构、选择结构和循环结构)都可以用流程图明晰地表达出来(见图 1)。

    28c5d8a31b3677a27b832fca32797650.gif

    图 1:用流程图表示的顺序结构、选择(条件分支)结构、循环结构三种流程

    3. 用 N-S 图描述算法

    虽然用流程图描述的算法条理清晰、通俗易懂,但是在描述大型复杂算法时,流程图的流向线较多,影响了对算法的阅读和理解。因此有两位美国学者提出了一种完全去掉流程方向线的图形描述方法,称为 N-S 图(两人名字的首字母组合)。

    N-S 图使用矩形框来表达各种处理步骤和三种基本结构(见图 2),全部算法都写在一个矩形框中。

    289f76de33098a37e7bf5684710fe077.gif

    图 2:用 N-S 图表示的顺序结构、选择(条件分支)结构、循环结构三种流程

    图 3 展示了分别用自然语言、流程图和 N-S 图解决同一问题的算法描述。

    f2ff8ae243c4182ff3f21e65d443f8f2.gif

    图 3:分别用自然语言、流程图和 N-S 图描述的算法

    4. 用伪代码描述算法

    伪代码是用在更简洁的自然语言算法描述中,用程序设计语言的流程控制结构来表示处理步骤的执行流程和方式,用自然语言和各种符号来表示所进行的各种处理及所涉及的数据(见图 4)。它是介于程序代码和自然语言之间的一种算法描述方法。这样描述的算法书写比较紧凑、自由,也比较好理解(尤其在表达选择结构和循环结构时),同时也更有利于算法的编程实现(转化为程序)。

    4b9356618fbc32bec2ef7f254a8d8567.gif

    图 4:常见的三种流程结构的伪代码

    5. 用程序设计语言来描述算法

    算法最终都要通过程序设计语言描述出来(编程实现),并在计算机上执行。程序设计语言也是算法的最终描述形式(见图 5)。无论用何种方法描述算法,都是为了将其更方便的转化为计算机程序。

    360e7cee69cb8d49b7e1e092b8c6419d.gif

    图 5:用伪代码和程序设计语言(C语言)描述的算法

    #include

    int main(){

    int S=0;

    int i=0;

    while(i<100)

    {

    i=i+1;

    S=S+i;

    }

    printf("1+2+3+…+100=%d",S);

    system("pause");

    }

    展开全文
  • 6.1常见的排序算法 e冒泡排序 e快速排序 e直接插入排序 希尔排序 选择排序 e堆排序 e归并排序 61.1冒泡排序 e算法描述 设待排序记录序列中的记录个数为n 一般地,第i趟起泡排序从1到n-i+1 依次比较相邻两个记录的...
  • 时间序列聚类常见算法有哪些

    千次阅读 2020-08-06 14:21:32
    例如在数据分析领域,我们可以把某个物品用特征来描述出来,例如该房子的面积、价格、朝向等内容,然后使用聚类算法来把相似的房子聚集到一起; 在自然语言处理领域,通常都会寻找一些相似的新闻或者把相似的文本...

    在机器学习领域,聚类问题一直是一个非常常见的问题。无论是在传统的机器学习(Machine Learning)领域,还是自然语言处理(Natural Language Processing)领域,都可以用聚类算法做很多的事情。

    例如在数据分析领域,我们可以把某个物品用特征来描述出来,例如该房子的面积、价格、朝向等内容,然后使用聚类算法来把相似的房子聚集到一起;

    在自然语言处理领域,通常都会寻找一些相似的新闻或者把相似的文本信息聚集到一起,在这种情况下,可以用 Word2Vec 把自然语言处理成向量特征,然后使用 KMeans 等机器学习算法来作聚类。

    除此之外,另外一种做法是使用 Jaccard 相似度来计算两个文本内容之间的相似性,然后使用层次聚类(Hierarchical Clustering)的方法来作聚类。
    在这里插入图片描述
    本文将会从常见的聚类算法出发,然后介绍时间序列聚类的常见算法。

    机器学习的聚类算法

    1 KMeans — 基于距离的机器学习聚类算法

    KMeans 算法的目的是把欧氏空间 中的 个节点,基于它们之间的距离公式,把它们划分成 个类别,其中类别 的个数是需要在执行算法之前人为设定的。
    在这里插入图片描述
    从数学语言上来说,假设已知的欧式空间点集为 在这里插入图片描述,事先设定的类别个数是 ,当然 是必须要满足的,因为类别的数目不能够多于点集的元素个数。算法的目标是寻找到合适的集合 在这里插入图片描述
    使得 在这里插入图片描述达到最小,其中 表示集合 在这里插入图片描述中的所有点的均值。
    上面的 在这里插入图片描述表示欧式空间的欧几里得距离,在这种情况下,除了使用 在这里插入图片描述范数之外,还可以使用在这里插入图片描述 范数和其余的 在这里插入图片描述范数。只要该范数满足距离的三个性质即可,也就是非负数,对称,三角不等式。

    2 层次聚类 — 基于相似性的机器学习聚类算法

    层次聚类通常来说有两种方法,一种是凝聚,另外一种是分裂。
    在这里插入图片描述
    所谓凝聚,其大体思想就是在一开始的时候,把点集集合中的每个元素都当做一类,然后计算每两个类之前的相似度,也就是元素与元素之间的距离;然后计算集合与集合之前的距离,把相似的集合放在一起,不相似的集合就不需要合并;不停地重复以上操作,直到达到某个限制条件或者不能够继续合并集合为止。

    所谓分裂,正好与聚合方法相反。其大体思想就是在刚开始的时候把所有元素都放在一类里面,然后计算两个元素之间的相似性,把不相似元素或者集合进行划分,直到达到某个限制条件或者不能够继续分裂集合为止。

    在层次聚类里面,相似度的计算函数就是关键所在。在这种情况下,可以设置两个元素之间的距离公式,例如欧氏空间中两个点的欧式距离。在这种情况下,距离越小表示两者之间越相似,距离越大则表示两者之间越不相似。除此之外,还可以设置两个元素之间的相似度。例如两个集合中的公共元素的个数就可以作为这两个集合之间的相似性。在文本里面,通常可以计算句子和句子的相似度,简单来看就是计算两个句子之间的公共词语的个数。

    时间序列的聚类算法

    通过以上的描述,如果要做时间序列的聚类,通常来说也有多种方法来做,可以使用基于距离的聚类算法 KMeans,也可以使用基于相似度计算的层次聚类算法。

    无论是常见的时间序列特征,例如最大值,最小值,均值,中位数,方差,值域等内容之外。还可以计算时间序列的熵以及分桶的情况,其分桶的熵指的是把时间序列的值域进行切分,就像 Lebesgue 积分一样,查看落入那些等分桶的时间序列的概率分布情况,就可以进行时间序列的分类。除了 Binned Entropy 之外,还有 Sample Entropy 等各种各样的特征。除了时域特征之外,也可以对时间序列的频域做特征,例如小波分析,傅里叶分析等等。因此,在这种情况下,其实只要做好了时间序列的特征,使用 KMeans 算法就可以得到时间序列的聚类效果,也就是把相似的曲线放在一起。

    在提取时间序列的特征之前,通常可以对时间序列进行基线的提取,把时间序列分成基线和误差项。而基线提取的最简单方法就是进行移动平均算法的拟合过程,在这种情况下,可以把原始的时间序列 在这里插入图片描述分成两个部分 在这里插入图片描述在这里插入图片描述。i.e. 在这里插入图片描述。有的时候,提取完时间序列的基线之后,其实对时间序列的基线做特征,有的时候分类效果会优于对原始的时间序列做特征。

    2 时间序列的相似度计算
    如果要计算时间序列的相似度,通常来说除了欧几里得距离等 距离之外,还可以使用 DTW 等方法。在这种情况下,DTW 是基于动态规划算法来做的,基本想法是根据动态规划原理,来进行时间序列的“扭曲”,从而把时间序列进行必要的错位,计算出最合适的距离。

    一个简单的例子就是把 在这里插入图片描述在这里插入图片描述进行必要的横坐标平移,计算出两条时间序列的最合适距离。但是,从 DTW 的算法描述来看,它的算法复杂度是相对高的,是 在这里插入图片描述量级的,其中n表示时间序列的长度。
    在这里插入图片描述
    如果不考虑时间序列的“扭曲”的话,也可以直接使用欧氏距离,无论是 在这里插入图片描述还是 在这里插入图片描述都有它的用武之地。除了距离公式之外,也可以考虑两条时间序列之间的 Pearson 系数,如果两条时间序列相似的话,那么它们之间的 Pearson 系数接近于 1;如果它们之间是负相关的,那么它们之间的 Pearson 系数接近于 -1;如果它们之间没有相关性,Pearson 系数接近于0。除了 Pearson 系数之外,也可以考虑它们之间的线性相关性,毕竟线性相关性与 Pearson 系数是等价的。

    除此之外,我们也可以用 Auto Encoder 等自编码器技术对时间序列进行特征的编码,也就是说该自编码器的输入层和输出层是恒等的,中间层的神经元个数少于输入层和输出层。在这种情况下,是可以做到对时间序列进行特征的压缩和构造的。除了 Auto Encoder 等无监督方法之外,如果使用其他有监督的神经网络结构的话,例如前馈神经网络,循环神经网络,卷积神经网络等网络结构,可以把归一化之后的时间序列当做输入层,输出层就是时间序列的各种标签,无论是该时间序列的形状种类还是时间序列的异常/正常标签。当该神经网络训练好了之后,中间层的输出都可以作为 Time Series To Vector 的一种模式。i.e. 也就是把时间序列压缩成一个更短一点的向量,然后基于 COSINE 相似度等方法来计算原始时间序列的相似度。

    总结

    如果想对时间序列进行聚类,其方法是非常多的。无论是时间序列的特征构造,还是时间序列的相似度方法,都是需要基于一些人工经验来做的。如果使用深度学习的方法的话,要么就提供大量的标签数据;要么就只能够使用一些无监督的编码器的方法了。本文目前初步介绍了一些时间序列的聚类算法,后续将会基于笔者的学习情况来做进一步的撰写工作。

    来源:知乎
    作者:张戎

    展开全文
  • 大数据分析都有哪些常见算法

    千次阅读 2020-12-24 13:36:50
    今天,我们就一起来了解一下,数据分析领域常见算法有哪些。1.线性回归线性回归可能是统计学和机器学习中知名和易理解的算法之一。由于预测建模主要关注小化模型的误差,或者以可解释性为代价来做出准确的预测。...

    随着互联网的不断发展,大数据分析算法让众多企业在用户分析上获得了很大的突破。今天,我们就一起来了解一下,数据分析领域常见的算法都有哪些。

    1.线性回归

    线性回归可能是统计学和机器学习中知名和易理解的算法之一。

    由于预测建模主要关注小化模型的误差,或者以可解释性为代价来做出准确的预测。我们会从许多不同领域借用、重用和盗用算法,其中涉及一些统计学知识。

    线性回归用一个等式表示,通过找到输入变量的特定权重(B),来描述输入变量(x)与输出变量(y)之间的线性关系。

    2.逻辑回归

    逻辑回归是机器学习从统计领域借鉴的另一种技术。这是二分类问题的专用方法(两个类值的问题)。

    逻辑回归与线性回归类似,这是因为两者的目标都是找出每个输入变量的权重值。与线性回归不同的是,输出的预测值得使用称为逻辑函数的非线性函数进行变换。

    逻辑函数看起来像一个大S,并能将任何值转换为0到1的范围内。这很有用,因为我们可以将相应规则应用于逻辑函数的输出上,把值分类为0和1(例如,如果IF小于0.5,那么输出1)并预测类别值。

    3.线性判别分析

    传统的逻辑回归仅限于二分类问题。如果你有两个以上的类,那么线性判别分析算法(LinearDiscriminantAnalysis,简称LDA)是选的线性分类技术。

    LDA的表示非常简单。它由你的数据的统计属性组成,根据每个类别进行计算。对于单个输入变量,这包括:

    每类的平均值。

    跨所有类别计算的方差。

    4.分类和回归树

    决策树是机器学习的一种重要算法。

    决策树模型可用二叉树表示。对,就是来自算法和数据结构的二叉树,没什么特别。每个节点代表单个输入变量(x)和该变量上的左右孩子(假定变量是数字)。

    5.朴素贝叶斯

    朴素贝叶斯是一种简单但极为强大的预测建模算法。

    该模型由两种类型的概率组成,可以直接从你的训练数据中计算出来:1)每个类别的概率;2)给定的每个x值的类别的条件概率。一旦计算出来,概率模型就可以用于使用贝叶斯定理对新数据进行预测。当你的数据是数值时,通常假设高斯分布(钟形曲线),以便可以轻松估计这些概率。

    节选:网络大数据

    【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!

    展开全文
  • python算法有哪些

    2020-11-23 03:47:45
    算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有...
  • 分类算法分类算法介绍概念分类算法常见分类算法NBSLRSVM算法ID3算法C4.5 算法C5.0算法KNN 算法ANN 算法选择分类算法分类算法性能评估 分类算法介绍 概念 数据挖掘任务通常分为两大类: 预测任务,根据其他属性的值...
  • 几种常见算法思想

    千次阅读 2019-11-10 21:47:38
    算法是对特定问题求解步骤的一种描述,通俗一点来说,算法就是一种方案,根据现有的特定的问题提出的一种解决方案。程序=数据结构+算法+程序设计语言,首先根据程序要处理的数据设计数据结构,再设计相应的算法来...
  • 由于我之前一直强调数据结构以及算法学习的重要性,所以就一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,...
  • 常见的加密算法有哪些

    千次阅读 2017-01-06 17:24:10
     MD5的全称是Message-Digest Algorithm 5,MD5可以将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回...
  • 五种常见的基本算法描述

    千次阅读 2020-04-18 17:25:22
    1.分治法 2.动态规划 3.贪心 4.回溯 5.分支限界法
  • 机器学习常见算法分类

    千次阅读 2021-02-03 19:32:43
    “机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。 “机器学习是对能通过经验自动改进的计算机算法的研究”。 “机器学习是用数据或以往的经验,...
  • 常见分类算法

    千次阅读 2020-08-02 16:11:46
    算法假定给定目标值时属性之间相互条件独立,即没有哪个属性变量对于决策结果占很大(很小)的比重,一定程度上降低了贝叶斯分类算法的分类效果,但在实际应用场景中,极大简化了贝叶斯方法的复杂性。 1.2 算法...
  • 六种常见聚类算法

    万次阅读 多人点赞 2022-03-31 02:35:10
    算法流程: 适当选择k个类的初始中心; 在第n次迭代中,对任意一个样本,求其到k个中心的距离,将该样本归到距离最短的中心所在的类/簇; 利用均值等方法更新该类的中心值; 对于所有的k个聚类中心,如果利用...
  • 监督学习最常见的四种算法

    千次阅读 2021-01-19 22:15:00
    而监督型学习(Supervised learning)就是训练样本,带属性标签,也可以理解成样本输入输出。 所有的回归算法和分类算法都属于监督学习。回归(Regression)和分类(Classification)的算法区别在于输出变量...
  • 常见十大算法(带图解释)

    千次阅读 2019-06-26 20:13:24
    0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不...
  • 目标检测是计算机视觉领域中的一个重要研究方向,也是其他复杂视觉任务的基础。 作为图像理 解和计算机视觉的基石,目标检测是解决分割、场景理解、目标跟踪、图像描述和事件检测等更高层次 视觉任务的基础。
  • 10种常见AI算法

    千次阅读 2019-10-08 12:55:39
    感知机 二分类 二分类的线性分类模型,也是判别模型。 目的是求出把训练数据进行线性划分的分离超平面。 感知机是神经网络和支持向量机的基础。 学习策略:极小化损失函数。...是一种分类和回归方法监督学...
  • 因此,回归两个重要组成部分:自变量和因变量之间的关系,以及不同自变量对因变量影响的强度。 以下是几种常用的回归方法: 1.线性回归:使用最广泛的建模技术之一。线性回归假定输入变量(X)和单个输出变量(Y...
  • 基于平时对【算法】的了解,特写此文来整理一下常见算法。注意,此文不对算法的具体细节做深究,仅供基础入门学习。限于篇幅原因,本文先介绍【对称加密算法】。 对称加密算法 对称加密算法,顾名思义,就是...
  • 人工智能算法有哪些

    千次阅读 2021-03-18 11:54:26
    常见的半监督学习类算法包含:生成模型(Generative Models)、低密度分离(Low-density Separation)、基于图形的方法(Graph-based Methods)、联合训练(Co-training)等。 常见的强化学习类算法包含:Q学习(Q-...
  • 几种对称性加密算法:AES,DES,3DES DES是一种分组数据加密技术(先将数据分成固定长度的小数据块,之后进行加密),速度较快,适用于大量数据加密,而3DES是一种基于DES的加密算法,使用3个不同密匙对同一个分组数据...
  • 常见算法设计方法

    千次阅读 2019-08-01 20:22:46
    对于很多问题,只要仔细分析了数据对象后,相应的处理方法了;对于有些问题则不然。然而,作为探寻问题求解思路的基本思想和方法,对于任何算法设计都是有用的。 1 穷举法 穷举法亦称作枚举法。它的基本思想是...
  • 常见分布式算法的介绍

    万次阅读 2018-09-18 21:52:24
    背景知识: 哈希算法主要应用于缓存分布式...1.节点取余:如果你的缓存服务器3台,编号为0,1,2,节点取余的方式就是将key做哈希运算并将返回值与3(服务器个数)取余,根据值将value分配到相应编号的服务器中。...
  • 常见的7种排序算法

    万次阅读 多人点赞 2018-06-10 11:37:21
    则冒泡排序的具体过程可以描述为:首先从数组的第一个元素开始到数组最后一个元素为止,对数组中相邻的两个元素进行比较,如果位于数组左端的元素大于数组右端的元素,则交换这两个元素在数组中的位置,此时数组最...
  • 十种常见的排序算法

    万次阅读 2017-08-03 10:12:16
    1.常见算法分类十种常见排序算法一般分为以下几种: (1)非线性时间比较类排序:交换类排序(快速排序和冒泡排序)、插入类排序(简单插入排序和希尔排序)、选择类排序(简单选择排序和堆排序)、归并排序(二路...
  • 人工智能常见算法简介

    万次阅读 多人点赞 2018-09-16 16:39:52
    人工智能的三大基石—算法、数据和计算能力,算法作为其他之一,是非常重要的,那么人工智能都会涉及哪些算法呢?不同算法适用于哪些场景呢? 按照模型训练方式不同可以分为监督学习(Supervised Learning),无...
  • 常见垃圾收集算法(4种)

    千次阅读 2019-08-20 22:26:59
    几种常见的垃圾收集算法的核心思想。  1.Mark-Sweep(标记-清除)算法  这是最基础的垃圾回收算法,之所以说它是最基础的是因为它最容易实现,思想也是最简单的。标记-清除算法分为两个阶段:标记阶段和清除阶段...
  • 列举十大计算机经典算法

    千次阅读 2021-07-28 07:33:41
    如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。说到具体的算法,这里IT...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 248,995
精华内容 99,598
热门标签
关键字:

常见的算法的描述方式有哪些