The most important 32 algorithms in Computer Science

Source: Internet
Author: User

Dr. Christoph koutschan from the Austrian Institute of symbolic computing (Research Institute for symbolic computation) published an article on his own page, referring to his investigation, most of the participants were computer scientists who asked them to vote for the most important algorithm. The results of this survey are listed in alphabetical order.

  1. A * search algorithm: a graphic search algorithm that calculates the path from the given start point to the given end point. A heuristic estimation is used to estimate the optimal path of a node and sort the nodes in order. To access these nodes in order. Therefore, the * search algorithm is an example of optimal priority search.
  2. Cluster search (also known as targeted search and Beam Search)-optimization of the best priority search algorithm. Evaluate the capabilities of each node it checks using heuristic functions. However, the cluster search can only find the first m of the most qualified nodes in each depth, and M is a fixed number-the width of the cluster.
  3. Binary Search-algorithms for finding specific values in a linear array. Each step removes half of the data that does not meet the requirements.
  4. Branch and bound: An algorithm used to find a specific optimization solution in multiple optimization problems, especially for discretization and combination optimization.
  5. The buchberger algorithm is a mathematical algorithm that can be regarded as a generalization of the Euclidean Algorithm for Solving the maximum common divisor of a single variable and Gaussian elimination method in a linear system.
  6. Data Compression-a specific encoding scheme that uses a smaller number of bytes (or other information carrying units) for information encoding, 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 prior knowledge of the other party. The CMK can be used together with a symmetric password to encrypt subsequent communication.
  8. Dijkstra algorithm-calculate the single-start shortest Algorithm for Directed Graphs without negative weight edges.
  9. Discrete differential algorithm (discrete differentiation)
  10. Dynamic Planning Algorithm (Dynamic Programming) -- displays subproblems and optimal subarchitecture algorithms that overlap with each other
  11. Euclidean Algorithm (Euclidean Algorithm) -- calculates the maximum common number of two integers. One of the oldest algorithms appeared in Euclidean, before 300 BC.
  12. Expectation-maximum algorithm (expectation-Maximization Algorithm, also known as em-training) -- in statistical calculation, expectation-maximum algorithm searches for the parameter estimation value with the highest probability in the probability model, the model depends on undiscovered potential variables. Em is calculated alternately in two steps. The first step is to calculate the expectation. the maximum possible estimated value is calculated using the existing estimated value of hidden variables. The second step is to maximize, the maximum possible value obtained in the first step is maximized to calculate the parameter value.
  13. Fast Fourier Transform (FFT): Calculate the Discrete Fourier Transform (DFT) and its inversion. This algorithm has a wide range of applications, from digital signal processing to solving partial differential equations, to Fast Calculation of big integer product.
  14. Gradient Descent is a mathematical optimization algorithm.
  15. Hashing)
  16. Heaps)
  17. Karatsuba multiplication-used in systems that need to complete the multiplication of thousands of integers, such as computer algebra systems and large number libraries. If long multiplication is used, the speed is too slow. This algorithm was found in 1962.
  18. Lll algorithm (Lenstra-lovasz lattice algorithm) -- uses the lattice Convention (lattice) as the base number of input and outputs the base number of short orthogonal vectors. Lll algorithms are widely used in the following public key encryption methods: backpack encryption system (Knapsack), RSA encryption with specific settings, and so on.
  19. Maximum Flow: This algorithm attempts to find the largest stream from a traffic network. Its advantage is defined as finding the value of such a stream. The maximum flow problem can be seen as a specific situation of more complex network flow problems. 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 stream network.
  20. Merge sort (merge sort)
  21. Newton's method: An Important Iteration Method for Finding the zero point of a Nonlinear Equation (group.
  22. Q-learning algorithm-this is a reinforcement learning algorithm completed by learning the action-value function. A function takes a given action in a given State, and calculate the Expected Utility Value, followed by a fixed strategy. The advantage of Q-leanring is that it can compare the expected utility of the adopted action without the need for an environment model.
  23. Quadratic sieve, a modern integer factorization algorithm, is the second fastest known Algorithm in practice (second only to number field sieve ). It is still the fastest ten integers with less than 110 bits, and it is considered easier than the number field screening method.
  24. Ransac -- short for "random sample consensus. This algorithm estimates the parameter values of a mathematical model based on a series of observed data that contains abnormal values. The basic assumption is that data contains non-alienated values, that is, values that can be interpreted by certain model parameters. The alienated values are data points that do not conform to the model.
  25. RSA-public key encryption algorithm. The first algorithm that uses signature as encryption. RSA is still widely used in the e-commerce industry, and we believe it has a secure public key.
  26. Schönhage-strassen algorithm-in mathematics, schönhage-strassen is a fast algorithm used to complete multiplication of large integers. The algorithm complexity is O (n log (n), which uses Fourier transformation.
  27. Lex algorithm (Lex algorithm)-in the Optimization Theory of mathematics, the linear algorithm is a common technology used to find the Numerical Solution of Linear Programming Problems. Linear Programming involves a series of Linear Inequality groups on a set of real variables and a fixed linear function waiting for maximization (or minimization.
  28. Singular Value Decomposition (SVD) -- in linear algebra, SVD is an important Decomposition Method for real or complex matrix. It has many applications in signal processing and statistics, for example, the pseudo-inverse matrix of the computing matrix (to solve the least square problem), The overdetermined linear systems, matrix approximation, and numerical weather forecasting.
  29. Solving Linear Equations (solving a system of linear equations)-linear equations are the oldest problems in mathematics. They have many applications, such as digital signal processing, estimation and prediction in linear programming, and nonlinear problem approximation in numerical analysis. To solve linear equations, you can use Gaussian-Jordan elimination or Cholesky decomposition ).
  30. The strukturtensor algorithm is used in the pattern recognition field to find a computing method for all pixels to see if the pixel is in a homogeneous region (homogenous region) and whether it is an edge or a vertex.
  31. Union-find (merge-find): Given a group of elements, this algorithm is often used to divide these elements into multiple separated groups that do not overlap with each other. The data structure of disjoint-set can be used to track such splitting methods. The merge search algorithm can perform two useful operations on this data structure:

      • Search: determines the group to which a specific element belongs.
      • Merge: Join or merge two groups into one group.
  32. Viterbi algorithm: a dynamic planning algorithm that looks for the sequence most likely to be hidden. This sequence is called the Viterbi path, and the result is a series of observed events, especially in hidden Markov models.

The above are the results of Dr. Christoph's survey on the most important algorithms. infoq readers? What algorithms are you familiar? What other algorithms are frequently used by you?

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.