What do ecology and coding have in common? These may seem like opposite disciplines, but in the 1940’s, programmers began to merge the two ideas to create natural computing. Natural computing is a field of study that creates algorithms and technology inspired by natural phenomena. Some common uses of natural computing include the development of artificial neural networks, evolutionary computing algorithms, and swarm intelligence.
Artificial Neural Networks
Artificial neural networks (ANNs) are data modeling, information processing, and problem solving systems that resemble the human nervous system and brain. The building blocks of a biological brain are neurons, which are connected to one another by synapses. The synaptic connections between the neurons create a neural network that can rapidly process and transmit information. ANNs resemble the nervous system as they have their own networks of artificial neurons. Artificial neurons are also able to send and receive information through artificial synapses from other artificial neurons in the network. The efficiency of the synapse to transmit information is dependent on type of information and whether it has been transmitted before. As a result, ANNs rely on learning algorithms, which are ways for the neural network to build up background knowledge and determine if the information has already been transmitted to make synapses more efficient.
ANN’s have three layers of artificial neurons: an input layer, a hidden layer, and an output layer. The artificial neurons in the input layer can take some information, for example in the form of an image, and pass along the information to other neurons in the hidden and output layers. By the time the information has been passed to the last layer, the image would be either recognized or unidentified depending on the ANN’s learning algorithm. ANNs use this process, not only for recognizing images, but for clustering and classifying data and recognizing voices. They also have an endless number of applications in medicine, architecture, and business.
A simple model of an ANN and its three layers of artificial neurons.
Evolutionary Computing
Evolutionary biology states that only the species with the most suitable characteristics to their environment are able to survive and continue their population. Biologists have been able to track a species' ancestors and their evolutionary path using evolution trees. Evolutionary computing uses evolutionary biology to create algorithms that solve complex problems with multiple solutions, like tracking species with an evolution tree. By judging the solutions’ characteristics - similar to judging a species’ probability of reproduction, genetic variation, and survival rate - an algorithm is able to remove the weaker solutions and pick the best one to solve the problem. For instance, say you were trying to solve the problem of what type of ice cream to buy. First, you would introduce a list of all your favorite flavors to the algorithm. Then, the algorithm would compare the characteristics of each flavor to find the ones it thinks are the best. The ones chosen would continue through the comparison and elimination process, but evaluated with more characteristics. Finally, the algorithm would pick the best flavor with the best characteristics. Besides solving which ice cream to buy, evolutionary computing algorithms can solve many other problems like predicting climate conditions or geo-planning renewable energy production, to name a few.
Swarm Intelligence
Swarm intelligence is a term applying to systems that function more efficiently collectively than individually. The term was inspired by social animals that are able to accomplish a task more efficiently by interacting with each other and their environment. The ant is a great example of a social animal that swarm intelligence is often modeled around. For example, when foraging for food, ants can test each route and use pheromones (chemical substances used for communication) to show the shortest route for other ants to follow. This efficient method of path finding has been replicated by search algorithms used in applications like internet or vehicle routing. In these applications, the algorithm’s ‘ants’ are able to test and record each path they take and communicate what they learn to the other ‘ants’ so the fastest and shortest path is chosen by the vehicle or internet connection.
Drone technology is also reliant on swarm intelligence. Inspired by animal formations like geese migrating in a V-shape, drones can be programmed to copy another drone, position themselves depending on their surroundings, and follow a predetermined path. For example, drone displays use swarm intelligence to position themselves and form beautiful light displays or advertisements. Swarm intelligence drones have also been applied in the medical field, rescue missions, and agriculture.
These are only three of the many applications of natural computing. Indeed, natural computing is a broad term that applies to many technological developments. Although computer science and life science are often seen as opposites, as technology advances, we find ourselves turning to nature for inspiration.
Entering the world of competitive programming can be an exciting moment. The possibility of being awarded for a skill you have honed in on for years is incredibly intriguing, but at the same time, it is the beginning of your competitive programming career, and as always, there are a couple of novice mistakes to be made.
The most difficult part of a good programming project is coming up with a good idea in the first place. Why? Because millions of people know how to code and some of them are very good at it, and there are countless ways to efficiently learn how to code but any tips for coming up with ideas are inevitably vague.
Computer Science originated with the birth of the first electronic computer in the 1940’s. Prominent coding languages like Java did not exist at the time, requiring programmers to code in Binary or other complex languages such as UNIVAC Short Code.