大数据最核心的关键技术——32个算法,记得收藏!

  • 时间:
  • 浏览:2

  16、堆排序(Heaps)。

  26、Sch?nhage-Strassen算法——在数学中,Sch?nhage-Strassen算法是用来完成大整数的乘法的快速渐近算法。其算法繁杂度为:O(N log(N) log(log(N))),该算法使用了傅里叶变换。

  2、集束搜索(叫石定向搜索,Beam Search)——最佳优先搜索算法的优化。使用启发式函数评估它检查的每个节点的能力。不过,集束搜索不都都可不里能 在每个深度1中发现最前面的m个最符合条件的节点,m是固定数字——集束的深度1。

  28、奇异值分解(Singular value decomposition,简称SVD)——在线性代数中,SVD是重要的实数或复数矩阵的分解方法,在信号解决和统计含高多种应用,比如计算矩阵的伪逆矩阵(以求解最小二乘法问题)、解决超定线性系统(overdetermined linear systems)、矩阵逼近、数值天气预报等等。

  4、分支界定算法(Branch and Bound)——在多种最优化问题中寻找特定最优化解决方案的算法,有点儿是针对离散、组合的最优化。

—图形搜索算法,从给定起点到给定终点计算出路径。其中使用了并算是启发式的估算,为每个节点估算通过该节点的最佳路径,并以之为各个地点排定次序。算法以得到的次序访问那些节点。否则,A*搜索算法是最佳优先搜索的范例。

  15、哈希算法(Hashing)。

  10、动态规划算法(Dynamic Programming)——展示互相覆盖的子问题和最优子架构算法

  12、期望-最大算法(Expectation-maximization algorithm,叫石EM-Training)——在统计计算中,期望-最大算法在概率模型中寻找将会性最大的参数估算值,其中模型依赖于未发现的潜在变量。EM在另另有一一三个步骤中交替计算,第一步是计算期望,利用对隐藏变量的现有估计值,计算其最大将会估计值;第二步是最大化,最大化在第一步上求得的最大将会值来计算参数的值。

  7、Diffie-Hellman密钥交换算法——并算是加密协议,允许双方在并且不了解对方的情况下,在不安全的通信信道中,并肩建立共享密钥。该密钥并且可与一另另有一一三个对称密码并肩,加密后续通讯。

  27、单纯型算法(Simplex Algorithm)——在数学的优化理论中,单纯型算法是常用的技术,用来找到线性规划问题的数值解。线性规划问题包括在一组实变量上的一系列线性不等式组,以及一另另有一一三个等候最大化(或最小化)的固定线性函数。

  25、RSA——公钥加密算法。首个适用于以签名作为加密的算法。RSA在电商行业中仍大规模使用,让当你们也相信它有足够安全长度的公钥。

  21、牛顿法(Newton's method)——求非线性方程(组)零点的并算是重要的迭代法。

  23、两次筛法(Quadratic Sieve)——现代整数因子分解算法,在实践中,是目前已知第二快的此类算法(仅次于数域筛法Number Field Sieve)。对于110位以下的十位整数,它仍是最快的,否则都认为它比数域筛法更简单。

  18、LLL算法(Lenstra-Lenstra-Lovasz lattice reduction)——以格规约(lattice)基数为输入,输出短正交向量基数。LLL算法在以下公共密钥加密方法含高血块使用:背包加密系统(knapsack)、有特定设置的RSA加密等等。

  5、Buchberger算法——并算是数学算法,可将其视为针对单变量最大公约数求解的欧几里得算法和线性系统中高斯消元法的泛化。

  13、快速傅里叶变换(Fast Fourier transform,FFT)——计算离散的傅里叶变换(DFT)及其反转。该算法应用范围很广,从数字信号解决到解决偏微分方程,到快速计算大整数乘积。

  20、合并排序(Merge Sort)。

  31、合并查找算法(Union-find)——给定一组元素,该算法常常用来把那些元素分为多个分离的、彼此不重合的组。不相交集(disjoint-set)的数据价值形式都都可不里能 跟踪那么 的切分方法。合并查找算法都都可不里能 在此种数据价值形式上完成另另有一一三个有用的操作:

  29、求解线性方程组(Solving a system of linear equations)——线性方程组是数学中最古老的问题,它们有统统应用,比如在数字信号解决、线性规划中的估算和预测、数值分析中的非线性问题逼近等等。求解线性方程组,都都可不里能 使用高斯—约当消去法(Gauss-Jordan elimination),或是柯列斯基分解( Cholesky decomposition)。

奥地利符号计算研究所的Christoph Koutschan博士在另一方的页面上发布了一篇文章,提到他做了一另另有一一三个调查,参与者大多数是计算机科学家,他请那些科学家投票选出最重要的算法,以下是这次调查的结果,按照英文名称字母顺序排序。

  合并:联合或合并另另有一一三个组为一另另有一一三个组。

  32、维特比算法(Viterbi algorithm)——寻找隐藏情况最有将会序列的动态规划算法,这种 序列被称为维特比路径,其结果是一系列都都可不里能 观察到的事件,有点儿是在隐藏的Markov模型中。

  11、欧几里得算法(Euclidean algorithm)——计算另另有一一三个整数的最大公约数。最古老的算法之一,出現在公元前80前欧几里得的《几何那么 》。

  22、Q-learning学习算法——这是并算是通过学习动作值函数(action-value function)完成的强化学习算法,函数采取在给定情况的给定动作,并计算出期望的效用价值,在此后遵循固定的策略。Q-leanring的优势是,在不时要环境模型的情况下,都都可不里能 对比可采纳行动的期望效用。

  24、RANSAC——是“RANdom SAmple Consensus”的缩写。该算法根据一系列观察得到的数据,数据中含高异常值,估算一另另有一一三个数学模型的参数值。其基本假设是:数据含高非异化值,也统统我都都可不里能 通过一些模型参数解释的值,异化值统统我那些不符合模型的数据点。

  以上统统我Christoph博士对于最重要的算法的调查结果。让当你们熟悉那些算法?又有那些算法是让当你们老会 使用的?

  6、数据压缩——采取特定编码方案,使用更少的字节数(或是一些信息承载单元)对信息编码的过程,又叫来源编码。

  17、Karatsuba乘法——时要完成上千位整数的乘法的系统中使用,比如计算机代数系统和大数系统线程池池库,将会使用长乘法,传输速率太慢。该算法发现于1962年。

  1、A* 搜索算法—

  14、梯度下降(Gradient descent)——并算是数学上的最优化算法。

  9、离散微分算法(Discrete differentiation)。

  8、Dijkstra算法——针对那么 负值权重边的有向图,计算其中的单并肩点最短算法。

  3、二分查找(Binary Search)——在线性数组中找特定值的算法,每个步骤添加一半不符合要求的数据。

  19、最大流量算法(Maximum flow)——该算法试图从一另另有一一三个流量网络中找到最大的流。它优势被定义为找到那么 一另另有一一三个流的值。最大流问题都都可不里能 看作更繁杂的网络流问题的特定情况。最大流与网络中的界面有关,这统统我最大流-最小截定理(Max-flow min-cut theorem)。Ford-Fulkerson 能找到一另另有一一三个流网络中的最大流。

  查找:判断某特定元素属于哪个组。

  80、Strukturtensor算法——应用于模式识别领域,为所有像素找出并算是计算方法,看看该像素算是处于同质区域( homogenous region),看看它算是属于边缘,还是是一另另有一一三个顶点。