首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏技术分享

    算法】----BF算法&KMP算法

    我们今天所讨论的两个算法就是有关该过程的算法。 事实上,对于检索,无非就是两个字符串的匹配过程,模式串是你想要匹配的串,主串是你搜索所在串。 BF算法和KMP算法是较为著名的模式匹配算法,接下来作出详细介绍。 BF算法 BF算法(Brute-Force)也称为暴力算法,其核心原理是逐个比较文本串和模式串的字符,如果匹配失败,则通过向右移动模式串的位置,再次进行比较。 在实际情况下,BF算法的效率并不高,特别是当文本串T和模式串P的长度很大时。对于较长的文本串和模式串,BF算法的时间复杂度可能会导致性能问题。 答案就是KMP算法。 KMP算法 KMP算法的核心思想是利用模式串自身的特点来加速匹配过程,避免重复匹配。

    57810编辑于 2024-06-18
  • 来自专栏半生瓜のblog

    算法】分治算法

    分治算法 将一个规模为N的问题分解为k个较小的子问题,这些子问题遵循的处理方式就是互相独立且与原问题相同。 两部分组成: 分(divide):递归解决较小的问题。

    65710编辑于 2023-05-13
  • 来自专栏数据科学与人工智能

    算法】GBDT算法

    小编邀请您,先思考: 1 GBDT算法的原理是什么? 2 GBDT算法如何做正则化处理? GBDT在BAT大厂中也有广泛的应用,假如要选择3个最重要的机器学习算法的话,个人认为GBDT应该占一席之地。 分类算法 GBDT的分类算法从思想上和GBDT的回归算法没有区别,但是由于样本输出不是连续的值,而是离散的类别,导致我们无法直接从输出类别去拟合类别输出的误差。 除了负梯度计算和叶子节点的最佳残差拟合的线性搜索,二元GBDT分类和GBDT回归算法过程相同。 多元分类算法 多元GBDT要比二元GBDT复杂一些,对应的是多元逻辑回归和二元逻辑回归的复杂度差别。 由于GBDT的卓越性能,只要是研究机器学习都应该掌握这个算法,包括背后的原理和应用调参方法。目前GBDT的算法比较好的库是xgboost。当然scikit-learn也可以。

    1.6K80发布于 2018-03-27
  • 来自专栏用代码征服天下

    算法——查找算法

    1、顺序查找: 定义: 顺序查找(Sequential Search) 又叫线性查找,是最基本的查找技术,它的查找过程是:从表中第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录;如果直到最后一个(或第一个)记录,其关键字和给定值比较都不等时,则表中没有所查的记录,查找不成功。 代码: import java.util.Scanner; import org.junit.jupiter.api.Test; /** * 顺序查找

    1.1K10编辑于 2022-05-09
  • 来自专栏PPV课数据科学社区

    算法】PCA算法

    小编邀请您,先思考: 1 PCA算法的原理是什么? 2 PCA算法有什么应用?

    2K40发布于 2018-04-18
  • 来自专栏用代码征服天下

    算法——排序算法

     基本思想:现在有一个数组arr= {12,35,99,18,76},需要将其从小到大排序

    1K10编辑于 2022-05-09
  • 来自专栏数据科学与人工智能

    算法】xgboost算法

    小编邀请您,先思考: 1 XGBoost和GDBT算法有什么差异? XGBoost的全称是 eXtremeGradient Boosting,2014年2月诞生的专注于梯度提升算法的机器学习函数库,作者为华盛顿大学研究机器学习的大牛——陈天奇。 xgboost问世后,因其优良的学习效果以及高效的训练速度而获得广泛的关注,并在各种算法大赛上大放光彩。 ? 具体算法如下: 输入:训练集 ? 输出:提升树 步骤: (1)初始化 (2) 对m=1,2,3……M a)计算残差 ?

    2K90发布于 2018-03-27
  • 来自专栏Super 前端

    算法--分治算法

    本文链接:https://ligang.blog.csdn.net/article/details/83866378 分治算法 分而治之,把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题 经典递归案例: 示例: 归并排序 详见:javascript排序算法 示例: 二分查找法(二分法) 二分查找也称折半查找,其要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

    88631发布于 2019-08-15
  • 来自专栏半生瓜のblog

    算法】查找算法

    查找算法 查找的定义 查找:又称检索或查询,是指在查找表中找出满足一定条件的结点或记录对应的操作。 查找效率:查找算法中的基本运算是通过记录的关键字与给定值进行比较,所以查找的效率通常取决于比较所花的时间,而时间取决于比较的次数。通常以关键字与给定值进行比较的记录个数的平均值来计算。 数组是特殊的块索引(一个块一个元素): [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xDbRyWBM-1635489015712)(查找算法.assets/image- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6LawbrgF-1635489015715)(查找算法.assets/image-20211028180620292.png )] 分块查找的算法分两步进行,首先确定所查找的节点属于哪一块,即在索引表中查找其所在的块,然后在块内查找待查询的数据。

    1K20编辑于 2023-05-13
  • 来自专栏数据科学与人工智能

    算法】SVD算法

    2 SVD算法与PCA算法有什么关联? 3 SVD算法有什么应用? 4 SVD算法如何优化? 前言 奇异值分解(Singular Value Decomposition,简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域,是很多机器学习算法的基石 本文就对SVD的原理做一个总结,并讨论在在PCA降维算法中是如何运用运用SVD的。 也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI)。 SVD小结 SVD作为一个很基本的算法,在很多机器学习算法中都有它的身影,特别是在现在的大数据时代,由于SVD可以实现并行化,因此更是大展身手。

    2K121发布于 2018-03-27
  • 来自专栏数据科学与人工智能

    算法】PCA算法

    小编邀请您,先思考: 1 PCA算法的原理是什么? 2 PCA算法有什么应用?

    1.9K60发布于 2018-03-27
  • 来自专栏数据科学与人工智能

    算法】Adaboost 算法

    小编邀请您,先思考: 1 Adaboost算法的原理是什么 ? 2 Adaboost算法如何实现? 是一个加法模型,而Adaboost算法其实是前向分步算法的特例。那么问题来了,什么是加法模型,什么又是前向分步算法呢? 3.1 加法模型和前向分步算法 如下图所示的便是一个加法模型 ? 这个优化方法便就是所谓的前向分步算法。 下面,咱们来具体看下前向分步算法算法流程: 输入:训练数据集 ? 损失函数: ? 基函数集: ? 输出:加法模型 ? 3.2 前向分步算法与Adaboost的关系 在上文第2节最后,我们说Adaboost 还有另外一种理解,即可以认为其模型是加法模型、损失函数为指数函数、学习算法为前向分步算法的二类分类学习方法。 前向分步算法逐一学习基函数的过程,与Adaboost算法逐一学习各个基本分类器的过程一致。 下面,咱们便来证明:当前向分步算法的损失函数是指数损失函数 ?

    2.5K140发布于 2018-03-27
  • 来自专栏常用算法模板

    算法基础-基础算法

    for (auto x : a) cout << x << " "; return 0; } ---- 02.第k个数 题目描述 给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 这里可以运用我们性价比最高,代码最好写,效率特高的归并排序算法 归并排序中的左数组和右数组在内部都是有序且相对原数组中的位置都是从左到右的,我们可以利用这一性质当我们判断左数组中的某一个元素(下标为i) l = mid + 1; // r = mid - 1; } // 如果是整数二分最终得到的l和r必定相等而且满足 check(l) 且 check(r); 当然本题用c++的算法库的二分查找函数 r + 1 >> 1; if(a[mid] <= x) l = mid; else r = mid - 1; } cout << l << endl; } } 算法库二分 l); return 0; } 高精度 01.高精度加法 02.高精度减法 03.高精度乘法 04.高精度除法 前缀和与差分 01.前缀和 02.子矩阵的和 03.差分 04.差分矩阵 双指针算法

    1.8K40编辑于 2022-10-31
  • 来自专栏目标检测和深度学习

    排序算法算法对比

    image 3.平均时间复杂度:O(n2) 4.优化: 针对问题: 数据的顺序排好之后,冒泡算法仍然会继续进行下一轮的比较,直到arr.length-1次,后面的比较没有意义的。 tmp else: break return arr 希尔排序 1.基本思想: 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序 ;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 self.quick_sort(arr, left, i - 1) self.quick_sort(arr, i + 1, right) return arr 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法 这也是基数排序的魅力所在,基数排序可以理解成是建立在“计数排序”的基础之上的一种排序算法

    90760发布于 2018-04-18
  • 来自专栏二猫の家

    算法__N皇后算法

    n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

    56121编辑于 2022-11-30
  • 来自专栏半生瓜のblog

    算法】分支定界算法

    分支定界算法 概念 分支定界(branch and bound)算法是一种在问题的解空间上搜索问题的解的方法。但与回溯算法不同,分支定界算法采用广度优先或最小耗费优先的方法搜索解空间树。 并且,在分支定界算法中,每一个活结点只有一次机会称为扩展结点。 ​ 利用分支定界算法对问题的解空间树进行搜索,它的搜索策略是: 产生当前扩展结点的所有孩子结点。 从活结点表中选择下一个活结点作为新的扩展结点,根据选择的方式不同,分支定界算法通常可以分为两种形式。 最小耗费或最大收益分支定界算法:在这种情况下,每个结点都有一个耗费或收益。 ---- 补充: A *算法(最小消耗优先法搜索解空间树)(未完待续…) ----

    41630编辑于 2023-05-13
  • 来自专栏C++/Linux

    算法专题】递归算法

    题目:在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制: (1) 每次只能移动一个盘子; (2) 盘子只能从柱子顶端滑出移到下一根柱子; (3) 盘子只能叠在比它大的盘子上。

    36110编辑于 2024-03-01
  • 来自专栏cloudskyme

    算法——递推算法

    递推算法是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法。 递推算法分为顺推和逆推两种。 相对于递归算法,递推算法免除了数据进出栈的过程,也就是说,不需要函数不断的向边界值靠拢,而直接从边界出发,直到求出函数值. ,它的作用不能忽视.所以,在把握这两种算法的时候应该特别注意。 \n",fn);  //输出结果    return 0; } java递归算法分析 递归算法分析:就是把复杂的问题分解为若干个相对简单的子问题,一直分解下去,直到子问题有答案为止,也就是说到了递推的出口 递归算法要注意的两点:       (1) 递归就是在方法里调用自己;       (2) 在使用递归算法时,必须要有一个明确的递归结束条件,称为递归出口。

    2K80发布于 2018-03-20
  • 来自专栏全栈程序员必看

    Topk算法_topn算法

    topK算法 思路1:快速选择算法 可以采用快速选择算法,借助快排,设mid为每次划分中间结果,每次划分完之后如果mid==k,则说明序列刚刚好,第k位置和他前面的位置都是前K大的数,如果mid <

    65320编辑于 2022-09-21
  • 来自专栏ellipse数据库技术

    算法算法分析

    一、什么叫算法 算法(Algorithm):是对特定问题求解方法或步骤的一种描述。 一个计算机程序是对一个算法使用某种程序设计语言的具体实现。 算法一般具有以下五个特性: 1、输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。 二、什么叫好算法 评价一个好的算法有以下几个标准: 正确性(Correctness):算法应满足具体问题的需求。 通用性(Generality):算法应具有一般性 ,即算法的处理结果对于一般的数据集合都成立。 效率与存储空间需求:效率指的是算法执行的时间;存储空间需求指算法执行过程中所需要的最大存储空间。 三、算法的时间复杂度 算法中基本操作重复执行的次数是问题规模n的某个函数,其时间量度记作:T(n)=O(f(n)),称作算法的渐近时间复杂度(Asymptotic Time complexity),简称时间复杂度

    1.3K20发布于 2019-08-16
领券