Dr. Christoph Koutschan of the Research Institute for Symbolic Computation (RISC) published an article on his own page mentioning that he did a survey. Most of the participants were computer scientists who invited them. Vote for the most important algorithm. The following is the result of this survey, sorted alphabetically by English name.

1. A* search algorithm – a graphical search algorithm that calculates the path from a given starting point to a given end point.It uses a heuristic estimate that estimates the best path through the node for each node and ranks it for each location. The algorithm accesses these nodes in the order they are obtained. Therefore, the A* search algorithm is an example of the best priority search.

2, cluster search (also known as directed search, Beam Search) – optimization of the best priority search algorithm. Use a heuristic function to evaluate the capabilities of each node it checks. However, cluster search can only find the top m most qualified nodes in each depth, m is the fixed number – the width of the bundle.

3. Binary Search – An algorithm for finding a specific value in a linear array. Each step removes half of the data that does not meet the requirements.

4. Branch and Bound – Algorithms for finding specific optimization solutions among multiple optimization problems, especially for discrete, combined optimization.

5. Buchberger algorithm – a mathematical algorithm that can be considered as a generalization of the Euclidean algorithm for solving the univariate greatest common divisor and the Gaussian elimination method in the linear system.

6. Data Compression – The process of encoding a message using a smaller number of bytes (or other information bearing unit), also known as source encoding.

7. Diffie-Hellman Key Exchange Algorithm – An encryption protocol that allows both parties to jointly establish a shared key in an insecure communication channel without first knowing each other. This key can be used later to encrypt subsequent communications with a symmetric password.

8. Dijkstra algorithm—For a directed graph with no negative weighted edges, calculate the single starting point minimum algorithm.

9. Discrete differentiation algorithm.

10, Dynamic Programming (Dynamic Programming) – show sub-problems and optimal sub-architecture algorithms that cover each other

11. Euclidean algorithm – Calculates the greatest common divisor of two integers. One of the oldest algorithms, appeared in Euclidean’s “Geometry Original” before 300 BC.

12. Expectation-maximization algorithm (aka EM-Training) – In statistical calculations, the expectation-maximum algorithm looks for the most probable parameter estimates in the probability model, where the model depends on undiscovered potential variable. The EM is calculated alternately in two steps. The first step is to calculate the expectation, using the existing estimates of the hidden variables to calculate the maximum possible estimate; the second step is to maximize and maximize the first step. The maximum possible value to calculate the value of the parameter.

13. Fast Fourier Transform (FFT) – Calculates the discrete Fourier transform (DFT) and its inversion. The algorithm is used in a wide range of applications, from digital signal processing to solving partial differential equations to fast calculation of large integer products.

14, gradient descent (Gradient descent) – Yi of the most mathematical optimization algorithm.

15. Hashing algorithm.

16, heap sorting (Heaps).

17, Karatsuba multiplication – the use of systems that need to complete the multiplication of thousands of integers, such as computer algebra systems and large libraries, if you use long multiplication, the speed is too slow. The algorithm was discovered in 1962.

18. LLL (Lenstra-Lenstra-Lovasz lattice reduction)—outputs a short orthogonal vector base using the lattice base as input.The LLL algorithm is heavily used in the following public key encryption methods: kapsacks, RSA encryption with specific settings, and so on.

19. Maximum flow algorithm – This algorithm attempts 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. This is the Max-flow min-cut theorem.Ford-Fulkerson can find the largest stream in a streaming network.

20. Merge Sort.

21. Newton’s method – An important iterative method for finding the zero point of a nonlinear equation (group).

22, Q-learning learning algorithm – this is a reinforcement learning algorithm completed by learning action-value function, the function takes a given action in a given state, and calculates the expected utility value, in Followed by a fixed strategy. The advantage of Q-leanring is that it can compare the expected utility of an actionable action without the need for an environmental model.

23, Quadratic Sieve – Modern integer factorization algorithm, in practice, is the second fastest known algorithm (second only to Number Field Sieve). It is still the fastest for a ten-digit integer below 110, and it is considered to be simpler than the number-domain method.

24, RANSAC – is the abbreviation of “RANdom SAmple Consensus”. The algorithm estimates the parameter values ​​of a mathematical model based on a series of observed data containing outliers. The basic assumption is that the data contains non-alienated values, that is, values ​​that can be interpreted by certain model parameters, which are those that do not conform to the model.

25, RSA – public key encryption algorithm. The first algorithm for signing as encryption. RSA is still used on a large scale in the e-commerce industry, and everyone believes it has a public key of sufficient security length.

26. Schönhage-Strassen algorithm – In mathematics, the Schönhage-Strassen algorithm is a fast asymptotic algorithm for multiplication of large integers. The algorithm complexity is: O(N log(N) log(log(N))), which uses the Fourier transform.

27. Simplex Algorithm – In mathematical optimization theory, the simple algorithm is a commonly used technique to find numerical solutions to linear programming problems. Linear programming problems include a set of linear inequalities over a set of real variables, and a fixed linear function that waits for maximization (or minimization).

28. Singular value decomposition (SVD) – In linear algebra, SVD is an important decomposition method of real or complex matrix. It has many applications in signal processing and statistics, such as pseudo-inverse matrix of computation matrix. (to solve the least squares problem), solve overdetermined linear systems, matrix approximation, numerical weather prediction, and so on.

29. Solving a system of linear equations – Linear equations are the oldest problems in mathematics. They have many applications, such as in digital signal processing, estimation and prediction in linear programming, and numerical analysis. Nonlinear problem approximation and so on. To solve a linear system of equations, you can use Gauss-Jordan elimination or Cholesky decomposition.

30, Strukturtensor algorithm – applied in the field of pattern recognition, find a calculation method for all pixels, see if the pixel is in the homogenous region, to see if it belongs to the edge, or a vertex.

31. Union-find— Given a set of elements, the algorithm is often used to divide these elements into separate, non-coincident groups. Disjoint-set data structures can track such segmentation methods. The merge lookup algorithm can perform two useful operations on this data structure:

Find: Determine which group a particular element belongs to. 
Merge: Combine or merge two groups into one group.

32. Viterbi algorithm – A dynamic programming algorithm that looks for the most likely sequence of hidden states. This sequence is called the Viterbi path and the result is a series of observable events, especially in the hidden Markov. In the model.

The above is the result of Dr. Christoph’s investigation of the most important algorithms. Which algorithms are you familiar with and which algorithms are you often using?