From: InfoQ (No.: Infoqchina)
Links: http://www.infoq.com/cn/news/2012/08/32-most-important-algorithms
Dr. Christoph Koutschan, of the Austrian Institute for Symbolic Computing (research Institute for symbolic computation, or RISC), published an article on his own page, mentioning that he did a survey, Most of the participants were computer scientists, and he asked the scientists to vote for the most important algorithms, the results of which were sorted alphabetically by English name.
1, A * search algorithm -graphical search algorithm, from a given point of origin to a given endpoint to calculate the path. A heuristic estimate is used to estimate the optimal path through the node for each node and to prioritize each location. The algorithm accesses these nodes in the order in which they are obtained. Therefore, A * search algorithm is an example of a best-case-first search.
2, Cluster search (aka Directed Search, Beam Search)--optimization of the best priority search algorithm. Use heuristic functions to evaluate the ability of each node it examines. However, cluster search can only find the first m most eligible nodes in each depth, and M is a fixed number-the width of the cluster.
3, Binarysearch--The algorithm that finds a specific value in a linear array, each step removes half of the data that does not meet the requirements.
4. Branch definition algorithm (Branch and Bound)--The algorithm for finding a specific optimization solution in a variety of optimization problems, especially for discrete, combinatorial optimization.
5. Buchberger algorithm , a mathematical algorithm, can be regarded as the generalization of the Euclidean algorithm and the Gaussian elimination method in the linear system for the single variable greatest common divisor solution.
6, data compression -to take a specific coding scheme, the use of fewer bytes (or other information bearer unit) encoding the process of information, also called the source code.
7. Diffie-hellman key exchange Algorithm -a cryptographic protocol that allows both parties to jointly establish shared keys in unsecured communication channels without prior knowledge of each other. The key can then be encrypted with a symmetric password to encrypt the subsequent communication.
8, Dijkstra algorithm --for a directed graph with no negative weighted edge, the single starting point shortest algorithm is calculated.
9. Discrete differential algorithm (discrete differentiation)
10. Dynamic Programming algorithm (dynamical programming)--display sub-problem and optimal sub-architecture algorithm for mutual coverage
11, Euclidean algorithm (Euclidean algorithm)-Calculates the greatest common divisor of two integers. One of the oldest algorithms, appeared in 300 BC before the "geometry of the original".
12. Expectation-maximal algorithm (expectation-maximization algorithm, aka em-training)--in statistical calculation, the expectation-maximal algorithm looks for the most probable parameter estimate in the probability model, Where the model relies on potential variables that are not found. EM is calculated alternately in two steps, the first step is to compute the expectation, use the existing estimate of the hidden variable, calculate its maximum possible estimate, and the second step is to maximize the maximum possible value calculated at the first step to calculate the value of the parameter.
13. Fast Fourier transform (Fast Fourier transform,fft)-Calculates discrete Fourier transform (DFT) and its inversion. The algorithm has a wide range of applications, from digital signal processing to solving partial differential equations, to fast computing large integer product.
14, gradient descent (Gradient descent)--a mathematical optimization algorithm.
15. Hashing Algorithm (Hashing)
16. Heap sequencing (heaps)
17. Karatsuba multiplication -used in systems that require multiplication of thousands of integers, such as computer algebra systems and large-number libraries, if long multiplication is used, the speed is too slow. The algorithm was found in 1962.
18, LLL algorithm (Lenstra-lenstra-lovasz lattice reduction)-the lattice protocol (lattice) cardinality as input, the output of short orthogonal vector cardinality. The LLL algorithm is used extensively in the following public key encryption methods: Knapsack encryption System (KNAPSACK), RSA encryption with specific settings, and so on.
19. Maximum Flow algorithm (Maximum flow)-The algorithm tries to find the largest stream from a traffic network. Its advantage is defined as the value of finding such a stream. The maximum flow problem can be seen as a specific case of a more complex network flow problem. The maximum flow is related to the interface in the network, which is the maximum flow-minimum intercept theorem (Max-flow min-cut theorem). Ford-fulkerson can find the maximum stream in a streaming network.
20. Merge Sort
21, Newton Method (Newton ' s method)--to find a nonlinear equation (group) 0 points of an important iterative method.
22, q-learning Learning algorithm -This is a Learning Action Value function (Action-value functions) completion of the reinforcement learning algorithm, the function takes a given state of the specified action, and calculates the desired utility value, followed by a fixed strategy thereafter. The advantage of q-leanring is that, without the need for an environmental model, the expected utility of actionable actions can be compared.
23, two times Sieve method (quadratic Sieve)--Modern integer factorization algorithm, in practice, is currently known as the second fastest such algorithm (after the number of field sieve numbers field Sieve). For a 110-bit 10-bit integer, it is still the fastest, and it is thought to be simpler than the number-domain sieve method.
24, RANSAC--is the "RANdom SAmple Consensus" abbreviation. The algorithm calculates the parameter values of a mathematical model based on a series of observed data, which contain outliers. The basic assumption is that the data contains non-alienation values, which are values that can be interpreted by some model parameters, which are data points that do not conform to the model.
25, RSA--public key encryption algorithm. The first applies to algorithms that use signatures as encryption. RSA is still massively used in the e-commerce industry, and it is believed to have a public key of sufficient security length.
26, Sch?nhage-strassen algorithm -in mathematics, the Sch?nhage-strassen algorithm is a fast asymptotic algorithm used to complete multiplication of large integers. Its algorithm complexity is: O (n log (n) log (log (n))), the algorithm uses the Fourier transform.
27, simplex algorithm (Simplex algorithm)--in mathematical optimization theory, the simplex algorithm is a common technique used to find the numerical solution of linear programming problem. Linear programming problems include a series of linear inequalities on a set of real variables, and a fixed linear function that waits to be maximized (or minimized).
28. Singular value decomposition (Singular value decomposition, or SVD)-in linear algebra, SVD is an important decomposition method of real or complex matrices, which has many applications in signal processing and statistics. such as calculating the pseudo-inverse matrix of matrices (to solve the least squares problem), solving the super-fixed linear system (overdetermined linear systems), matrix approximation, numerical weather forecast and so on.
29, Solving linear equations (solving a system of linear equations)--linear equations is the oldest problem in mathematics, they have many applications, such as in digital signal processing, linear programming estimation and prediction, The approximation of nonlinear problems in numerical analysis and so on. To solve a linear equation group, Gauss-about-extinction (Gauss-jordan elimination) or Kolesky decomposition (Cholesky decomposition) can be used.
30, Strukturtensor algorithm -Apply to the field of pattern recognition, for all pixels to find a calculation method to see whether the pixel is in the homogeneous region (homogenous regions), to see if it is an edge, or a vertex.
31, merging search algorithm (union-find)-given a set of elements, the algorithm is often used to divide these elements into multiple separate, non-overlapping groups. The data structures of disjoint sets (Disjoint-set) can track such segmentation methods. The merge lookup algorithm can perform two useful operations on this data structure:
32. The Viterbi algorithm (Viterbi algorithm)--a dynamic programming algorithm for finding the most probable sequence of hidden states, known as the Viterbi path, results in a series of observable events, especially in the hidden Markov model.
These are the results of Dr. Christoph's survey of the most important algorithms, INFOQ's readers? What algorithms are you familiar with? What are some of the algorithms that you often use?
Common data structures and algorithms