Software is dominating the world. And the core of the software is the algorithm. Algorithm millions, and what algorithms belong to the "crown of Pearls" it? Marcos Otero gave his opinion .
What is an algorithm?
In layman's terms, an algorithm is a well-defined calculation process that can have values or a set of values as input and produce some values or a set of values as output. So the algorithm is a series of calculation steps that convert the input to output.
-thomas H. Cormen,chales E. Leiserson, Introduction to the third version of the algorithm
1, limited
2, directive clear
The following are the top ten algorithms recommended by Marcos Otero:
1. Merge sort, quick sort and stacking sort
The best sorting algorithms are closely related to demand and are difficult to judge. But from the use of these three kinds of use more frequently.
The merge sort was invented by von Neumann in 1945. This is a sort algorithm based on comparison, using the method of divide and conquer to solve the problem, its order is O (n^2).
The fast sorting method can be used in-situ segmentation or divide-and-conquer algorithm. This is not a stable sorting algorithm, but is very effective for array ordering based on RAM (memory).
Heap ordering uses a priority queue to reduce the search time in the data. This algorithm is also in-situ algorithm, not stable sort.
These sorting algorithms have been greatly improved relative to the previous bubbling sorting algorithms, and in fact we are thankful for today's data mining, artificial intelligence, link analysis, and most computing tools, including the Web.
2. Fourier transform and fast Fourier transform
Our entire digital world uses these two simple but very powerful algorithms to convert signals from time domain to frequency domain or vice versa. In fact, you can see this article thanks to these algorithms.
The Internet, your wifi, smartphones, phones, computers, routers, satellites, almost everything built into computers will use these two algorithms in a variety of ways. If you do not study these algorithms, you will not get a degree in electronics, computing or communications.
3, Dijkstra (Dijkstra) algorithm
Dijkstra is a graph search algorithm. Many problems can be modeled as graphs and then use Dijkstra to find the shortest path between two nodes. Without the Dijkstra algorithm, the operating efficiency of the Internet will be greatly reduced. Although today we have a better solution for finding the shortest path, the Dijkstra algorithm is still used by many systems for stability requirements.
4. RSA algorithm
rsa algorithm is one of the most important cryptographic algorithms. The algorithm was developed by the founders of the same name (Ron Rivest, Adi Shamir, and Leonard Adleman), which makes cryptography ubiquitous and lays the foundation for cryptography. The problem that RSA solves is simple and complex: how to share a public key between a standalone platform and an end user. Its solution is encryption. The basis of RSA encryption is a very simple number theory fact: it is easy to multiply two large primes, but it is extremely difficult to factorization the product, so you can expose the product as an encryption key. However, with the maturity of distributed computing and quantum computer theory, RSA encryption security has been challenged.
5. Secure Hash Algorithm (SHA)
This is not actually an algorithm, but a series of cryptographic hashing functions developed by the American Institute of Standards and Technology. But this series of functions is the cornerstone of the world's operations. App Store, e-mail, anti-virus, browser, etc. using the SHA series functions, the SHA function can be used to determine if something is being downloaded, or if it encounters a man-in-the-middle attack or a phishing attack.
6, Integer factor decomposition
This is a mathematical algorithm used frequently in the field of computing. Without this algorithm, cryptography would become much less secure. Integer factorization is a series of steps used to decompose a composite into a series of element factors. integer factorization can be seen as a FNP problem (FNP is an extension of a typical NP problem that is difficult to solve).
Many cryptographic protocols are based on large composite or related issues that are hard to decompose. Let's say the RSA problem mentioned earlier. If an algorithm can effectively decompose arbitrary numbers, then the RSA-based public key cryptography system will be put into an insecure position.
The birth of quantum computing makes it easier to solve this problem, and thus opens up a whole new field that can take advantage of the properties of the quantum world to make the system more secure.
7. Link Analysis
In the internet age, the analysis of relationships between different entities is crucial. From search engines and social networks to marketing analytics tools, everyone wants to find out the true structure of the Internet.
Link Analysis is undoubtedly one of the biggest puzzles and myths of the public about algorithms. The problem is that there are different ways to link analysis, and adding some features makes each algorithm slightly different (which makes the algorithm patented), but basically the algorithms are similar.
The link analysis algorithm was first invented by Gabriel Pinski and Francis Narin in 1976. The idea behind it is simple: to represent the graph in the form of a matrix, and thus to the eigenvalue problem, the eigenvalues help to understand the relative importance of the graph structure and each node.
Google's Pagerank,facebook displays news feeds, Google+,facebook friend referrals, LinkedIn work and contact recommendations, movie recommendations from Netflix and Hulu, YouTube video recommendations, and more using link analysis algorithms. Although each has different goals and parameters, the math behind them is the same.
Although Google appears to be the first company to take advantage of such algorithms, Baidu's founder Robin Li, the search engine "Rankdex" that Google was born 22 years ago, has used this idea to rank the search.
8. Proportional Integral differential algorithm
If you've ever used a plane, car, micro-service, or cellular network, if you've been in a factory or seen a robot, you've seen the PID algorithm work.
The algorithm uses the control loop mechanism to minimize errors between the expected output signal and the actual output signal. It is required whenever signal processing or electronic systems are needed to control an automated mechanical, hydraulic, or thermal system.
So it can be said that without this algorithm, the modern civilization of mankind will cease to exist.
9. Data compression algorithm
Data compression algorithms are undoubtedly very important because they are used in almost all structures. In addition to the most obvious compressed documents, Web pages are compressed, video games, video, music, data storage, cloud computing, databases and so on are also used compression algorithms. It can be said that almost all applications use compression algorithms. The compression law system is more cost effective, but it is difficult to determine which one is most important, because the compression algorithms used vary from zip to MP3, JPEG, or MPEG-2, depending on the application.
10. Random Number generation algorithm
Many applications require random numbers. Like Interlink connection, cryptographic systems, video games, artificial intelligence, optimization, initial conditions of the problem, finance, etc. all need to generate random numbers. But we don't actually have a "real" random number generator at the moment, although some pseudo-random number generators are very effective.
Of course, the ten algorithms may also give dine suspicion, the angle of the examination of the importance of the algorithm is also very different views, if you think this list has errors and omissions in the place, may wish to contribute your comments in the comments.
Ten algorithms to rule the world