从人人上看到的(链接)
下面是Christoph Koutschan列出来的32类计算机与数学领域最为重要的算法(按字符顺序排列)。覆盖的面很广,评价很精准。
-
A* search algorithm
Graph search algorithm that finds a path from a given initial node to a given goal node. It employs a heuristic estimate that ranks each node by an estimate of the best route that goes through that node. It visits the nodes in order of this heuristic estimate. The A* algorithm is therefore an example of best-first search. 图搜索方法,从一个节点到另一个节点的最短路径。A*使用启发式搜索,在每一步会做一个全局的评价。 -
Beam Search
Beam search is a search algorithm that is an optimization of best-first search. Like best-first search, it uses a heuristic function to evaluate the promise of each node it examines. Beam search, however, only unfolds the first m most promising nodes at each depth, where m is a fixed number, the beam width. 同样使用启发信息进行搜索,不过每一步的备选节点有一个限定范围,也就是带宽 -
Binary search
Technique for finding a particular value in a linear array, by ruling out half of the data at each step. 我们常说的二分法。 -
Branch and bound
A general algorithmic method for finding optimal solutions of various optimization problems, especially in discrete and combinatorial optimization. 分枝限定法,用于寻找很多最优化问题的解。一般是列举所有可能的解,然后根据上下界的方式批量筛选。 -
Buchberger's algorithm
In computational algebraic geometry and computational commutative algebra, Buchberger's algorithm is a method of transforming a given set of generators for a polynomial ideal into a Gröbner basis with respect to some monomial order. One can view it as a generalization of the Euclidean algorithm for univariate gcd computation and of Gaussian elimination for linear systems. 一种数学算法,对多项式的项进行某种方式的排序,然后进行约简,从而得到一个简化的多项式,也叫做它的Grobner基,并且进行系统求解。是欧几里德算法针对多变量最大公约数或线性系统高斯消元法的泛化。 -
Data compression
Data compression or source coding is the process of encoding information using fewer bits (or other information-bearing units) than an unencoded representation would use through use of specific encoding schemes. 数据压缩,用少量的编码长度表示丰富的信息。 -
Diffie-Hellman key exchange
Cryptographic protocol which allows two parties that have no prior knowledge of each other to jointly establish a shared secret key over an insecure communications channel. This key can then be used to encrypt subsequent communications using a symmetric key cipher. 一种加密协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。 -
Dijkstra's algorithm
Algorithm that solves the single-source shortest path problem for a directed graph with nonnegative edge weights. 太经典了,本科就学过。有向图最短路径搜索。 -
Discrete differentiation
I.e., the formula f'(x) = (f(x+h) - f(x-h)) / 2h. 微分 -
Dynamic programming
Dynamic programming is a method for reducing the runtime of algorithms exhibiting the properties of overlapping subproblems and optimal substructure. 动态规划。通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 -
Euclidean algorithm
Algorithm to determine the greatest common divisor (gcd) of two integers. It is one of the oldest algorithms known, since it appeared in Euclid's Elements around 300 BC. The algorithm does not require factoring the two integers. 欧几里德算法,用来求解最大公约数,中学时候曾经学过的“辗转相除法”。 -
Expectation-maximization algorithm (EM-Training)
In statistical computing, an expectation-maximization (EM) algorithm is an algorithm for finding maximum likelihood estimates of parameters in probabilistic models, where the model depends on unobserved latent variables. EM alternates between performing an expectation step, which computes the expected value of the latent variables, and a maximization step, which computes the maximum likelihood estimates of the parameters given the data and setting the latent variables to their expectation. EM算法,统计学习里面经常用到,分为期望计算和最大化两步,循环迭代进行。最终计算出参数的最大似然估计。 -
Fast Fourier transform (FFT)
Efficient algorithm to compute the discrete Fourier transform (DFT) and its inverse. FFTs are of great importance to a wide variety of applications, from digital signal processing to solving partial differential equations to algorithms for quickly multiplying large integers. 快速傅里叶变换,用途很广 -
Gradient descent
Gradient descent is an optimization algorithm that approaches a local minimum of a function by taking steps proportional to the negative of the gradient (or the approximate gradient) of the function at the current point. If instead one takes steps proportional to the gradient, one approaches a local maximum of that function; the procedure is then known as gradient ascent. 梯度下降,凸优化的基本方法 -
Hashing
A function for summarizing or probabilistically identifying data. Typically this means one applies a mathematical formula to the data, producing a string which is probably more or less unique to that data. The string is much shorter than the original data, but can be used to uniquely identify it. 哈希,数据结构学过。通过一种数学变换,或快速查表,将数据进行较短的编码。 -
Heaps (heap sort)
In computer science a heap is a specialized tree-based data structure. Heaps are favourite data structures for many applications: Heap sort, selection algorithms (finding the min, max or both of them, median or even any kth element in sublinear time), graph algorithms. 堆,可以用在多种算法的快速实现里的数据结构 -
Karatsuba multiplication
For systems that need to multiply numbers in the range of several thousand digits, such as computer algebra systems and bignum libraries, long multiplication is too slow. These systems employ Karatsuba multiplication, which was discovered in 1962. 开始以为是个日本人名字,后来发现不是。用来进行大数据相乘的一种方法。 -
LLL algorithm
The Lenstra-Lenstra-Lovasz lattice reduction (LLL) algorithm is an algorithm which, given a lattice basis as input, outputs a basis with short, nearly orthogonal vectors. The LLL algorithm has found numerous applications in cryptanalysis of public-key encryption schemes: knapsack cryptosystems, RSA with particular settings, and so forth. -
Maximum flow
The maximum flow problem is finding a legal flow through a flow network that is maximal. Sometimes it is defined as finding the value of such a flow. The maximum flow problem can be seen as special case of more complex network flow problems. The maximal flow is related to the cuts in a network by the Max-flow min-cut theorem. The Ford-Fulkerson algorithm computes the maximum flow in a flow network. 最大流,用来寻找图中的最小代价切割。Graphcut的基础 -
Merge sort
A sorting algorithm for rearranging lists (or any other data structure that can only be accessed sequentially, e.g. file streams) into a specified order. 一种对序贯数据的排序算法 -
Newton's method
Efficient algorithm for finding approximations to the zeros (or roots) of a real-valued function. Newton's method is also a well-known algorithm for finding roots of equations in one or more dimensions. It can also be used to find local maxima and local minima of functions. 牛顿法,和梯度下降有点类似,可以用来寻找局部极值 -
Q-learning
Q-learning is a reinforcement learning technique that works by learning an action-value function that gives the expected utility of taking a given action in a given state and following a fixed policy thereafter. A strength with Q-learning is that it is able to compare the expected utility of the available actions without requiring a model of the environment. 增强学习中一种经典的算法 -
Quadratic sieve
The quadratic sieve algorithm (QS) is a modern integer factorization algorithm and, in practice, the second fastest method known (after the number field sieve, NFS). It is still the fastest for integers under 110 decimal digits or so, and is considerably simpler than the number field sieve. 二次筛法(Quadratic Seive)是由Pomerance[142] 于1982 年提出的, 直到1993 年仍然是世界上渐进最快的通用大整数因子分解方法, 第一的位置后来被数域筛 法(NFS)所取代, 不过对于120 位以下的整数, 二次筛法还是要比数域筛法快一些. -
RANSAC
RANSAC is an abbreviation for "RANdom SAmple Consensus". It is an algorithm to estimate parameters of a mathematical model from a set of observed data which contains "outliers". A basic assumption is that the data consists of "inliers", i. e., data points which can be explained by some set of model parameters, and "outliers" which are data points that do not fit the model. 在数据分析中很重要的方法,可以用来排除离群值的干扰。 -
RSA
Algorithm for public-key encryption. It was the first algorithm known to be suitable for signing as well as encryption. RSA is still widely used in electronic commerce protocols, and is believed to be secure given sufficiently long keys. 一种公共加密算法 -
Schönhage-Strassen algorithm
In mathematics, the Schönhage-Strassen algorithm is an asymptotically fast method for multiplication of large integer numbers. The run-time is O(N log(N) log(log(N))). The algorithm uses Fast Fourier Transforms in rings. 也是一种大数据相乘的算法 -
Simplex algorithm
In mathematical optimization theory, the simplex algorithm a popular technique for numerical solution of the linear programming problem. A linear programming problem consists of a collection of linear inequalities on a number of real variables and a fixed linear functional which is to be maximized (or minimized). 单纯形方法,求解线性规划时候用到。 -
Singular value decomposition (SVD)
In linear algebra, SVD is an important factorization of a rectangular real or complex matrix, with several applications in signal processing and statistics, e.g., computing the pseudoinverse of a matrix (to solve the least squares problem), solving overdetermined linear systems, matrix approximation, numerical weather prediction. 奇异值分解,一种经典的谱分解方法,有着极为广泛的用途。参见博客的另一篇文章:SVD分解的理解 -
Solving a system of linear equations
Systems of linear equations belong to the oldest problems in mathematics and they have many applications, such as in digital signal processing, estimation, forecasting and generally in linear programming and in the approximation of non-linear problems in numerical analysis. An efficient way to solve systems of linear equations is given by the Gauss-Jordan elimination or by the Cholesky decomposition. 线性系统求解,线性代数里的基本内容 -
Structure tensor (原文有误)
In pattern recognition: Computes a measure for every pixel which tells you if this pixel is located in a homogenous region, if it belongs to an edge, or if it is a vertex. 结构张量,计算机视觉中,用于描述像素点结构化强度的,一般通过梯度计算得到。实际上就是二阶偏导数,一个二维方阵。个人觉得这个称不上一个算法。 -
Union-find
Given a set of elements, it is often useful to partition them into a number of separate, non-overlapping groups. A disjoint-set data structure is a data structure that keeps track of such a partitioning. A union-find algorithm is an algorithm that performs two useful operations on such a data structure:
Find: Determine which group a particular element is in.
Union: Combine or merge two groups into a single group. -
Viterbi algorithm
Dynamic programming algorithm for finding the most likely sequence of hidden states - known as the Viterbi path - that result in a sequence of observed events, especially in the context of hidden Markov models. 维特比译码法。隐马尔可夫模型的求解中用的很多。
Daniel Lemire在看到这个名单之后,列出了他心中的Top 5:
-
Binary search is the first non-trivial algorithm I remember learning.
-
The Fast Fourier transform (FFT) is an amazing algorithm. Combined with the convolution theorem, it lets you do magic.
-
While hashing is not an algorithm, it is one of the most powerful and useful idea in Computer Science. It takes minutes to explain it, but years to master.
-
Merge sort is the most elegant sorting algorithm. You can explain it in three sentences to anyone.
-
While not an algorithm per se, the Singular Value Decomposition (SVD) is the most important Linear Algebra concept I don’t remember learning as an undergraduate. (And yes, I went to agood school. And yes, I was an A student.) It can help you invert singular matrices and do other similar magic..
-
-