Algorithms

In a recent article, I discussed how to convert a static algorithm into a dynamic one. This is a theoretical question on a very practical subject. This article attempts to shed the light on a simple definition of algorithms in the computer science field, demonstrates examples of common ones that we use every day, and they try to answer the question: Are algorithms discovered or created.

In their book “Computer science”, Brookshear and Brylow define the algorithm as “an ordered set of unambiguous, excitable steps that define a terminating process.” In computer science, the word Algorithm is very common for a program or technology that offers a solution to a common problem.

An algorithm can have many definitions, but in simple words, it is predefined steps towards a solution for a particular problem. Based on the definition above, a solution to a problem should follow ordered steps; each step is clear where no more information or skills are required to do this step.

Problem-solving phases are straightforward, starting with understanding the problem, put a plan to solve it and envision how the program addresses the issue, execute the plan, and develop a program that represents and processes the required. Then we evaluate the solution for accuracy against the problem or other similar problems.

When solving a problem, the above phases are necessarily required to be performed in the same sequence, as a problem may not be fully understood or clear; at the same time, we can work on a plan. As we go through it, more details and information will come clear about the problem.

Standard algorithms are now used almost everywhere and on every device. Applications that offer secure messaging or voice calls use cryptography algorithms to encrypt and decrypt data between both ends. Computer operating systems use memory management algorithms to manage and optimize applications memory allocation running within the computer main memory, video analytics systems use image recognition algorithms to recognize and determine to a certain extent what an image is.

A very common example is the Google Maps application that determines the shortest path between two locations. The list of algorithms applications in our life is huge. This big question he is; how an algorithm is developed?

In concept, the book explains that solving problems is an artistic skill that needs to be developed rather than science that can be taught. Based on that, algorithms can be categorized based on the user research and problem-solving techniques; when a new unique solution for a new or existing problem is structured, then an algorithm is considered created, such as the Data Encryption Standard (DES) algorithm.

In contrast, an algorithm can be regarded as discovered when solving a problem based on existing or similar solutions such as the Tripple DES algorithm which is an enhanced version of the DES algorithm.

An algorithm can also be considered as discovered, when trying a solution from another problem or another field, for example, the neural networks and genetic algorithms; the first relies on how the neurons in the human brain works and the later uses the concept of natural selection.

In both cases, algorithm creators and discoverers, either individuals or corporations, they usually have full rights and ownership, and in most cases, they patent it in a way that makes it profitable. Still, some researchers or institutions make their work publicly available for everybody to use it license-free such as the Advanced Encryption Standard (AES), other algorithms are not royal free where people or companies are required to pay a license to use it.