The 32 most important algorithms in computer science

Source: Internet
Author: User
Tags greatest common divisor

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-a graph search algorithm that calculates a path from a given starting point to a given endpoint. 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. Binary search--an algorithm for finding specific values in a linear array, with each step removing half of the data that does not meet the requirements.
  4. Branch-defining algorithms (Branch and Bound)-algorithms for finding specific optimization solutions in a variety of optimization problems, especially for discrete, combinatorial optimizations.
  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-The process of encoding information by using a specific encoding scheme, with fewer bytes (or other information hosting units), and also called source coding.
  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-Calculates the single starting point shortest algorithm for a directed graph with no negative weighted edges.
  9. Discrete differential algorithm (discrete differentiation)
  10. Dynamic programming algorithm (programming)--displaying sub-problems and optimal sub-architecture algorithms for mutual coverage
  11. Euclidean algorithm (Euclidean algorithm)-Calculates a greatest common divisor of two integers. One of the oldest algorithms, appeared in 300 BC before the "geometry of the original".
  12. Expectation-Maximum algorithm (expectation-maximization algorithm, aka em-training)-in statistical calculations, the expectation-maximum algorithm looks for the most probable parameter estimates in the probabilistic model, where the model relies on the 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 sort (heaps)
  17. Karatsuba multiplication-used in systems that require multiplication of thousands of integers, such as computer algebra systems and large-number libraries, which are too slow if long multiplication is used. The algorithm was found in 1962.
  18. LLL algorithm (Lenstra-lenstra-lovasz lattice reduction)-the output of the short orthogonal vector cardinality is the input of the lattice protocol (lattice) 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 (merge sorts)
  21. Newton method (Newton's method)--an important iterative method for finding 0 points of nonlinear equations (groups).
  22. Q-learning Learning Algorithm-This is a reinforcement learning algorithm that is accomplished by learning action-valued functions (Action-value function), which takes a given action in a given state 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-time sieve method (quadratic Sieve)--Modern integer factorization algorithm, in practice, is now known as the second fastest such algorithm (after the Number 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 abbreviation for "RANdom SAmple Consensus". 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 for the 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 method of decomposition of real or complex matrices, and there are many applications in signal processing and statistics, such as the pseudo-inverse matrix for computing matrices (to solve least squares problems), Solve the overdetermined system (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 digital signal processing, estimation and prediction in linear programming, nonlinear problem approximation in numerical analysis, etc. To solve a linear equation group, Gauss-about-extinction (Gauss-jordan elimination) or Kolesky decomposition (Cholesky decomposition) can be used.
  30. Strukturtensor algorithm--Applies to the field of pattern recognition, to find a calculation method for all pixels, to see if the pixel is in the homogeneous region (homogenous regions), to see if it is an edge, or a vertex.
  31. Merge lookup Algorithm (Union-find)-given a set of elements, the algorithm is often used to divide these elements into 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:
    • Find: Determines which group a particular element belongs to.
    • Merge: Combine or merge two groups into one group.
  32. The Viterbi algorithm (Viterbi algorithm)-A dynamic programming algorithm that looks for 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.

The 32 most important algorithms in computer science

Related Article

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.