精华内容
下载资源
问答
  • 算法时间复杂度分类

    千次阅读 2019-05-29 14:40:43
    1.算法时间复杂度主要有以下几种 1.1 0(1) 指的是常数时间内的算法。例如: int i = 8; int j = 6; int sum = i + j; 执行一次或者常数时间次数的代码,时间复杂度都是0(1) 1.2 0(log n) 0(n log n) ...

    1.算法的时间复杂度主要有以下几种

    1.1 0(1)

    指的是常数时间内的算法。例如:

     int i = 8;
     int j = 6;
     int sum = i + j;
    

    执行一次或者常数时间次数的代码,时间复杂度都是0(1)

    1.2 0(log n) 0(n log n)

    示例代码:

     i=1;
     while (i <= n)  {
       i = i * 2;
     }
    

    上述代码的时间复杂度为 o(log n) 这类的时间复杂度不太容易获取。
    但是可以通过 将操作次数作为参数来 ,计算出 操作次数的方式来的计算

    1.3 O(m+n)、O(m*n)

    一般为有两个不定参数,且两个不定参数都不能确定其大小

    int cal(int m, int n) {
      int sum_1 = 0;
      int i = 1;
      for (; i < m; ++i) {
        sum_1 = sum_1 + i;
      }
    
      int sum_2 = 0;
      int j = 1;
      for (; j < n; ++j) {
        sum_2 = sum_2 + j;
      }
    
      return sum_1 + sum_2;
    }
    

    1.4 O(n2)

    其实 O(n2) 可以理解为 O(m*n) 都是不定参数

    1.5 O(2^n)

     i=1;
     while (i <= 2^n)  {
       i ++;
     }
    

    1.6 O(n!)

     i=1;
     while (i <= n!)  {
       i ++;
     }
    
    展开全文
  • 简单来说,人脸识别就是图像中提取面部特征关键点,比如骨骼特征、眉毛高度等,通过比对输出结果。 虽然iPhoneX的FaceID让计算机视觉领域的创业者兴奋不已,但此人脸识别非彼人脸识别。苹果的FaceID并没有采用普通...

    如果要给人脸识别下个定义,它是利用人的生物特征实现个体区分的一种技术,一般包括图像采集、特征定位、身份的确认和查找三个环节。简单来说,人脸识别就是从图像中提取面部特征关键点,比如骨骼特征、眉毛高度等,通过比对输出结果。

    虽然iPhoneX的FaceID让计算机视觉领域的创业者兴奋不已,但此人脸识别非彼人脸识别。苹果的FaceID并没有采用普通摄像头的方式,而是采用红外主动识别的技术,这样就可以做到三维立体识别,增强了安全系数。

    在具体的应用场景中,人脸识别大致可以分为1:1、1:N、N:N三种。

    1:1等级的人脸识别,实现的是最初级的“证明你是你”。从字面上就可以看出,1:1是用户提前上传个人照片储存于系统中,每次验证时,线下拍照与系统中存储的照片信息进行对比,进而确定“你是不是你”。

    举个例子,我们在车站过安检时,检票员拿着你的身份证跟你本人做对比,证明你是不是身份证上的本人,这种场景就是1:1的场景。手机解锁、刷脸支付、网上买票、医院挂号、政府惠民工程项目,以及各种证券开户、电信开户、互联网金融开户……这都是1:1人脸识别的应用场景。同其他方式相比,1:1识别准确率高,对算力的要求也相对较低。

    而1:N的人脸识别算法则主要用于人脸检索,“证明你是谁”。与1:1的一一对照不同,1:N需要一张照片同系统中的海量照片进行对比,根据相似度排列出多个对比结果。而排在第一顺位的结果,未必准确。

    1:N人脸识别算法主要应用在安防领域,如用于排查犯罪嫌疑人、寻找走失儿童等。专注于动态人像识别的初创企业云天励飞在2015年开始就与深圳龙岗区警方合作,在当地地铁口、火车站、城中村、商超等场所建设“深目”系统。上线几个月后,便协助警方成功告破两起命案。

    应用在安防领域的1:N人脸识别,其特点是动态和非配合。所谓动态,即系统识别的不是图片,而是摄像头采集的视频。非配合是指识别对象不用感知到摄像头的位置并配合完成识别工作,识别对象处于被动状态。这在提高采集便捷性的同时,也意味着你的行踪已经被完全暴露。

    同1:1识别相比,使用地点、环境、光线、采集角度甚至是玻璃反射都会影响1:N识别的准确度,所以1:N相对更具有挑战性。

    至于N:N人脸识别,实际上相当于同时进行多个1:N识别,用于“证明谁是谁”。

    人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,多智时代专注于人工智能和大数据的入门和科谱,在此为你推荐几篇优质好文:
    人脸识别的十个关键技术组成及原理
    http://www.duozhishidai.com/article-14161-1.html
    生物识别技术的人脸识别还是屏幕指纹,我们应该选谁?
    http://www.duozhishidai.com/article-3911-1.html
    人脸识别技术,具体是怎么剖析的
    http://www.duozhishidai.com/article-3760-1.html


    多智时代-人工智能大数据学习入门网站|人工智能、大数据、物联网云计算的学习交流网站

    多智时代-人工智能大数据学习入门网站|人工智能、大数据、云计算、物联网的学习服务的好平台
    展开全文
  • 推荐算法分类

    千次阅读 2018-10-24 15:25:11
    推荐算法具有非常多的应用场景和商业价值,因此对推荐算法值得好好研究。推荐算法种类很多,但是目前应用最广泛的应该是协同过滤类别的推荐算法,本文就对协同过滤类别的推荐算法做一个概括总结,后续也会对一些典型...

    推荐算法具有非常多的应用场景和商业价值,因此对推荐算法值得好好研究。推荐算法种类很多,但是目前应用最广泛的应该是协同过滤类别的推荐算法,本文就对协同过滤类别的推荐算法做一个概括总结,后续也会对一些典型的协同过滤推荐算法做原理总结。

    1. 推荐算法概述

    推荐算法是非常古老的,在机器学习还没有兴起的时候就有需求和应用了。概括来说,可以分为以下5种:

    1)基于内容的推荐:这一类一般依赖于自然语言处理NLP的一些知识,通过挖掘文本的TF-IDF特征向量,来得到用户的偏好,进而做推荐。这类推荐算法可以找到用户独特的小众喜好,而且还有较好的解释性。这一类由于需要NLP的基础,本文就不多讲,在后面专门讲NLP的时候再讨论。

    2)协同过滤推荐:本文后面要专门讲的内容。协调过滤是推荐算法中目前最主流的种类,花样繁多,在工业界已经有了很多广泛的应用。它的优点是不需要太多特定领域的知识,可以通过基于统计的机器学习算法来得到较好的推荐效果。最大的优点是工程上容易实现,可以方便应用到产品中。目前绝大多数实际应用的推荐算法都是协同过滤推荐算法。

    3)混合推荐:这个类似我们机器学习中的集成学习,博才众长,通过多个推荐算法的结合,得到一个更好的推荐算法,起到三个臭皮匠顶一个诸葛亮的作用。比如通过建立多个推荐算法的模型,最后用投票法决定最终的推荐结果。混合推荐理论上不会比单一任何一种推荐算法差,但是使用混合推荐,算法复杂度就提高了,在实际应用中有使用,但是并没有单一的协调过滤推荐算法,比如逻辑回归之类的二分类推荐算法广泛。

    4)基于规则的推荐:这类算法常见的比如基于最多用户点击,最多用户浏览等,属于大众型的推荐方法,在目前的大数据时代并不主流。

    5)基于人口统计信息的推荐:这一类是最简单的推荐算法了,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后进行推荐,目前在大型系统中已经较少使用。
    在这里插入图片描述

    2. 协同过滤推荐概述

    协同过滤(Collaborative Filtering)作为推荐算法中最经典的类型,包括在线的协同和离线的过滤两部分。所谓在线协同,就是通过在线数据找到用户可能喜欢的物品,而离线过滤,则是过滤掉一些不值得推荐的数据,比比如推荐值评分低的数据,或者虽然推荐值高但是用户已经购买的数据。

    协同过滤的模型一般为m个物品,m个用户的数据,只有部分用户和部分数据之间是有评分数据的,其它部分评分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。

    一般来说,协同过滤推荐分为三种类型。第一种是基于用户(user-based)的协同过滤,第二种是基于项目(item-based)的协同过滤,第三种是基于模型(model based)的协同过滤。

    基于用户(user-based)的协同过滤主要考虑的是用户和用户之间的相似度,只要找出相似用户喜欢的物品,并预测目标用户对对应物品的评分,就可以找到评分最高的若干个物品推荐给用户。而基于项目(item-based)的协同过滤和基于用户的协同过滤类似,只不过这时我们转向找到物品和物品之间的相似度,只有找到了目标用户对某些物品的评分,那么我们就可以对相似度高的类似物品进行预测,将评分最高的若干个相似物品推荐给用户。比如你在网上买了一本机器学习相关的书,网站马上会推荐一堆机器学习,大数据相关的书给你,这里就明显用到了基于项目的协同过滤思想。

    我们可以简单比较下基于用户的协同过滤和基于项目的协同过滤:基于用户的协同过滤需要在线找用户和用户之间的相似度关系,计算复杂度肯定会比基于基于项目的协同过滤高。但是可以帮助用户找到新类别的有惊喜的物品。而基于项目的协同过滤,由于考虑的物品的相似性一段时间不会改变,因此可以很容易的离线计算,准确度一般也可以接受,但是推荐的多样性来说,就很难带给用户惊喜了。一般对于小型的推荐系统来说,基于项目的协同过滤肯定是主流。但是如果是大型的推荐系统来说,则可以考虑基于用户的协同过滤,当然更加可以考虑我们的第三种类型,基于模型的协同过滤。

    基于模型(model based)的协同过滤是目前最主流的协同过滤类型了,我们的一大堆机器学习算法也可以在这里找到用武之地。下面我们就重点介绍基于模型的协同过滤。

    3. 基于模型的协同过滤

    基于模型的协同过滤作为目前最主流的协同过滤类型,其相关算法可以写一本书了,当然我们这里主要是对其思想做有一个归类概括。我们的问题是这样的m个物品,m个用户的数据,只有部分用户和部分数据之间是有评分数据的,其它部分评分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。

    对于这个问题,用机器学习的思想来建模解决,主流的方法可以分为:用关联算法,聚类算法,分类算法,回归算法,矩阵分解,神经网络,图模型以及隐语义模型来解决。下面我们分别加以介绍。

    3.1 用关联算法做协同过滤

    一般我们可以找出用户购买的所有物品数据里频繁出现的项集活序列,来做频繁集挖掘,找到满足支持度阈值的关联物品的频繁N项集或者序列。如果用户购买了频繁N项集或者序列里的部分物品,那么我们可以将频繁项集或序列里的其他物品按一定的评分准则推荐给用户,这个评分准则可以包括支持度,置信度和提升度等。

    常用的关联推荐算法有Apriori,FP Tree和PrefixSpan。

    3.2 用聚类算法做协同过滤

    用聚类算法做协同过滤就和前面的基于用户或者项目的协同过滤有些类似了。我们可以按照用户或者按照物品基于一定的距离度量来进行聚类。如果基于用户聚类,则可以将用户按照一定距离度量方式分成不同的目标人群,将同样目标人群评分高的物品推荐给目标用户。基于物品聚类的话,则是将用户评分高物品的相似同类物品推荐给用户。

    常用的聚类推荐算法有K-Means, BIRCH, DBSCAN和谱聚类。

    3.3 用分类算法做协同过滤

    如果我们根据用户评分的高低,将分数分成几段的话,则这个问题变成分类问题。比如最直接的,设置一份评分阈值,评分高于阈值的就是推荐,评分低于阈值就是不推荐,我们将问题变成了一个二分类问题。虽然分类问题的算法多如牛毛,但是目前使用最广泛的是逻辑回归。为啥是逻辑回归而不是看起来更加高大上的比如支持向量机呢?因为逻辑回归的解释性比较强,每个物品是否推荐我们都有一个明确的概率放在这,同时可以对数据的特征做工程化,得到调优的目的。目前逻辑回归做协同过滤在BAT等大厂已经非常成熟了。

    常见的分类推荐算法有逻辑回归和朴素贝叶斯,两者的特点是解释性很强。

    3.4 用回归算法做协同过滤

    用回归算法做协同过滤比分类算法看起来更加的自然。我们的评分可以是一个连续的值而不是离散的值,通过回归模型我们可以得到目标用户对某商品的预测打分。

    常用的回归推荐算法有Ridge回归,回归树和支持向量回归。

    3.5 用矩阵分解做协同过滤

    用矩阵分解做协同过滤是目前使用也很广泛的一种方法。由于传统的奇异值分解SVD要求矩阵不能有缺失数据,必须是稠密的,而我们的用户物品评分矩阵是一个很典型的稀疏矩阵,直接使用传统的SVD到协同过滤是比较复杂的。

    目前主流的矩阵分解推荐算法主要是SVD的一些变种,比如FunkSVD,BiasSVD和SVD++。这些算法和传统SVD的最大区别是不再要求将矩阵分解为 U Σ V T U\Sigma V^T UΣVT的形式,而变是两个低秩矩阵 P T Q P^TQ PTQ的乘积形式。。

    3.6 用神经网络做协同过滤

    用神经网络乃至深度学习做协同过滤应该是以后的一个趋势。目前比较主流的用两层神经网络来做推荐算法的是限制玻尔兹曼机(RBM)。在目前的Netflix算法比赛中, RBM算法的表现很牛。当然如果用深层的神经网络来做协同过滤应该会更好,大厂商用深度学习的方法来做协同过滤应该是将来的一个趋势。

    3.7 用图模型做协同过滤

    用图模型做协同过滤,则将用户之间的相似度放到了一个图模型里面去考虑,常用的算法是SimRank系列算法和马尔科夫模型算法。对于SimRank系列算法,它的基本思想是被相似对象引用的两个对象也具有相似性。算法思想有点类似于大名鼎鼎的PageRank。而马尔科夫模型算法当然是基于马尔科夫链了,它的基本思想是基于传导性来找出普通距离度量算法难以找出的相似性。后续我会专门开篇来讲讲SimRank系列算法。

    3.8 用隐语义模型做协同过滤

    隐语义模型主要是基于NLP的,涉及到对用户行为的语义分析来做评分推荐,主要方法有隐性语义分析LSA和隐含狄利克雷分布LDA,这些等讲NLP的再专门讲。

    4. 协同过滤的一些新方向

    当然推荐算法的变革也在进行中,就算是最火爆的基于逻辑回归推荐算法也在面临被取代。哪些算法可能取代逻辑回归之类的传统协同过滤呢?下面是我的理解:

    a) 基于集成学习的方法和混合推荐:这个和混合推荐也靠在一起了。由于集成学习的成熟,在推荐算法上也有较好的表现。一个可能取代逻辑回归的算法是GBDT。目前GBDT在很多算法比赛都有好的表现,而有工业级的并行化实现类库。

    b)基于矩阵分解的方法:矩阵分解,由于方法简单,一直受到青睐。目前开始渐渐流行的矩阵分解方法有分解机(Factorization Machine)和张量分解(Tensor Factorization)。

    c) 基于深度学习的方法:目前两层的神经网络RBM都已经有非常好的推荐算法效果,而随着深度学习和多层神经网络的兴起,以后可能推荐算法就是深度学习的天下了?目前看最火爆的是基于CNN和RNN的推荐算法。

    5. 协同过滤总结

    协同过滤作为一种经典的推荐算法种类,在工业界应用广泛,它的优点很多,模型通用性强,不需要太多对应数据领域的专业知识,工程实现简单,效果也不错。这些都是它流行的原因。

    当然,协同过滤也有些难以避免的难题,比如令人头疼的“冷启动”问题,我们没有新用户任何数据的时候,无法较好的为新用户推荐物品。同时也没有考虑情景的差异,比如根据用户所在的场景和用户当前的情绪。当然,也无法得到一些小众的独特喜好,这块是基于内容的推荐比较擅长的。

    展开全文
  • 算法复杂度:是指算法在编写成可执行程序后,运行时所需要的资源,包括时间资源(运行算法耗费的时间)和内存资源(程序运行占用的内存大小)。它是一个衡量算法优劣的重要指标,按照所需资源的又细分为时间复杂度和...

    目录

    概念

    复杂度分析

    时间复杂度分析

    空间复杂度分析

    总结


    概念

    算法复杂度:是指算法在编写成可执行程序后,运行时所需要的资源,包括时间资源(运行算法耗费的时间)和内存资源(程序运行占用的内存大小)。它是一个衡量算法优劣的重要指标,按照所需资源的又细分为时间复杂度和空间复杂度。

    时间复杂度:运行算法所需的时间随着数据量变化关系,记做T(n),n为算法的规模。

    空间复杂度:一个算法在运行过程中临时占用存储空间大小的量度,记做S(n),n为算法的规模。

    大O表示法:表示算法时间和空间复杂度的符号,通常表示为记做S(n)=O(f(n)),T(n)= O(f(n)),n为数据的规模,f(n)通常是一个函数,比如f(n)=2n+1;f(n)=n^2;f(n)=logn等等。而T(n)一般也是一个函数以数学来说,算法运行时间和n的对应关系就是一个函数曲线,随着n逐渐增大到很大很大,除去影响该曲线主要走势的的一些因素,比如函数中的常量,系数,提取出核心因素次方,开方,对数,这个核心因素所表示的函数形式成为该算法的渐进时间空间复杂度或渐进时间复杂度,又简称时间复杂度和空间复杂度。

    复杂度分析

    数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,更省存储空间。所以执行效率是算法一个非常重要的考量指标。那如何来衡量你编写的算法代码的执行效率呢?这里就需要进行复杂度分析。

    事后统计法:一种在实际情况下不同环境运行测试代码,比较测试结果的方法。不过有一些局限性,一是测试结果依赖测试环境:硬件环境影响测试结果,比如Intel Core i9 处理器和 Intel Core i3 处理器差异,二是测试结果受数据规模影响:测试规模太小的可能无法真实反映算法的性能。

    因此,就产生了一种不用具体的测试数据,可以只需要粗略的估算算法性能的方法,这就是我们今天要说的空间复杂度和时间复杂度,对应的分析方法又可以划分时间复杂度分析法,空间复杂度分析法。

    时间复杂度分析

    在前面我们说过,时间复杂度的大O表示法为T(n)= O(f(n)),那么问题来了,这个公式是怎么得出来的呢,下面就来分析下。

    渐进时间复杂度官方定义:若存在函数 f(n),使得当n趋近于无穷大时,T(n)/ f(n)的极限值为不等于零的常数,则称 f(n)是T(n)的同数量级函数。记作 T(n)= O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。渐进时间复杂度用大写O来表示,所以也被称为大O表示法。

    那么,问题来了,一般我们可以粗略计算出数据量n和计算所需时间T的函数关系式,如何根据已知的函数关系式推出时间复杂度呢,推理规则重点如下:

    1. 如果运行时间是常数量级,就用1表示时间复杂度;
    2. 只保留时间函数中的最高阶项;
    3. 如果最高阶项存在,则省去最高阶项前面的系数。

     

    时间复杂度O(1):一个方法里有四条语句,假设执行每一条语句的时间都是t,则时间和数据n的关系 T=4t。也就是说无论n怎么增加,运算的时间都是4t。同样的一个方法中语句数量为k的方法,T=kt,kt的值必然是一个常数,和n没有关系,像这种被称为常量级,根据推导公式第一条,运算时间是常量,则该T=kt的同量级函数为f(n)=1,则时间复杂度T(n)=O(1);

        public void eat(int n){
           System.out.println("1111");
           System.out.println("2222");
           System.out.println("3333");
           System.out.println("4444");
        }

    以函数图展示则如下,Y轴是时间复杂度,X轴是数据n的变化

     时间复杂度O(n):假设执行一条语句的时间为t,执行一次循环的时间为3t,执行n次循环的时间3tn,执行一次方法的时间为T=3tn+t,根据公式二,存在最高阶项n,所以只保留最高阶项,T=3tn;根据公式三,去除最高阶项的系数3t,则最终得到其同量级函数f(n)=n,时间复杂度公式为T(n)=O(n);

    public void eat1(int n){
        System.out.println("000");
        for(int i=0; i<n; i++){;
            System.out.println("111");
            System.out.println("222");
            System.out.println("333");
        }
    }
    

    以函数图展示则如下,Y轴是时间复杂度,X轴是数据n的变化,任数据变化,时间固定为常量

    时间复杂度O(n²):假设执行一条语句的时间为t,则执行一次方法的时间T=t+n(3t+2tn),即T=t+3tn+2tn²,根据公式二出去t 3tn,根据公式三去除系数2t,最终得到同量级函数f(n)=n²;即时间复杂度T(n)=O(n²)

    public void eat1(int n){
        System.out.println("000");
        for(int i=0; i<n; i++){;
    
            System.out.println("111");
            System.out.println("222");
            System.out.println("333");
    
            for(int k=0; k<n; k++){;
                System.out.println("444");
                System.out.println("555");
            }
        }
    }

    对应的函数曲线如下:

    同理的,其他类型的时间复杂度函数如O(logn),O(2^n),O(n³)等就不再赘述了,直接上图:

     

    空间复杂度分析

    时间复杂度不是用来计算程序具体耗时的,空间复杂度也不是用来计算程序实际占用的空间的。空间复杂度是对一个算法在运行过程中临时占用存储空间大小的一个量度,同样反映的是一个趋势。空间复杂度常用的有O(1)、O(n)、O(n²),相对时间复杂度,常用的种类比较少。大多数情况下,算法的时间运行效率才是最重要的。只要算法占用的存储空间不要达到计算机无法接受的程度即可。所以,常常通过牺牲空间复杂度来换取算法更加高效的运行时间效率。

    算法在计算机存储器上占用的空间包括三个部分:

    输入输出:算法的输入输出数据所占用的存储空间是通过参数表由调用函数传递而来的,它不会随算法的不同而改变。

    算法本身:存储算法本身所占用的存储空间与算法的长短成正比,要压缩这部分存储空间,就必须编写出较短的算法。然而,算法想要实际应用需要根据需求采取不同的编程语言来实现,不同编程语言实现的代码长短差别很大,然而存储空间都在可接受范围之内。

    临时内存:临时内存是运行算法时临时占用的内存空间,分为两类。一类是占用固定内存大小,不随着问题规模变化而变化,一种是随着问题规模变化而变化。

    空间复杂度O(1):如下代码执行所需要的临时空间不随着变量n的大小而变化,即此空间复杂度为一个常量,代码中的 i、j、m 所分配的空间都不随着处理数据量变化,因此它的空间复杂度 S(n) = O(1);

    int i = 1;
    int j = 2;
    ++i;
    j++;
    int m = i + j;

    空间复杂度O(n):这段代码中,第一行new了一个数组出来,这个数据占用的大小为n,这段代码的2-6行,虽然有循环,但没有再分配新的空间,因此,这段代码的空间复杂度主要看第一行即可,即 S(n) = O(n)

    int[] aar = new int[n]
    for(i=1; i<=n; ++i)
    {
       j = i;j++;
    }

    总结

    算法的复杂度分为时间复杂度和空间复杂度,大多数情况下,更加注重时间复杂度。

    通常时间复杂度近似于算法运行时间时间曲线,在数据量或者说问题规模变得很大的时候,时间复杂度高的算法耗时就高,时间复杂度低的耗时就低,从最简答到最复杂依次为:O(1)<O(logn)<O(n)<O(n²)。时间复杂度的高的通常伴随着深层次的循环和递归。减少代码的循环层次可以降低时间复杂度。

    而复杂的程序代码,使用多层级的方式可以减少代码量,降低空间复杂度,层级少了较大可能需要多写代码,导致空间复杂度的提高,另外以我个人理解,对于空间的需求一般在算法初始化时就进行了预估和分配,在后续代码中虽然会产生少量临时变量,但是关键还是看初始化部分,这可能就是空间复杂度的分类比时间复杂度分类少得多。

    辛辛苦苦敲了几天,拼拼凑凑加理解也算告一段落了,感谢读者的阅读,如有出入,请指正,谢谢!

    展开全文
  • 算法复杂度分为时间复杂度和空间复杂度。 时间复杂度用于度量算法执行的时间长短;而空间复杂度则是用于度量算法所需存储空间的大小。 目录 时间复杂度 1.时间频度 2.计算方法 3.分类 空间复杂度 算法时间...
  • 按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相...
  • 算法时间复杂度

    万次阅读 多人点赞 2018-11-23 00:23:58
    一般地,如果一个数列第2项起,后一项与它的前一项的差等于同一个常数,那麽这个数列就叫做等差数列。 这个常数叫做等差数列的公差,公差通常用字母d表示。 例1:初识。 - {1,3,5,7,9} 公差为2 - {5,15,...
  • 目前推荐系统研宄的主要趋势是单一的、独立的推荐系统算法逐渐向组合多种推荐算法形成混合式的综合推荐算法方向发展,越来越多的结合用户标签数据、社交网络数据、下文信息、地理位置信息。群体推荐也成为一个...
  • 机器学习算法 综述(入门)

    万次阅读 多人点赞 2019-06-16 21:59:28
    学习了一个学期机器学习算法什么都不懂到对十个机器学习算法有一定的了解,下面总结一下十大机器学习算法从算法的概念、原理、优点、缺点、应用等方面来总结,如果有错误的地方,欢迎指出。 目录 1.决策树...
  • 图像去噪算法综述

    万次阅读 多人点赞 2019-03-22 16:43:18
    图像降噪算法总结 分析各种算法的优点和缺点 1、BM3D 降噪 2、DCT 降噪 3、PCA 降噪 4、K-SVD 降噪 5、非局部均值降噪 6、WNNM 降噪 7、基于主成分分析和双边滤波的图像降噪算法 8、小波变换 9、小波阈值降噪 10、...
  • 由于是第一次写博客,不会排版,因此,可以链接中的原文档。 对于插补技术的理解与认识 1 插补及其算法概述 1.1 什么是插补 CNC系统之所以能够控制刀具中心相对于工件以一定的速度和轨迹运动,切削出工件的轮廓,...
  • 图像识别算法

    万次阅读 多人点赞 2019-08-15 17:36:40
    图像特征提取是图像分析与图像识别的前提,它是将高维的图像数据进行简化表达最有效的方式,一幅图像的的数据矩阵中,我们不出任何信息,所以我们必须根据这些数据提取出图像中的关键信息,一些基本元件以及它们...
  • 图像融合算法(像素级)

    万次阅读 多人点赞 2019-10-25 09:26:06
    目前为止,多尺度几何分析方法主要可以分为两:自适应和非自适应多尺度几何分析方法。自适应多尺度几何分析方法是指图像变换的基函数随着图像内容的变化而变化,其主要有条带波(Bandelet)、楔形波(Wedgelet)、...
  • 数据挖掘算法所依托的数理基础角度归类,目前数据挖掘算法主要分为三大:机器学习方法、统计方法与神经网络方法。机器学习方法分为决策树、基于范例学习、规则归纳与遗传算法等:统计方法细分为回归分析、时间序列...
  • 深度学习之美——算法的分类

    千次阅读 2018-08-25 18:51:35
    机器学习大致可分为三大:监督学习、半监督学习、非监督学习 监督学习 所有的监督学习基本是“分类”的代名词,它有标签的训练数据中学习模型,然后给定某个新数据,利用模型预测新数据的标签。这里的标签,...
  • 常见的加密算法分类及介绍

    千次阅读 2021-03-04 14:20:00
    1.加密算法的分类 根本不考虑解密问题; 私用密钥加密技术:对称式加密(Symmetric Key Encryption):对称式加密方式对加密和解密使用相同的密钥。通常,这种加密方式在应用中难以实施,因为用同一种安全方式共享...
  • 最优化算法概述以及常见分类

    千次阅读 2020-07-10 09:57:58
    1 最优化问题概述 通俗的来说,最优化问题就是在一定的条件约束下,使得效果最好。最优化问题是一种数学问题,是研究在给定的约束之下...最优化问题可以分为函数优化问题和组合优化问题。函数优化问题的对象是一
  • 时间序列】DTW算法详解

    千次阅读 2020-12-14 18:22:00
    作者| 追光者研究| 机器学习与时间序列出品 | AI蜗牛车1.DTW1.1 时序相似度在时间序列数据中,一个常见的任务是比较个序列的相似度,作为分类或聚类任务的基础。那么,时间序...
  • 算法设计与分析】03 算法及其时间复杂度

    千次阅读 热门讨论 2019-06-29 00:39:02
    在学习算法时间复杂度之前,需要了解下面5条概念 什么是算法时间复杂度? 针对指定基本运算,计数算法所做的运算次数。 什么是基本运算?比较、加法、乘法、置指针、交换...文章目录1 算法时间复杂度1.1...
  • 算法的分类

    千次阅读 2011-11-21 16:56:59
    按照实现方式分类,可以将算法分为递归算法、迭代算法、逻辑算法、串行算法和并行算法和分布式算法、确定性算法和非确定性算法、精确算法和近似算法等。 递归算法(recursion algorithms)是一种不断调用自身直到...
  • Java 算法时间复杂度和空间复杂度

    千次阅读 2017-06-09 14:09:51
    2.2:算法执行时间需要依据该算法编制的程序在计算机执行运行时所消耗的时间来度量,度量方法有种,事后统计方法和事前分析估算方法,因为事后统计方法更多的依赖计算机的硬件,软件等环境因素,有时容易掩盖...
  • 基于物品的协同过滤算法实现图书推荐系统

    万次阅读 多人点赞 2019-09-14 21:20:24
    摘 要 在当下这个信息爆炸的时代,各种各样的书籍条目繁多,浩如烟海;相应地,为满足用户需求,电商平台需要推荐系统来帮助用户找到自己可能需要的书籍。...在该系统中,主要功能分为用户功能和图书推荐功能...
  • 浅谈“优化算法大分类”

    千次阅读 2019-03-22 13:10:02
    算法其实不好分类,因为概念有点宽泛。...但是如果限定只在优化算法中做...可以依据“理论体系”是否完善将算法分为“理论体系内算法”和“理论体系外算法”。根据是否使用目标函数“梯度”信息又可分为“连续优化...
  • 计算机10大经典算法

    万次阅读 多人点赞 2018-06-08 13:42:58
    算法一:快速排序法   快速排序是由东尼·霍尔所发展的一种排序...事实,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构很有效率地被实现出来。 快速...
  • 朴素贝叶斯算法实现分类问题(三)matlab代码

    万次阅读 多人点赞 2019-02-19 15:57:01
     %分别计算概率y1=p(y=1)、y2=p(y=2)、y3=p(y=3)的估计值  y1=count1/m1;  y2=count2/m1;  y3=count3/m1;  %y_1(i,j)表示在第一(y=1)的情况下,第i个属性取值为j的概率估计值  %y_2(i,j)表示在第二...
  • 机器人控制算法

    千次阅读 多人点赞 2019-09-11 16:43:20
    机器人的算法大方向可以分为感知算法与控制算法,感知算法一般是环境感知、路径规划,而控制算法一般分为决策算法、运动控制算法。环境感知算法获取环境各种数据,通常指以机器人的视觉所见的图像识别等,当然还有...
  • 目标跟踪算法的分类(一)

    万次阅读 多人点赞 2015-09-14 11:41:37
    运动目标跟踪主流算法大致分类 主要基于种思路: a)不依赖于先验知识,直接图像序列中检测到运动目标,并进行目标识别,最终跟踪感兴趣的运动目标; b)依赖于目标的先验知识,首先为运动目标建模,然后在图像...
  • Pioneer作为一个通用的综合测试平台,仅需增加单独的音频MOS盒配件,即可平滑升级到MOS测试功能,其结构图如下: ​ 图7 Pioneer MOS测试结构图 Pioneer路测系统的主要功能分为两个方面:一方面是记录测试时的无线...
  • 相位解包裹(四)两类相位解包裹算法

    千次阅读 热门讨论 2020-06-02 09:34:43
    简单讨论两类相位解包裹算法,空间相位解包裹和时间相位解包裹
  • 打开微信扫一扫,关注微信公众号【数据与算法联盟】 转载请注明出处:... 机器学习算法可以按照不同的标准进行分类。比如按函数f(X)的不同,机器学习算法可以分为线性模型和非线性模型;按照学习准则的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 301,483
精华内容 120,593
关键字:

从计算时间上看算法分为两类