# Computing with nature

*What follows is a non-computer scientist’s and non-mathematician’s personal account of thoughts, ideas and discussions about using nature to compute.*

Years ago I was sitting on the shore watching the waves roll in, invariably and relentlessly crash into the rocks and bounce back towards the open sea in multiple directions, only to soon crash again into the next incoming wave and erupt in a festival of little waves and trapped bubbles of air – millions of tiny chaotic echoes in stark contrast to the elegant ordered movement of their ancestor that existed mere seconds ago but is now no more, and thinking to myself: Oh my, that’s a whole lot of computation right there.

And then after some reflection: “Wait, why can’t we use it?”

Later that year I enthusiastically discussed some ideas about how we could harness nature’s raw computing power to our advantage with a friend of mine, and I remember being taken by complete surprise when he said: *“But Jure, isn’t this basically what transistors do? They use natural phenomena to enable computation?”*

Of course, that’s very true, and somehow I failed to appropriately consider this. I think I now have a rough idea as to why. What my friend had observed was related more to the fact that we, humans, have built bits of “nature” (transistors, resistors, capacitors, integrated circuits, etc.) so that we can solve our problems. But what I had in mind was formulating (and reformulating) problems in such a way that nature could solve them by itself. Those might be two sides of the same coin, and the coin might be a very multi-faceted one with soft fuzzy edges, but they are two sides none the less.

Years passed and I kept seeing opportunities for nature to compute things.

For example, to add two numbers *a *and *b*, if you could transform their values into a precise gust of wind directed at a leaf, you could then, by measuring the angle α, the bending of the leaf, calculate their sum (albeit indirectly and nonlinearly). Now yes, this does sound like it would make floating-point operations appear, by comparison, to be the ultimate pinnacle of computational accuracy, as the above operation would be very “lossy”. It would be quite inaccurate and likely have very poor repeatability, but that doesn't necessarily mean that a well-suited class of problems doesn’t exist for it. Additionally, the reasons that make leaves poor computers are very well known from classical mechanics and could be built into the computation (change of elasticity due to generated heat, limits of deformation, etc.)

But let’s go back to the waves for a bit...

To add two numbers *a *and *b* with waves, of course, all you need to do is generate two waves, one of amplitude *a *and one of amplitude *b*, and measure the amplitude where the two waves are superimposed in a maximally constructive way – that amplitude will equal *a + b.*

The same issues as above apply: it’s difficult to generate a wave with an exact amplitude and many other real-world complexities creep in (air resistance, loss of energy due to heat, wave-generation timing issues, etc.). Imagine though, that you’ve managed to come up with an efficient way to run a complex algorithm using waves and waves alone, and you’re supplying the parameters to your computer with high bandwidth, like raindrops in a storm:

And then getting the results by reading the amplitudes at various locations in your computer (it’s not all that surprising that this has certain similarities with how our transistor-based computers currently work – send electrons into the tubes on one end, observe their state on the other end).

OK, yes, it’s not just you, this all does sound pretty disconnected from reality. And while it’s easy to imagine how subtraction and addition would work in these physical systems, logical gates are another matter entirely.

What we can see is that there exists a spectrum between “nature adapted for solving problems” and “problems adapted so that nature can solve them”, and that it is not at all obvious that things on individual ends of the spectrum can realistically exist.

Is it possible to adapt nature and build a computer in such a way that formulating a problem is no longer even necessary (sounds like AGI)? Is it possible to formulate a problem in such a way, that you could essentially throw the data up in the air on a windy day and the computed answer would immediately fall from the sky and land softly on the palm of your hand? And what about all those other places on the spectrum in between?

The solution space here is vast and likely unexplored, that much is sure, but there are already some very interesting approaches to point out.

## Thermal actuators (or wax pistons)

Imagine you have a greenhouse. On warm sunny days, it can get pretty hot in a greenhouse, so hot in fact, that it can be dangerous for your precious chillis and other greenhouse inhabitants. On the other hand, you’d like your greenhouse to be as warm as it can be when it’s cold outside. Therefore you need some kind of conditional ventilation – open the windows when it’s hot, close the windows when it’s cold. The simplest conditional ventilator could be yourself, simply going in and out of the greenhouse and opening and closing windows depending on the temperature inside. But you’re smart, a product of millions of years of evolution, so you bend nature to your will and add thermal actuators to your greenhouse windows.

These little devices contain a material that expands with heat (such as wax) enclosed in a container that does not. The result is a non-uniform expansion (and contraction) of that core material, which is used to move a piston up (and down), depending on the current temperature – which opens and closes your windows automatically! Some devices even get fancy by adding a controlled buffer zone between the expansion and contraction (using hysteresis), ensuring that the mechanism doesn’t fluctuate too much between up and down strokes or states. If we wanted to replace this mechanism with a more “naive” approach, we’d have to include a temperature sensor, an electric motor, and some computer to connect and control the two. Instead, smart engineers combined our knowledge of the universe with our expertise in manipulating materials and built a passive device, one that lets nature do the computing. Now that’s what I’m talking about! If only there were more ideas like this...

## Getting a 3D model of an object by dipping it in water, repeatedly

By combining nature’s principles discovered by Archimedes more than 2000 years ago with state of the art modern mathematics of reconstructing shapes using partial information (volume of slices), researchers have invented the so-called “dip transform”, and it is a beauty [1, 2]! Using a robotic arm, they dip an object in water in various orientations up to a thousand times and measure the volume of displaced water each time – with this information they are then able to construct a detailed 3D model. There are many benefits to this approach compared to other methods of acquiring accurate models (it’s non-destructive, manages complex shapes well), but also it’s just plain awesome. Using nature for what nature knows best (it constantly “calculates” the volume of submerged objects as a side-product of upholding physics anyway) to provide data for your own algorithms.

If only there was a large scale effort underway to use nature more efficiently compared to our current compute tech! You know, like other ways of building computers, not just with transistors...

## Quantum computing

Whoah, what? I realise that the gap between bending leaves, dipping objects in water and a fully operational quantum computer is massive, so let me attempt to bridge it.

A computer made of leaves and a quantum computer are very similar things just on entirely different scales. Part of why quantum computing appears impenetrable is that our language is not made for describing quantum phenomena – and so one of our main tools for communicating knowledge is instead firmly rooted in the classical domain. This mismatch causes various bits of imprecise information about quantum computing out there to come into conflict with one another, so our brain instinctively just nopes out of there. But there are three exceptional resources that I found are eloquent and precise and have helped me build intuition about quantum computing [6, 7, 8]. In [6], Dr. Talia Gershon of IBM research talks about what quantum computers are and how they work – and she does this in 5 different levels, talking to different people with an increasing familiarity with the concept, from presenting information using spinning quarters instead of just heads or tails at the first level, all the way up to talking quantum shop about Shor’s algorithm, decoherence and fault-tolerance. In [7] Andrew Helwer of Microsoft gives the clearest practical presentation of qubits, operations on them, and how those compose into a purposeful computer, that I have found to date. And in [8] Zach from Saturday Morning Breakfast Cereal gives us “The Talk” about quantum computing in comic form, in an effort to share with precision the ideas behind it. All three of those I would highly recommend!

It has only recently occurred to me that quantum computing *is* natural computing.

Most of using a quantum computer is transferring state from a classical world to a quantum world, and back again, in a useful way. That sounds quite similar to the lossy way of supplying parameters to our leaf computer and reading the result of its computation by imprecisely measuring the bending angle.

The way you need to carefully manipulate the starting parameters of a quantum computer and encode the problem into a complex quantum state and then manipulate that state to drive it towards a solution by choreographing a pattern of interference where the paths leading to each wrong answer interfere destructively and cancel out, while the paths leading to the right answer reinforce each other [6, 8] – that sounds exceptionally similar to our hypothetical classical wave computer and providing the right input and problem for it to be able to compute an answer and output it via the wave amplitudes at specific points.

The way a quantum computer’s state can quickly fall apart before a useful computation completes and an answer can be measured, through a process of quantum decoherence, sounds eerily similar to what would happen in our classical wave computer too, due to air resistance and heat and other elements of relative chaos in nature.

Intuitively, because of all of these connections, it does feel like quantum computing belongs squarely in the natural computing world, only made even more fragile but also more powerful by its quantum behaviour.

I’m happy to have found an actual bleeding-edge research topic (it’s frequently presented with such an air of mystery, that for the longest time it didn’t look familiar at all) for this idea that has so long bounced around in my head. I’m also humbled by and in awe of the state of the art of it. It’s as if someone took the leaf blowing in the wind computer idea, then added just a few tiny features to include quantum superposition and entanglement and superconductivity and other completely mind-blowing concepts. Yes, kind of like that.

## Conclusion

With all of the above, because these ideas were discovered in a very meandering fashion, I really haven’t done (and I can’t even hope to do so) the field of natural computing [3, 4, 5] justice. It’s a very active field (sometimes also called unconventional computing) that includes topics like computing with DNA, computing with bacteria, molecular computing, swarming, synthetic biology and many more very interesting topics. I encourage you to dig in the resources below! Personally, I especially enjoyed [4] for a more approachable and philosophical discussion about nature as a computer.

In summary, I’ve always felt that we’ve built new things in nature in a way that allows us to compute and solve problems, but we haven't really built problems in a way, that would allow them to be solved by nature on its own. What quantum computing is doing is combining the above: we're building new things in nature (the machines needed for quantum computing) and presenting problems to nature in a completely new way (using quantum programs). Both of which will help nature do the problem solving for us. An exciting time to be alive, that’s for damn sure.

## References

**Dip transform for 3D shape reconstruction (Aberman et al., 2017)**https://www.cs.tau.ac.il/~dcor/articles/2017/Dip.Transform.pdf**Video of dip transform from SIGGRAPH (2017)**https://www.youtube.com/watch?v=yHvyPnkuAiw**Natural Computing**https://en.wikipedia.org/wiki/Natural_computing**What is Computation? (How) Does Nature Compute?**https://www.cs.indiana.edu/~dgerman/hector/mNKS08final.pdf**Nature Inspired Computing: An Overview and Some Future Directions (Siddique et al., 2015)**https://link.springer.com/article/10.1007/s12559-015-9370-8**Dr. Talia Gershon Explains Quantum Computing in 5 Levels of Difficulty**https://www.youtube.com/watch?v=OWJCfOvochA**Quantum Computing for Computer Scientists**https://www.youtube.com/watch?v=F_Riqjdh2oM**The (Quantum) Talk**https://www.smbc-comics.com/comic/the-talk-3