Traditional Culture Encyclopedia - Weather inquiry - What algorithms must programmers master?

What algorithms must programmers master?

A search algorithm-graphic search algorithm, calculates the path from a given starting point to a given ending point. In this paper, heuristic estimation is used to estimate the best path for each node to pass through the node and arrange orders for each location. The algorithm accesses these nodes in the obtained order. Therefore, the A* search algorithm is an example of the best priority search.

Clustering search (also known as directional search, beam? Search)- the 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 at each depth, where m is a fixed number-the width of the cluster.

Method of bisection (binary? Search)- an algorithm to find a specific value in a linear array, in which half of the unqualified data are removed at each step.

Branch and bound algorithm (branch? And then what? Bound)- an algorithm for finding specific optimization solutions in various optimization problems, especially suitable for discrete and combinatorial optimization.

Buchberger algorithm, a mathematical algorithm, can be regarded as Euclidean algorithm for solving the greatest common divisor of one variable, and it is a generalization of Gaussian elimination method in linear systems.

Data compression-the process of encoding information with less bytes (or other information-bearing units) by using a specific coding scheme, also known as source coding.

Diffie-Hellman key exchange algorithm-an encryption protocol that allows both parties to establish * * * and share keys in an insecure communication channel without knowing each other in advance. This key can be used together with a symmetric cipher to encrypt subsequent communications.

Dijkstra algorithm-an algorithm for calculating the shortest single starting point of a directed graph without negative weighted edges.

Discrete difference algorithm (discrete? Differentiation)

Dynamic programming algorithm (dynamic? Programming)-show the sub-problems and the optimal sub-architecture algorithm that cover each other.

Euclid algorithm (Euclid? Algorithm)-Calculates the greatest common divisor of two integers. One of the oldest algorithms appeared in Euclid's Elements of Geometry 300 BC.

Expected value maximization algorithm? Algorithm (also called EM-training)-In statistical calculation, the expected maximum algorithm looks for the most possible parameter estimates in the probability model, in which the model depends on undiscovered potential variables. EM is calculated alternately in two steps. The first step is to calculate the expectation and calculate the maximum possible estimated value of the hidden variable by using the existing estimated value. The second step is maximization, which maximizes the maximum possible value obtained in the first step to calculate the value of the parameter.

Fast Fourier Transform (Fast? Fourier? Transform (FFT)- Calculate the discrete Fourier transform (DFT) and its inverse. The algorithm is widely used, from digital signal processing to solving partial differential equations, and then to quickly calculating the product of large integers.

Gradient descent (gradient? Descent)-a mathematical optimization algorithm.

Hash algorithm (hash)

Heap (heap sorting)

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 you use long multiplication, the speed is too slow. The algorithm is found in 1962.

LLL algorithm (Lenstra-Lenstra-Lenstra-Lovas lattice? Reduction)-takes lattice basis as input and outputs short orthogonal vector basis. LLL algorithm is widely used in the following public key encryption methods: knapsack encryption system, RSA encryption with specific settings, etc.

Maximum flow algorithm (maximum? Flow)- The algorithm tries to find the maximum flow from the traffic network. Its advantage is define as finding that value of such a stream. The maximum flow problem can be regarded as a special case of the more complex network flow problem. The maximum flow is related to the interface in the network, which is the maximum flow-minimum section theorem (Max-flow? min-cut? Theorem). Ford-Fulkerson? The maximum flow in the flow network can be found.

Merge sort (merge? Sorting)

Newton's method (Newton's? Method)-an important iterative method for finding the zero point of nonlinear equations (groups).

Q-learning learning algorithm-this is a learning action value function (action-value? Function), which takes a given action in a given state and calculates the expected utility value, and then follows a fixed strategy. The advantage of Q-learning is that it can compare the expected effectiveness of actions without environmental model.

Twice sieving method (twice? Sieve)- the modern integer factorization algorithm is actually the second fastest algorithm of this kind (second only to the number domain filtering method? Field? Sieve). For ten-digit integers below 1 10, it is still the fastest, and everyone thinks it is simpler than the number domain screening method.

Ran sac- is "random? Sample? The abbreviation of consensus. The algorithm estimates the parameter values of the mathematical model according to a series of observation data containing outliers. The basic assumption is that the data contains non-alienation values, that is, values that can be explained by some model parameters, and alienation values are those data points that do not conform to the model.

RSA- public key encryption algorithm. The first algorithm is suitable for using signature as encryption. RSA is still widely used in the e-commerce industry, and everyone believes that it has a public key with sufficient security length.

Sch & amp#246; Nhage-Strassen algorithm —— Mathematically, Sch&; #246; Nhage-Strassen algorithm is a fast asymptotic algorithm for large integer multiplication. Its algorithm complexity is: O(N? log(N)? Log(log(N)), the algorithm uses Fourier transform.

Simplex algorithm (simplex? Algorithm)-In the optimization theory of mathematics, the simplex algorithm is a common technique to find the numerical solution of linear programming problems. Linear programming problems include a series of linear inequalities about a set of real variables and a fixed linear function waiting to be maximized (or minimized).

Singular value decomposition (singular? Value? Decomposition (SVD)- In linear algebra, SVD is an important decomposition method of real matrix or complex matrix, which has many applications in signal processing and statistics, such as calculating the pseudo-inverse matrix of matrix (solving the least square problem) and solving the overdetermined linear system (overdetermined? Linear? System), matrix approximation, numerical weather forecast and so on.

Solve linear equations (solution? Answer? System? Yes? Linear? Equations)-Linear equations are the oldest problems in mathematics, which have many applications, such as estimation and prediction in digital signal processing, linear programming, approximation of nonlinear problems in numerical analysis and so on. Solving linear equations, Gauss-Jordan elimination method (Gauss-Jordan? Elimination), or Kolesky decomposition (? Coleski? Decomposition).

Strukturtensor algorithm-applied in the field of pattern recognition, looking for a calculation method for all pixels to see if the pixel is in a homogeneous region (? Homogeneous? Area) to see if it belongs to an edge or a vertex.

Union-find)-algorithm-given a group of elements, this algorithm is often used to divide these elements into several independent groups that do not coincide with each other. The data structure of disjoint sets can track such a segmentation method. The merge search algorithm can accomplish two useful operations on this data structure:

Lookup: Determine which group a specific element belongs to.

Merge: To combine two groups into one group.

Viterbi algorithm? Algorithm)- a dynamic programming algorithm, which looks for the most possible hidden state sequence, called Viterbi path, and the result is a series of observable events, especially in hidden Markov model.