Absrtact: Software is dominating the world. The core of the software is the algorithm. Algorithm tens of thousands of, and which algorithms belong to the crown of the pearl? Marcos Otero gave his opinion. What is an algorithm? In layman's terms, an algorithm is a well-defined computational process
Software is dominating the world. The core of the software is the algorithm. Algorithm tens of thousands of, and which algorithms belong to the "Crown Pearl"? Marcos Otero gave his opinion.
What is an algorithm?
In layman's terms, an algorithm is a well-defined computational process that can be used as input and produce values or a set of values as output. So the algorithm is a series of computational steps that convert input to output.
-thomas H. Cormen,chales E. Leiserson, Introduction to the algorithm, third edition
In short, an algorithm is a series of steps that can accomplish a particular task, and it should have three major characteristics:
1. Limited
2. Clear instructions
3. Effective
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 requirements and are difficult to judge. But the use of these three kinds of use is higher.
The merge sort was invented by Neumann in 1945. This is a sort algorithm based on comparison, using divide-and-conquer method to solve the problem, its order is O (n^2).
In-situ segmentation method can be used in fast sorting, and divide-and-conquer algorithm can be used. This is not a stable sort algorithm, but is very effective for array ordering based on RAM (memory).
Heap sorting uses priority queues to reduce search time in data. The algorithm is also in situ algorithm, not a stable sort.
These sorting algorithms have been greatly improved relative to previous bubble sorting algorithms, and we are actually grateful 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 the signal from the time domain to the frequency domain or vice versa. In fact, you can see this article thanks to these algorithms.
The Internet, your wifi, smartphones, telephones, computers, routers, satellites, and almost everything that's built into a computer will use both algorithms in a variety of ways. If you don't study these algorithms, you won't get a degree in electronics, computing, or communications.
3, Dijkstra (Dijkstra) algorithm
Dijkstra is an atlas search algorithm. Many problems can be modeled as graphs, and then use Dijkstra to find the shortest path between two nodes. Without Dijkstra algorithm, the operation efficiency of the Internet will be greatly reduced. Although today we have a better way to find the shortest path solution, but for the sake of stability, the Dijkstra algorithm is still used by many systems.
4, RSA algorithm
Without cryptography and cyber security, the Internet will not be as important as it is today, because E-commerce and electronic transactions require these technologies to secure transactions. RSA algorithm is one of the most important cryptography algorithms. The algorithm is 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 stand-alone platform and an end user. The 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 increasingly mature of distributed computing and quantum computer theory, RSA encryption security is challenged.
5. Secure Hash Algorithm (SHA)
This is not actually an algorithm, but a series of cryptographic hash functions developed by the American Institute of National Standards and technology. But this series of functions is the cornerstone of the world's operations. Application stores, emails, anti-virus, browsers, etc. using the SHA series function, the SHA function can be used to determine whether the download is something you want, or to encounter a man-in-the-middle attack or a phishing attack.
6. Integer factorization
This is a mathematical algorithm that is used frequently in computational fields. Without this algorithm, cryptography would be much less secure. Integer factorization is a series of steps used to decompose a composite number into a series of element factors. Integer factorization can be considered 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 numbers or related problems that are difficult to decompose. Let's say the RSA problem mentioned earlier. If an algorithm can effectively decompose any number, it will make the RSA based public key cryptosystem into an insecure situation.
The birth of quantum computing makes it easier to solve the problem, and thus opens up a whole new field that can make the system more secure by using the properties of the quantum world.
7, Link analysis
In the internet age, the analysis of the relationship between different entities is very important. From search engines and social networks to marketing analytics tools, everyone wants to find the real structure of the Internet.
Link analysis is undoubtedly one of the biggest puzzles and myths of the public. The problem is that there are different ways to link analysis, and adding some features makes each algorithm slightly different (thus making the algorithm patented), but basically these algorithms are similar.
The link analysis algorithm was first invented by Gabriel Pinski and Francis Narin in 1976. The idea behind it is very simple, that is, to represent the Atlas in the form of a matrix, which becomes a eigenvalue problem, and the eigenvalues help to understand the structure of the Atlas and the relative importance of each node.
Google's Pagerank,facebook showcases news sources, Google+,facebook friend referrals, LinkedIn work and contact recommendations, Netflix and Hulu's film recommendations, YouTube video recommendations, all using link analysis algorithms. Although each has different goals and parameters, the math behind it is the same.
Although Google appears to be the first company to exploit such algorithms, the Search engine "Rankdex", which Baidu founder Robin Li did 22 years before Google was born, has used this idea to rank the search.
8. Proportional Integral differential algorithm
If you've ever used an airplane, a car, a micro-service or a mobile phone network, if you've been in a factory or seen a robot, you've seen the effect of this PID algorithm.
The algorithm makes use of the control loop mechanism to minimize the error between the expected output signal and the actual output signal. It is used only if there is a need for signal processing or electronic systems to control automated mechanical, hydro or thermal systems.
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 downloads also compress, video games, video, music, data storage, cloud computing, databases, and so on, with compression algorithms. It can be said that the compression algorithm is used in almost all applications. The compression calculation system is more efficient and less expensive, but it is difficult to determine which is the 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, the initial conditions of the problem, finance and so on need to generate random numbers. But we don't really have a "real" random number generator at the moment, although some pseudo-random number generators are very effective.
Of course, the top ten algorithms may also be dine suspected, the angle of view of the algorithm will be very different, if you think this list has errors and omissions, may wish to contribute your opinion in the comments.