Dominating Algorithms

Last year I had read the book “Automate This: How algorithms came to rule our world by Christopher Steiner[1]. It was a brilliant book about how algorithms have invaded each and every part of human life. How, in no time we have let algorithms automate parts of our life that used to be done manually, that required humans with specific skills or having advanced degrees. It was a very interesting book, one that I would recommend to anyone who wants to know why algorithms are going to rule the future and to see how far reaching the impacts of the mathematics and coding is.

Recently I was pointed to a post “The top 10 algorithms that dominate our world” by George Dvorsky[2]. It seems to be written by someone who has no idea about what an algorithm is. He starts out by saying that there is no formal definition of an algorithm! Then he goes on to list out “algorithms” like Google Search, Facebook News Feed, Google AdWords, OKCupid Date matching, Auto-Tune and the “You may also enjoy” feature found in many websites. Even a first year student of ICT would know that most of these can’t be really called algorithms, definitely not algorithms that dominate our world. Granted that Google’s PageRank algorithms is pretty cool and is currently dominating the search market. The other “algorithms” are all not really that dominating. It is true that we do use many of these services quite extensively but that doesn’t mean that we can’t live without them. Not living without Facebook’s News Feed may actually do us more good than harm. It is still confounding to me why the author chose these particular algorithms. They do seem to be good at what they do and seem popular but that doesn’t mean that they “dominate” our world. I agree that efficient algorithms are always great to have but just because an algorithm is efficient doesn’t mean that it is worthy enough to be in the top 10.

He does list a couple of algorithms that have a huge impact on our lives. MP3 compression and High Frequency Trading (HFT) algorithm. MP3 compression is important but more important would be the class of algorithms that it belongs to. Data Compression algorithms in general are impossible to live without. They exist not only in the zipped codes that we send to our TA. Today they can be found wherever data exists, being invaluable in making systems cheaper and more efficient. Every site on the internet that is worth visiting would be using data compression, every file that you make would be using data compression, basically everything uses data compression. HFT is a type of algorithmic trading, specifically the use of sophisticated technology and computer algorithms to trade rapidly. HFT uses proprietary trading strategies carried out by computers to move in and out of positions in seconds or fractions of a second[3]. HFT is not an algorithm as such. It is just a part of algorithmic trading, which uses algorithms to decide how to trade in the market. So it is algorithmic trading which might be worth listing. Although it isn’t a single algorithm or even a class of algorithms it does dominate the whole financial market today, with humans being slowly removed from the trading process. Algorithms have swarmed the financial market, jobs once done by human traders are being switched to computers[4].

I was then told to read another post written in reply to the first one. “The real 10 algorithms that dominate our world” by Marcos Otero[5]. He starts out by thrashing the author of the first post and stating what an algorithm is. He thankfully also explains that algorithms aren’t just something that is native to Computer Science but come from Mathematics. His list clearly exemplifies this. His list includes Djikstra’s algorithm, Fourier and Fast Fourier Transforms and other algorithms that really sound like algorithms. The algorithms in this list that come closest to the first list are Data Compression algorithms and Link analysis. I already mentioned data compression. Link analysis is essentially looking at the links on a page to determine something about the page, the user or something else. Link analysis basically encompasses half of the stuff that was there in the first list. Google search, Facebook newsfeed and the “You may also enjoy” features all use link analysis, the parameters they use and their purpose may be different but essentially they all use a version of Link analysis. Otero’s list contains some algorithms we would expect inlcuding Sorting algorithms like quick sort, merge sort and heap sort, the RSA algorithm and the Secure Hash algorithms. Then there are algorithms in his list like Integer factorisation, Proportional Integral Derivative Algorithm and Random number generator which are unexpected but make sense when you read his explanation. Not surprisingly this is the first time I have heard of something called the proportional integral derivate algorithm but it seems to have quite a huge impact on a lot of things around me. He ends by saying that there are important algorithms in the fields of machine learning, matrix multiplication and categorization that he hasn’t listed. Overall it seemed like quite a well compiled list. I hope that by the end of my four years of college I would at least be exposed to all of these algorithms if not intimately familiar with them.

While searching for these posts I came upon a list of algorithms from the 20th century compiled by Jack Dongarra and Francis Sullivan for Computing in Science and Engineering magazine[6]. These two mathematicians aimed to list down the 10 algorithms with “the most influence in the development and practice of science and engineering in the 20th century”[6]. Other than quick sort, fast fourier transform and FORTRAN’s optimizing compiler which paved the way for most of today’s compilers I haven’t even heard of the other algorithms but they all seem to have pretty important uses in science and engineering like promised. I do know of some of the fields in which these algorithms are used, including linear programming, matrix computations and eigenvalues all of which help in making the solution to many important problems faster. The algorithms listed aren’t ones that you would see working around you in everyday stuff—the authors never meant to list dominating algorithms–though they are all pretty important as tools to get many things done, making this list worth a look. All the more so since this was in a serious journal by mathematicians, while the others were merely private blogposts.

Something that is missing in all these lists and something that I think should’ve featured in all is one of oldest algorithms still in use. Euclid’s GCD Algorithm[7]. It is one of the oldest algorithms, and it is a very efficient one at that. I don’t know how dominating this algorithm is but it sure has far reaching applications. It is a key part of the RSA algorithm. It is used to solve Diophantine equations, in the Chinese Remainder Theorem and in many modern integer factorisation algorithms. It is also used to prove the fundamental theorem of arithmetic. Above all it is used as a basic and yet powerful tool in solving problems in number theory. So it is a key component of two algorithms that have featured in the lists, it is simple and yet efficient enough to be still used after almost two and a half millenia. Just because it isn’t something that you code to use in your ‘big project’ doesn’t mean that it isn’t important.

I started by talking about a book, Automate This by Christopher Steiner and I would like to end with a few more thoughts on it. Unlike the algorithms I have been talking about his book talks more about how algorithms have started replacing humans in a variety of jobs. HFTs would be one example of this, replacing humans on the trading floor with fiber optics and lines of code. He also talks about algorithms that do creative things that one would think humans were still unchallenged in. Algorithms that write haiku, baseball commentary and music are talked about. It is a brilliant book that forays into algorithms, human interaction with machines and the possibly frightening future of it all. Totally worth reading. After reading this book and these posts I got a completely new understanding as to how terrifyingly important algorithms are going to be.

Everyone should have a go at the book. People even remotely interested in algorithms should make sure to take a look at the three lists that I have talked about. Also I have been throwing around the names of a lot of algorithms without giving a lot of explanation about them. The reasons for this are twofold. Firstly, I can’t really explain anything about any of these algorithms in less than a paragraph and there are too many to do that. Secondly, I want people to read the posts, which are way better than this, if they are interested in anything I talked about.

Sources and references:

1. Automate This : How Algoritms Came to Rule Our World – Christopher Steiner.

http://www.amazon.com/Automate-This-Algorithms-Came-World/dp/B00D9T9IQG

2. The top 10 algorithms that dominate our world:

http://io9.com/the-10-algorithms-that-dominate-our-world-1580110464/all

3. High-frequency trading – Wikipedia, the free encyclopedia

http://en.wikipedia.org/wiki/High-frequency_trading

4. Effects of Algorithmic trading – Wikipedia, the free encyclopedia

http://en.wikipedia.org/wiki/Algorithmic_trading#Effects

5. The real 10 algorithms that dominate our world:

https://medium.com/@_marcos_otero/the-real-10-algorithms-that-dominate-our-world-e95fa9f16c04

6. The Best of the 20th Century: Editors Name Top 10 Algorithms:

https://www.siam.org/pdf/news/637.pdf

7. Euclidean algorithm – Wikipedia, the free encyclopedia

http://en.wikipedia.org/wiki/Euclidean_algorithm

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s