Huge research funds are devoted to nanotechnology as it promises to transform many aspects of our lives. There are several phases to the development of the science.
The first stage is the creation of passive nanostructures - think "paint" or "additives". Next comes the creation of nanostructures that perform primitive functions - think "transistor". After that comes the creation of miniscule machines, preferably programmable, whose components are the primitives. These machines are called nanites.
The final phase is the creation of nanites that are capable of creating other nanites and then, when there are enough of them, acting collaboratively to achieve a common goal.
As computer scientists, we wish to play our part. Initially, this will be by offering services such as simulations and computer graphics to those involved in the first three phases. But we must prepare ourselves for the final phase, predicted to start around 2020. We want computer science to have matured so that we can cope.
Computer scientists are well placed to undertake the theoretical groundwork for this final phase because, ever since computers became distributed, we have been gaining expertise in the design and management of groups of physical entities working together. Furthermore, we have considerable experience with virtual entities working together, namely, software agents.
Some time ago, many researchers split off from the traditional AI approach and began to develop software agents. It was realised that in certain situations, we do not need monolithic programs to achieve something that passes for intelligent behaviour. The traditional way was to explicitly program intelligence into the software. With agents we do not necessarily have to do this. One approach is to program each agent to follow the same set of fairly simple rules, in priority order, and collectively they can achieve a goal. We say that intelligence has "emerged".
One example of this could be in programming robotic vehicles to pick up rocks lying in clusters on Mars. It is possible to program the vehicles to do this without even communicating with one another. It would be better, though, if on finding a cluster, a vehicle could inform others by leaving a trail.
The above example mimics the natural world where social animals work collaboratively. For example, consider the behaviour of a colony of ants. Ants leave a chemical trail for other ants to follow. The colony achieves a relatively complex goal even though an individual is following simple rules, and there is not even a leader.
There is in fact an algorithm called the ant colony optimisation algorithm as well as other algorithms modelled on collaborative animal behaviour. Collectively, these are known as swarming algorithms.
Computer scientists' expertise in networking and software agents is invaluable when it comes to programming and controlling armies of nanites.
Genetic algorithms have been in use for quite a while. They are used to improve the solution to a problem over successive generations. A key feature is that, every now and then, we perform a mutation so as not to get stuck in a rut. When armies of nanites become a reality, we will have to look at this problem in reverse and have to cope with nanites that have mutated.
Our study of software agents as well as swarming algorithms has wide-ranging applications outside nanotechnology. We do not have to wait for chemists and biologists to perfect the production of nanites, as nano-inspired computing is with us today.
The first stage is the creation of passive nanostructures - think "paint" or "additives". Next comes the creation of nanostructures that perform primitive functions - think "transistor". After that comes the creation of miniscule machines, preferably programmable, whose components are the primitives. These machines are called nanites.
The final phase is the creation of nanites that are capable of creating other nanites and then, when there are enough of them, acting collaboratively to achieve a common goal.
As computer scientists, we wish to play our part. Initially, this will be by offering services such as simulations and computer graphics to those involved in the first three phases. But we must prepare ourselves for the final phase, predicted to start around 2020. We want computer science to have matured so that we can cope.
Computer scientists are well placed to undertake the theoretical groundwork for this final phase because, ever since computers became distributed, we have been gaining expertise in the design and management of groups of physical entities working together. Furthermore, we have considerable experience with virtual entities working together, namely, software agents.
Some time ago, many researchers split off from the traditional AI approach and began to develop software agents. It was realised that in certain situations, we do not need monolithic programs to achieve something that passes for intelligent behaviour. The traditional way was to explicitly program intelligence into the software. With agents we do not necessarily have to do this. One approach is to program each agent to follow the same set of fairly simple rules, in priority order, and collectively they can achieve a goal. We say that intelligence has "emerged".
One example of this could be in programming robotic vehicles to pick up rocks lying in clusters on Mars. It is possible to program the vehicles to do this without even communicating with one another. It would be better, though, if on finding a cluster, a vehicle could inform others by leaving a trail.
The above example mimics the natural world where social animals work collaboratively. For example, consider the behaviour of a colony of ants. Ants leave a chemical trail for other ants to follow. The colony achieves a relatively complex goal even though an individual is following simple rules, and there is not even a leader.
There is in fact an algorithm called the ant colony optimisation algorithm as well as other algorithms modelled on collaborative animal behaviour. Collectively, these are known as swarming algorithms.
Computer scientists' expertise in networking and software agents is invaluable when it comes to programming and controlling armies of nanites.
Genetic algorithms have been in use for quite a while. They are used to improve the solution to a problem over successive generations. A key feature is that, every now and then, we perform a mutation so as not to get stuck in a rut. When armies of nanites become a reality, we will have to look at this problem in reverse and have to cope with nanites that have mutated.
Our study of software agents as well as swarming algorithms has wide-ranging applications outside nanotechnology. We do not have to wait for chemists and biologists to perfect the production of nanites, as nano-inspired computing is with us today.

No comments:
Post a Comment