Below are some important Algorithm In the original article, 32 are listed, but I think many of them are in number theory or are relatively uncommon. They 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 Article Not translation. Most of the algorithm descriptions are taken from Wikipedia, because Wikipedia is very professional)
A * search algorithm is commonly 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 based on the branch and bound method, it uses a heuristic method to estimate K best paths. It only searches down from these K paths, that is, only satisfied nodes in each layer are retained, and other nodes are permanently discarded, thus, the score branch and boundary method can greatly save the running time. 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. A binary search algorithm is 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 (branch and bound) algorithm is a method for searching the solution of a problem on 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 is a technology that reduces the redundancy of data stored in computers or transmitted through communication to increase the data density and 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 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. The Dijkstra's algorithm, the Dijkstra algorithm, 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 planning is a method used in mathematics and computer science to solve optimization problems with 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. In mathematics, the Euclidean algorithm is used to calculate the maximum approximate 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. In statistical calculation, the maximum expectation (EM) algorithm is used to find the Maximum Likelihood Estimation of Parameters in the probability model, the probability model depends on hidden variables that cannot be observed (latent variable ). The highest expectation is often used in the Data Clustering field of machine learning and computer vision. 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 Transform (FFT) is a fast algorithm of 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. The hash function is a method used to create a small number "fingerprint" from any type of data. 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. Heapsort is a sort algorithm designed by using the data structure of heap. A stacked tree is a structure that is similar to a Complete Binary Tree and meets the accumulation attributes. That is, the key value or index of a subnode is always smaller than (or greater than) its parent node. Merge sort is an effective Sorting Algorithm Based on the merge operation. This algorithm is a very typical application of divide and conquer. 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. The RSA encryption algorithm 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 as long as the key is long enough, this algorithm is safe and queries the Union-find dataset. The query set is a tree-type data structure used to process the merge and query 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 about sorting algorithms, you can see these articles on this site, "a Python script for displaying the sorting process" and "a website for comparing sorting algorithms".
This article from the csdn blog, reproduced please indicate the source: http://blog.csdn.net/haoel/archive/2010/07/22/5755241.aspx
This article from the csdn blog, reproduced please indicate the source: http://blog.csdn.net/Satchmo/archive/2010/07/25/5764967.aspx