October 15, 2019

A circuit for Nanorobotics

The difference between nanoparticles and a nanorobot is, that the robot can be programmed. Programming means to convert a domain into a computational one, that means not biology or chemstry is the correct environment for describing the phenomena but computer science. The question is how to transfer the world of atoms into the world of computer science?

Before something can be programmed, there is a need for a circuit. A circuit is the building block for a computer and a computer less function block as well. Let me give an example. Suppose the idea is to program a prime number checker. The sourcecode in the Python language is known. To converting the sourcecode into hardware we can convert the program into the VHDL language which is needed for building a circuit or we can convert the sourcecode into binary code with the aim to run it on an existing computer. The computer is also realized in a hardware circuit.

In both cases, a computer program can only be executed in the form of a circuit. This allows to reduce the problem into the search for hardware which allows to build circuits. One option in doing so are classical electric circuits. The referenced prime number checker can be converted into wires which are powered by electric current. The other option is to build circuits with the help of biological components. This is called a genetic circuit. Different from that it's possible to build optical circuits in which the building blocks are powered by light.

The precondition for programming a nanorobot is that a logic gate is available. In the logic gate, the working program is stored. This can execute a turing-like sequence. A full blown computer which includes registers and the ability of calling subroutines is only a special case of an circuit. It is used for executing longer programs.

Before a cellular automaton can be realized in a living cell some preconditions have to be fullfilled. One of them is quote “Sending and receiving signals between cells.”[1]

Somebody may asks, why a cellular automaton was chosen, if a computer can be build much easier as a classical computer which contains of registers. The reason is, the living cells are not providing wires and electric current but their natural property is decentralized information which is send back and forth. The principle is decentralized which is different from how an electronic computer works. The cellular automaton is the intuitive mechanism to take advantage of the advantage.

Perhaps it make sense to explain the situation from the other perspective. The goal is to program something. Before it's possible in doing so, the hardware is needed which is equal to a circuit. And now we can investigate which options are available to build reliable circuits in the reality. One option is to use resistors, the other option is to use living cells and so on.

If a cellular automaton was programmed and executed a Lattice gas automaton is the result. Such a lattice gas automaton consists of pixels which can be virtual pixels in a computer game, or living cells in the domain of synthetic biology. It is doing the same task, like the Intel 4004 processor is doing, except the fact that the cellular automaton is distributed as default. That means, it is not a single CPU which is feed by a program, but it's a decentralized super computer.

To understand cellular automaton better, a short look into the Esolang wiki might help. We can read: “Any cellular automaton can be considered a programming language”[2] The mentioned programming language are very similar to the Brainfuck language and it is possible to convert an existing program written in C into that language. That means, at first we need a high level program written in C, then the program is converted into a cellular automaton programming language, and this code can be executed on the physical cellular automaton.

[1] Sakakibara, Yasubumi, et al. "Implementing in vivo cellular automata using toggle switch and inter-bacteria communication mechanism." 2007 2nd Bio-Inspired Models of Network, Information and Computing Systems. IEEE, 2007.

[2] https://esolangs.org/wiki/Cellular_automaton