The following are some important algorithms. I have listed 32 in the original article, but I think many of them are in number theory and are irrelevant to computers, so they are not selected. Some of the following are often used, and some are basically not used. Some are very common, and some are very biased. But it is also a good thing to understand. You are also welcome to leave behind algorithms that make sense to you. (Note: This article is not translated. Most of the algorithm descriptions are taken from Wikipedia, because Wikipedia is very professional)
- A * Search Algorithm
It is also known as the astar algorithm. This is an algorithm with multiple node paths on the graphic plane to find the lowest cost. It is often used in the mobile computing of the NPC in the game or the mobile computing of the BOT in the online game. Like Dijkstra, this algorithm can find a shortest path and perform heuristic search like BFs.
- Beam Search
Beam search is a heuristic method to solve the optimization problem. It is developed on the basis of the branch and bound method. It uses heuristic methods to estimate K best paths, only search down from these K paths, that is, only satisfied nodes are retained for each layer, and other nodes are permanently discarded, thus greatly saving the running time by the score branch and demarcation method. Bundle search was first applied to the AI field in the middle of 1970s. In 1976, lowerre used the bundle Search Method for the first time in its harpy speech recognition system, his goal is to search several potential optimal decision paths in parallel to reduce backtracking and quickly obtain a solution.
- Binary Search Algorithm
A search algorithm used to search for a specific element in an ordered array. The search process starts from the intermediate element of the array. If the intermediate element is the element to be searched, the search process ends. If a specific element is greater than or less than the intermediate element, search in the half where the array is greater than or less than the intermediate element, and compare it from the intermediate element as before. This search algorithm reduces the search range by half for each comparison.
- Branch and bound
The branch and bound algorithm is a method used to search for a problem in the spatial tree of the problem. However, unlike the backtracking algorithm, the Branch/Boundary algorithm searches for a spatial tree by the breadth-first or minimum-consumption-first method. In the branch/Boundary algorithm, each active node has only one chance to become an extension node.
- Data Compression
Data Compression is a technology that reduces the redundancy of data stored in computers or transmitted through communication to increase the data density and ultimately reduce the storage space of data. Data Compression is widely used in file storage and distributed systems. Data Compression also represents the increase in size of media capacity and the expansion of network bandwidth.
- Diffie-Hellman Key Negotiation
Diffie-Hellman Key Exchange (D-H) is a security protocol. It allows both parties to establish a key through insecure channels without any prior information from the other party. This key can be used as a symmetric key for subsequent communication to encrypt the communication content.
- Dijkstra's Algorithm
The Dickus algorithm (Dijkstra) was invented by the Dutch computer scientist edsger wybe Dijkstra. The algorithm solves the shortest path from a single source point to another vertex in the directed graph. For example, if the vertex in the figure represents the city, and the weight on the edge represents the distance between cities, the Dickus algorithm can be used to find the shortest path between two cities.
- Dynamic Planning
Dynamic Programming is a method used in mathematics and computer science to solve optimization problems that contain overlapping subproblems. The basic idea is to break down the original problem into similar subproblems and find the solution of the original problem through the subproblem solution in the process of solving the problem. The idea of dynamic planning is the basis of multiple algorithms and is widely used in computer science and engineering. Well-known application examples include: Solving Shortest Path Problems, knapsack problems, project management, and network flow optimization. Here is also a detailed article.
- Euclidean Algorithm
In mathematics, the moving phase division, also known as Euclidean algorithm, is an algorithm for finding the maximum common number. The moving phase division first appeared in Euclidean's ry original (Volume VII, proposition I and II). In China, it can be traced back to the 9-Chapter arithmetic in the Eastern Han Dynasty.
- Maximum expectation (EM) Algorithm
In statistical calculation, the maximum expectation (EM) algorithm is used to find the maximum likelihood estimation parameter in the probability model. The probability model depends on the Hidden variable that cannot be observed (latent ).
Variable ). Data Clustering, which is often used in machine learning and computer vision
Clustering) field. The maximum Expectation Algorithm is calculated in two steps. The first step is to calculate the expectation (e). The maximum likelihood estimation value of the Hidden variable is calculated using the existing estimation value; the second step is to maximize (M) and maximize the maximum likelihood value obtained in Step E to calculate the parameter value. The parameter estimates found in step m are used in the Next Step E calculation, and the process continues to alternate.
- Fast Fourier Transformation(FFT)
Fast Fourier Transform (FFT) is a fast algorithm for Discrete Fourier transformation. It can also be used to calculate the inverse transformation of Discrete Fourier transformation. Fast Fourier Transform is widely used, such as digital signal processing, big integer multiplication, and partial differential equations. This entry only describes various fast algorithms. For the nature and application of Discrete Fourier transformation, see Discrete Fourier transformation.
- Hash Functions
Hash function is a method for creating small numbers "Fingerprints" from any data type. This function breaks down the data and creates a new fingerprint called the hash value. Hash values are generally used to represent a string consisting of short random letters and numbers. Good hash functions rarely conflict with hash columns in the input domain. In the case of hash and data processing, conflicts are not allowed to distinguish data, which makes it more difficult to locate database records.
- Heap sorting
HeapsortIt is a sort algorithm designed by using the data structure of accumulation tree (HEAP. The stacked tree is an approximately Complete Binary Tree structure that meetsStacked attributes: The key value or index of a child node is always smaller than or greater than its parent node.
- Merge Sorting
Merge sortIs an effective Sorting Algorithm Based on the merge operation. This algorithm uses divide
And conquer) is a very typical application.
- Ransac Algorithm
Ransac is short for "random sample consensus. This algorithm is an iterative method used to estimate mathematical model parameters from a group of observations. It is proposed by Fischler and bolles in 1981. It is a non-deterministic algorithm, because it can only get reasonable results with a certain probability, this probability increases with the increase of the number of iterations. The basic assumption of this algorithm is that "inliers" (points that support model parameter estimation) and "Outliers" exist in the observation data set ), in addition, this group of observed data is affected by noise. Ransac assumes that given a set of "inliers" data, it can obtain the optimal model that conforms to this set of points.
- RSA Encryption Algorithm
This is a public key encryption algorithm and the world's first algorithm suitable for signature. Today, RSA has expired its patents and is widely used in e-commerce encryption. We all believe that this algorithm will be secure as long as the key is long enough.
- Query Union-find
The query set is a tree-type data structure used to deal with the merge and query problems of some disjoint sets. Forest is often used.
- Viterbi Algorithm
Find the most likely sequence of hidden states (finding most probable sequence of hidden states)
Appendix
- About this world of algorithms, you can look at this web page of Wikipedia: http://en.wikipedia.org/wiki/List_of_algorithms
- For sorting algorithms, you can refer to the articles on this site, "a Python script for displaying the sorting process" and "a website for comparing sorting algorithms".
From: http://coolshell.cn/articles/2583.html