Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Von Neumann Universal Constructor (wikipedia.org)
90 points by amjd on March 31, 2020 | hide | past | favorite | 29 comments


David Deutsch, the physicist who proved that quantum computers can be Turing complete, has recently created constructor theory:

http://constructortheory.org/

"Constructor Theory is a new approach to formulating fundamental laws in physics. Instead of describing the world in terms of trajectories, initial conditions and dynamical laws, in constructor theory laws are about which physical transformations are possible and which are impossible, and why. This powerful switch has the potential to bring all sorts of interesting fields, currently regarded as inherently approximative, into fundamental physics. These include the theories of information, knowledge, thermodynamics, and life."


I am not sure what this brings to the table. I read the first paper about information theory from the constructor viewpoint and a constructor just seems to be some function. I am not sure if there is some deep takeaway. Physics people already care about what "transformations" occur on a system? Eg quantum computation is about unitary transformations?

I also feel its like a physicist is trying to recast stuff in a functional perspective without knowing it. For example saying a quantum field theory is a functor : Bord -> Vect, might be something a mathematician would say, but it seems not many physics people would be familiar with this idea.

I think its also interesting they have this flashy website which kind of reminds me of a scam.


I love the intentional or unintentional reference to Trurl and Klapaucius, the constructors in Stanislaw Lem's novel, Cyberiad, who grappled with many philosophical issues like artificial intelligence, robotics, technology, thermodynamics, life, love, romance, poetry, self replication, and the origin of the universe.

https://www.donhopkins.com/home/catalog/lem/Trurl.html

https://www.donhopkins.com/home/catalog/lem/Klapaucius.html

https://en.wikipedia.org/wiki/The_Cyberiad

>Trurl and Klapaucius

>Trurl and Klapaucius are brilliant (robotic) engineers, called "constructors" (because they can construct practically anything at will), capable of almost God-like exploits. For instance, on one occasion Trurl creates an entity capable of extracting accurate information from the random motion of gas particles, which he calls a "Demon of the Second Kind". He describes the "Demon of the First Kind" as a Maxwell's demon. On another, the two constructors re-arrange stars near their home planet in order to advertise.

>The duo are best friends and rivals. When they are not busy constructing revolutionary mechanisms at home, they travel the universe, aiding those in need. As the characters are firmly established as good and righteous, they take no shame in accepting handsome rewards for their services. If rewards were promised and not delivered, the constructors may even severely punish those who deceived them.

[...]

>On another occasion, Trurl and Klapaucius are captured by an interstellar "PHT" pirate. Trurl offers to build a machine capable of turning hydrogen into gold (something he can do manually, which he demonstrates by hand, mixing up protons and putting electrons around). However, the pirate turns out to have a PhD and cares not for the riches, but for knowledge (and in fact points out that gold becomes cheap if it is abundant). Trurl therefore makes a modified Maxwell's demon for him, an entity that looks at moving particles of gas and reads information that is, coincidentally, encoded in their random perturbations. This way, all the information in the universe becomes easily available. The demon prints out this information on a long paper tape, but before the pirate realizes most of the information is completely useless (although strictly factual) he is buried under the endless rolls of tape, ceasing to bother anyone.


See also Google's 2011 interactive doodle inspired by The Cyberiad,[1] in particular by the machine that could create anything starting with n.[2]

[1] https://www.google.com/doodles/60th-anniversary-of-stanislaw...

[2] https://english.lem.pl/works/novels/the-cyberiad/146-how-the...


von neumann’s original papers mention that his studies on CA were an abstraction due to the limitations of 1940’s technology. His main concern was really automatic replication of real world physical objects.

In this respect, 3D printers offer a partial solution. Totally automated assembly is still being worked on.


Here's some stuff about that I posted in an earlier discussion, and transcribed from his book, "Theory of Self-Reproducing Automata".

His concept of self-reproducing mutating probabilistic quantum mechanical machine evolution is quite fascinating and terrifying at the same time (or outside of time), potentially much more powerful and dangerous than mere physical nanotechnology "gray goo" and universe-infesting self replicating von Neumann probes:

Can Programming Be Liberated from the von Neumann Style? (1977) [pdf] (thocp.net)

https://news.ycombinator.com/item?id=21855249

https://news.ycombinator.com/item?id=21858465

John von Neuman's 29 state cellular automata machine is (ironically) a classical decidedly "non von Neumann architecture".

https://en.wikipedia.org/wiki/Von_Neumann_cellular_automaton

He wrote the book on "Theory of Self-Reproducing Automata":

https://archive.org/details/theoryofselfrepr00vonn_0

He designed a 29 state cellular automata architecture to implement a universal constructor that could reproduce itself (which he worked out on paper, amazingly):

https://en.wikipedia.org/wiki/Von_Neumann_universal_construc...

He actually philosophized about three different kinds of universal constructors at different levels of reality:

First, the purely deterministic and relatively harmless mathematical kind referenced above, an idealized abstract 29 state cellular automata, which could reproduce itself with a Universal Constructor, but was quite brittle, synchronous, and intolerant of errors. These have been digitally implemented in the real world on modern computing machinery, and they make great virtual pets, kind of like digital tribbles, but not as cute and fuzzy.

https://github.com/SimHacker/CAM6/blob/master/javascript/CAM...

Second, the physical mechanical and potentially dangerous kind, which is robust and error tolerant enough to work in the real world (given enough resources), and is now a popular theme in sci-fi: the self reproducing robot swarms called "Von Neumann Probes" on the astronomical scale, or "Gray Goo" on the nanotech scale.

https://en.wikipedia.org/wiki/Self-replicating_spacecraft#Vo...

https://grey-goo.fandom.com/wiki/Von_Neumann_probe

>The von Neumann probe, nicknamed the Goo, was a self-replicating nanomass capable of traversing through keyholes, which are wormholes in space. The probe was named after Hungarian-American scientist John von Neumann, who popularized the idea of self-replicating machines.

Third, the probabilistic quantum mechanical kind, which could mutate and model evolutionary processes, and rip holes in the space-time continuum, which he unfortunately (or fortunately, the the sake of humanity) didn't have time to fully explore before his tragic death.

p. 99 of "Theory of Self-Reproducing Automata":

>Von Neumann had been interested in the applications of probability theory throughout his career; his work on the foundations of quantum mechanics and his theory of games are examples. When he became interested in automata, it was natural for him to apply probability theory here also. The Third Lecture of Part I of the present work is devoted to this subject. His "Probabilistic Logics and the Synthesis of Reliable Organisms from Unreliable Components" is the first work on probabilistic automata, that is, automata in which the transitions between states are probabilistic rather than deterministic. Whenever he discussed self-reproduction, he mentioned mutations, which are random changes of elements (cf. p. 86 above and Sec. 1.7.4.2 below). In Section 1.1.2.1 above and Section 1.8 below he posed the problems of modeling evolutionary processes in the framework of automata theory, of quantizing natural selection, and of explaining how highly efficient, complex, powerful automata can evolve from inefficient, simple, weak automata. A complete solution to these problems would give us a probabilistic model of self-reproduction and evolution. [9]

[9] For some related work, see J. H. Holland, "Outline for a Logical Theory of Adaptive Systems", and "Concerning Efficient Adaptive Systems".

https://www.deepdyve.com/lp/association-for-computing-machin...

https://deepblue.lib.umich.edu/bitstream/handle/2027.42/5578...

https://www.worldscientific.com/worldscibooks/10.1142/10841

Ericson2314 3 months ago [-]

> Although I refer to conventional languages as "von Neumann languages" to take note of their origin and style, I do not, of course, blame the great mathematician for their complexity. In fact, some might say that I bear some responsibility for that problem.

From the paper. Whew.


Are there any good resources that build up from no experience in CA to a Universal Constructor?


Download and look at all the examples included with Golly: http://golly.sourceforge.net/

Most amazing topics in CA have an example included, including universal constructors.


The name alone will bring out a bunch of flamers, but Stephen Wolfram wrote an enormous tome on cellular automata. I haven't read it all, and an index search shows it has nothing about the universal constructor specifically, but it should be a substantial introduction. It's available free at:

https://www.wolframscience.com/nks/


I was never properly trained in its operation.


I know this reference.


I suspect there aren't. Please write the book while you learn about it, and we can all have it. Thanks!

(I'm a strong believer in writing the books yourself that you really would love, but don't exist.)


If you don't have the time to write whole books yourself, you can just write fictitious reviews and criticisms of books that don't actually exist, touching on all the best parts and ignoring the rest. And nobody will be able to contradict you!

https://en.wikipedia.org/wiki/Stanis%C5%82aw_Lem%27s_fictiti...

>Stanisław Lem's fictitious criticism of nonexistent books

>Stanisław Lem's fictitious criticism of nonexistent books may be found in his following works: in three collections of faux reviews of fictional books: A Perfect Vacuum (Doskonała próżnia, 1971), Provocation (Prowokacja, 1984), and Library of 21st Century (Biblioteka XXI wieku, 1986) translated as One Human Minute, and in Imaginary Magnitude (Wielkość Urojona, 1973), a collection of introductions to nonexistent books.

>While reviewing nonexistent books, a modern form of pseudepigraphy, Stanisław Lem attempted to create different fictional reviewers and authors for each of the books. In his own words: "I tried to imitate various styles – that of a book review, a lecture, a presentation, a speech (of a Nobel Prize laureate) and so on". Some of the reviews are lighthearted, concentrating mostly on the story; others, however, read more like serious, academic reviews. Some of the reviews are parodies, or the books being reviewed are parodies or complete impossibilities, others are quite serious and can be seen almost as drafts for novels that Lem never got around to write. Lem wrote: "With years passing a great impatience grew in me. It would be a hard work to convert ideas into narration, and that was one of the main reasons I went for such cruel abridgements of the books". Lem was not alone in passing through this kind of crisis: examples abound of works planned by literary celebrities, but never completed. Lem also remarked that he was eventually convinced that writing summaries and introductions enabled him to save time on producing things of importance, namely, his modeling experiments, compared to full-blown literary efforts, most of which would have constituted mundane craftsmanship.

[...]

>One Minute

>The reviewed faux book is alleged to be a collection of statistical tables, a compilation that includes everything that happens to human life on the planet within any given 60 second period. Reviewing it, Lem expresses his fascination with this project and points out its inherent flaw. He notes that these tables show "far more statistical evidence of human evil (murders, rapes, starving children) than of human decency". At the same time he remarks that it is impossible to measure "filial or maternal love", or to "gauge the heat of lovers' passions", or to register "those acts of kindness whose authors wished to remain anonymous."


Thank you! Gee, that's such a brilliant idea. I must try it.

If Chesterton's Mr McCabe (from On Mr. McCabe and a Divine Frivolity[0] in Heretics) had never existed, it would make little difference. It's just an excuse to say what he wants to say.

...criticism of the highest kind...treats the work of art simply as a starting-point for a new creation. It does not confine itself...to discovering the real intention of the artist and accepting that as final. And in this it is right, for the meaning of any beautiful created thing is, at least, as much in the soul of him who looks at it, as it was in his soul who wrought it. Nay, it is rather the beholder who lends to the beautiful thing its myriad meanings, and makes it marvellous for us, and sets it in some new relation to the age, so that it becomes a vital portion of our lives, and a symbol of what we pray for, or perhaps of what, having prayed for, we fear that we may receive. – Wilde, The Critic As Artist

[0] http://gutenberg.net.au/ebooks13/1301191h.html#ch16

Edit: I've 'borrowed' A Perfect Vacuum from archive.org, thanks! Also, I've hardly read any Borges, but that Borges fake review of a novel which is identical with Don Quixote but totally different is one of the funniest things I've read.

http://www.coldbacon.com/writing/borges-quixote.html


Check out Buckley's paper, "Signal crossing solutions in von Neumann self-replicating cellular automata", page 453-503 of the Automata-2008 proceedings.

The Wikipedia article discusses and cites the paper, but the link is broken, so here's a better one:

"Signal crossing solutions in von Neumann self-replicating cellular automata", page 453-503

https://donhopkins.com/home/documents/automata2008reducedsiz...

It has a great nuts-and-bolts explanation of how John von Neumann's 29 state rule and his universal constructor work, with lots of details, theories, and practical advice about the design and working of various "organs", like basic building blocks (specifically signal crossings), reusable components, higher level machines, programming techniques, data representation and coding, and overall architecture.

The paper is about how to construct organs that initialize themselves the first time they come alive, kind of like a C++ constructor, that's only used once in the lifetime of an object.

That's important because you have to construct unexcited devices with the power off (no excited states), using a construction arm kind of like a 3d or ink jet printer head, but 2d and cells, driven by a "tape" of instructions that moves the arm back and forth and draws the required 2d grid of cells.

Factorio players will recognize these tapes of construction instructions as 2D "blueprints" that construction drones use to build patterns of factories and conveyor belts, etc. In Factorio, after your drones have build a blueprint in the unpowered, unsupplied state, you can connect it to the power grid, hook up pipes to deliver fluids, and run conveyor belts in and out of it to deliver resources and products, and it will immediately starts doing its thing. Playing Factorio is uncannily like von Neumann 29 state cellular automata programming, not by coincidence. So it's a great way to get your head around cellular automata programming, gpu programming, parallel programming, queuing systems, and data flow programming in general!

Factorio Tutorial #20 - Bots, part 1 - Construction robots

https://www.youtube.com/watch?v=kLOyk55uI2Y&t=19m32s

Factorio just doesn't have the ability to construct cells by spilling items off the end of conveyor belts, or destroy cells with conveyor belts, either. But maybe there's an extension for that! And John von Neumann's 29 state cellular automata doesn't have swarms of construction drones that build and tear down blueprints in parallel like Factorio does, so there are some differences. But the basic idea of grids of cells with conveyor belts carrying items between factories is the same.

Once you construct an auto-initializing machine, you inject the powered-off copy with a signal, like a reset pulse followed by data, for it to process. And the data can be a program like a series of instructions to control the drawing arm, data to transfer or process, timing signals, or control signals for other machines.

Not all machines need to auto-initialize, but machines that use auto-initialization "code" run it once first to set up all the timers and signals, and then the code cuts itself off and switches to the normal runtime "code" for processing the input signals, using "self modifying code" that cuts the traces to the initialization circuit and draws the traces to conduct the signal into the now-initialized machine itself.

(Self modifying code can destroy an arrow by pointing to it with another "special" kind of arrow, and sending an excited signal to it, then it disappears and cuts off the downstream circuit. And it can draw new arrows at any time, the same way as the construction arm does, by pointing an arrow at an empty unexcited space, and sending out a series of on/off signals to select which cell to create (huffman encoding).

So the construction arm prints out an unpowered machine, which, when powered up, initializes itself once, and then modifies itself to permanently switch into run mode.

A self replicating machine (which was stupendously huge and complex for a program from 1940 designed on graph paper without the help of computers, but is a microscopic speck compared to Electron today) first prints a powered-down copy of itself, then injects a copy of its program into the storage device of the new copy through an "umbilical cord", then sends it a reset signal to boot it to "life" and make it start executing its copy of the program from its own tape, and reproducing itself. (Breathing a copy of its "soul" into its new child machine, so to speak.)

The parent would typically print a copy of itself offset in the same direction as its parent had printed it, then shut down (or at least stop building and go into a deep state of meditation, counting electric sheep or something) after reproducing once, so as not to hurt its child.

It's left as an exercise to the reader to design a self reproducing machine that knows how to eat its parent to make more room to expand, or a parent that eats its children, but it's probably impossible to design a machine that could destroy itself (like "delete this" in C++). Deleting that last little part would be tricky!

https://www.youtube.com/watch?v=tJBeih6JZrs

For one of the best and most beautiful books on cellular automata in general, check out Margolus and Toffoli's "Cellular Automata Machines: A New Environment for Modeling" from MIT Press, which describes the CAM-6 hardware:

https://www.amazon.com/Cellular-Automata-Machines-Environmen...

https://donhopkins.com/home/Tommaso_Toffoli_Norman_Margolus_...

(by permission of the authors)

CAM-6 Forth source code:

http://www.donhopkins.com/home/code/tomt-cam-forth-scr.txt

http://www.donhopkins.com/home/code/tomt-users-forth-scr.txt

Rudy Rucker has also written some wonderful stuff about the CAM-6:

https://news.ycombinator.com/item?id=14469113

Rudy Rucker writes about his CAM-6 in the CelLab manual:

http://www.fourmilab.ch/cellab/manual/chap5.html

Computer science is still so new that many of the people at the cutting edge have come from other fields. Though Toffoli holds degrees in physics and computer science, Bennett's Ph.D. is in physical chemistry. And twenty-nine year old Margolus is still a graduate student in physics, his dissertation delayed by the work of inventing, with Toffoli, the CAM-6 Cellular Automaton Machine.

After watching the CAM in operation at Margolus's office, I am sure the thing will be a hit. Just as the Moog synthesizer changed the sound of music, cellular automata will change the look of video.

I tell this to Toffoli and Margolus, and they look unconcerned. What they care most deeply about is science, about Edward Fredkin's vision of explaining the world in terms of cellular automata and information mechanics. Margolus talks about computer hackers, and how a successful program is called “a good hack.” As the unbelievably bizarre cellular automata images flash by on his screen, Margolus leans back in his chair and smiles slyly. And then he tells me his conception of the world we live in.

“The universe is a good hack.”

[...]

Margolus and Toffoli's CAM-6 board was finally coming into production around then, and I got the Department to order one. The company making the boards was Systems Concepts of San Francisco; I think they cost $1500. We put our order in, and I started phoning Systems Concepts up and asking them when I was going to get my board. By then I'd gotten a copy of Margolus and Toffoli's book, Cellular Automata Machines, and I was itching to start playing with the board. And still it didn't come. Finally I told System Concepts that SJSU was going to have to cancel the purchase order. The next week they sent the board. By now it was August, 1987.

The packaging of the board was kind of incredible. It came naked, all by itself, in a plastic bag in a small box of styrofoam peanuts. No cables, no software, no documentation. Just a three inch by twelve inch rectangle of plastic—actually two rectangles one on top of the other—completely covered with computer chips. There were two sockets at one end. I called Systems Concepts again, and they sent me a few pages of documentation. You were supposed to put a cable running your graphics card's output into the CAM-6 board, and then plug your monitor cable into the CAM-6's other socket. No, Systems Concepts didn't have any cables, they were waiting for a special kind of cable from Asia. So Steve Ware, one of the SJSU Math&CS Department techs, made me a cable. All I needed then was the software to drive the board, and as soon as I phoned Toffoli he sent me a copy.

Starting to write programs for the CAM-6 took a little bit of time because the language it uses is Forth. This is an offbeat computer language that uses reverse Polish notation. Once you get used to it, Forth is very clean and nice, but it makes you worry about things you shouldn't really have to worry about. But, hey, if I needed to know Forth to see cellular automata, then by God I'd know Forth. I picked it up fast and spent the next four or five months hacking the CAM-6.

The big turning point came in October, when I was invited to Hackers 3.0, the 1987 edition of the great annual Hackers' conference held at a camp near Saratoga, CA. I got invited thanks to James Blinn, a graphics wizard who also happens to be a fan of my science fiction books. As a relative novice to computing, I felt a little diffident showing up at Hackers, but everyone there was really nice. It was like, “Come on in! The more the merrier! We're having fun, yeeeeee-haw!”

I brought my AT along with the CAM-6 in it, and did demos all night long. People were blown away by the images, though not too many of them sounded like they were ready to a) cough up $1500, b) beg Systems Concepts for delivery, and c) learn Forth in order to use a CAM-6 themselves. A bunch of the hackers made me take the board out of my computer and let them look at it. Not knowing too much about hardware, I'd imagined all along that the CAM-6 had some special processors on it. But the hackers informed me that all it really had was a few latches and a lot of fast RAM memory chips.



This isn't relevant to the question asked, and you've already posted a link to it in the comments.


I would be interested in the simplest form of self-replication, that is, the simplest automata machine, and the simplest initial set of states...

Interestingly, Phi spirals -- seem to construct themselves in nature at many different scales, and without (apparently) running inside of an automata machine of any sort...

I nominate Phi spirals as universal (sans apparent automata machine) constructors...

If someone could explain what type of automata machine Phi spirals are running in, and what this automata machine's rules are, then I think that would go a long way to understanding the universe, but at this point in time, I cannot determine a universal automata machine, nor its rules...

I only know that Phi spirals are automatically formed by nature, at a variety of scales, and in a variety of mediums...


You may be interested in https://en.wikipedia.org/wiki/Langton%27s_loops

See in particular Chou-Reggia loops, which are very small.


What are some examples of Phi spirals (assuming you mean golden spirals?) outside of biology? We see them all over the natural world but off the top of my head I can't think of any non-biological examples. A quick read of Wikipedia points to logarithmic spirals occurring occasionally (although not specifically golden spirals).

(Also if we're just accepting geometric shapes, I'd nominate ellipses as being far more common, since they show up all the time in orbital mechanics.)


Spiral galaxy’s which occur due to decreasing orbital velocities (edit: in radians) as you move from the center. Whirlpools and hurricanes are shaped by similar rotational effects.

However, their close approximations not exactly the correct shape.


That orbital velocities don’t do that was one of the first mysteries which led to people thinking about dark matter:

https://en.m.wikipedia.org/wiki/Galaxy_rotation_curve#/media...


That’s not enough to offset the increased distances from longer orbits. So you still get a spiral as the velocity in in radians decreases. But, it looks like a Golden spiral because the velocities in m/s are almost constant due to dark matter.

PS: Should have said orbital period to be more clear.



First paragraph of the Purpose section includes some simpler examples. And they are links, so check them out as well!

> However, it is clear that far simpler machines can achieve self-replication. Examples include trivial crystal-like growth, template replication, and Langton's loops. But von Neumann was interested in something more profound: construction, universality, and evolution.


> Phi spirals -- seem to construct themselves

They are not self replicating. Some other process is creating them (usually life).


You also get beautiful spirals from Belousov–Zhabotinsky reactions. They can be simulated by cellular automata, and are manifested in nature by chemical reactions, slime molds, and reefs of tube worms!

I don't think they're Turing complete or self replicating per se, but you can start them on a random configuration, and they will form several spiraling "attractors" around oscillating cores ("nucleation"), that send out concentric spiraling waves, which meet waves from other attractors (or boundaries in the environment like a maze) and reinforce or cancel each other out, and also they can solve mazes and climb gradients and find food! (Plus, slime molds are not only beautiful, but make great pets, and they're easy to care for!)

https://en.wikipedia.org/wiki/Belousov%E2%80%93Zhabotinsky_r...

https://en.wikipedia.org/wiki/Attractor

https://en.wikipedia.org/wiki/Nucleation

Mould Time-lapse - The Great British Year: Episode 4 Preview - BBC One: Meet the Slime Mold

https://www.youtube.com/watch?v=GY_uMH8Xpy0

The Belousov-Zhabotinsky Reaction - Christmas Lectures with Ian Stewart

https://www.youtube.com/watch?v=o72GGxQqWt8

Sub-excitable Belousov-Zhabotinsky medium solves Reims maze: Oregonator model

https://www.youtube.com/watch?v=YWeSOEvVF7w

Can Slime Mould Solve Mazes? | Earth Lab

https://www.youtube.com/watch?v=HyzT5b0tNtk

Slime mould solves maze in one pass ... assisted by gradient of chemo-attractants

https://arxiv.org/abs/1108.4956

>Plasmodium of Physarum polycephalum is a large cell, visible by unaided eye, which exhibits sophisticated patterns of foraging behaviour. The plasmodium's behaviour is well interpreted in terms of computation, where data are spatially extended configurations of nutrients and obstacles, and results of computation are networks of protoplasmic tubes formed by the plasmodium. In laboratory experiments and numerical simulation we show that if plasmodium of Physarum is inoculated in a maze's peripheral channel and an oat flake (source of attractants) in a the maze's central chamber then the plasmodium grows toward target oat flake and connects the flake with the site of original inoculation with a pronounced protoplasmic tube. The protoplasmic tube represents a path in the maze. The plasmodium solves maze in one pass because it is assisted by a gradient of chemo-attractants propagating from the target oat flake.

Dictyostelium discoideum, axenic strain, aggregation on a petri dish

https://www.youtube.com/watch?v=Yl3ESZ4XQLI

>The aggregation of Dictyostelium discoideum amoebae after starvation provides one of the best examples of spatiotemporal pattern formation at the supracellular level. This transition from a unicellular to a multicellular stage of the life cycle occurs by a chemotactic response to cyclic AMP (cAMP) signals emitted by aggregation centers in a periodic manner. Amoebae are capable of relaying the signals emitted periodically by a center located in their vicinity. This excitable response to periodic signals explains the wavelike nature of aggregation over territories whose dimensions can reach up to 1 cm: within each aggregation territory, the amoebae move toward a center in concentric or spiral waves with a periodicity of the order of 5 to 10 min. Waves of cellular movement correlate with waves of cAMP; the latter present a striking similarity to waves observed in oscillatory chemical systems such as the Belousov--Zhabotinsky reaction.

Rudy Rucker's CellLab Rule Documentation: ZHABO, ZHABOF, and ZHABOFF (the same rule that appears on the cover of Margolus and Toffoli's classic book on the CAM-6 hardware, "Cellular Automata Machines: A New Environment for Modeling"):

http://www.rudyrucker.com/oldhomepage/celdoc/rules.html#Zhab...

>A picture of Zhabo appears on the cover of [Margolus&Toffoli87].

>Margolus and Toffoli make a interesting simile between the Zhabotinsky reaction and a reef of tubeworms. When a tubeworm feels safe, it sticks a plume out of its shell to seine the water for food. If a feeding tubeworm senses any disturbance nearby (e.g. the presence of several other feeding tubeworms), it retracts its plume and waits for a few cycles before feeding again.

Margolus and Toffoli's Cellular Automata Machines: A New Environment for Modeling:

https://www.amazon.com/Cellular-Automata-Machines-Environmen...

https://donhopkins.com/home/Tommaso_Toffoli_Norman_Margolus_... (by permission of the authors)

Don Hopkins' Cellular Automata and Video Feedback Demo Reel (Showing three variations of the CAM-6 "WORMS" rule: Yuppie Worms, Middle Class Worms, and Bohemian Worms, rendered with an AfterEffects plug-in I developed)

https://www.youtube.com/watch?v=eCVJ08gK2o8

AfterEffects Aether Demo

https://www.youtube.com/watch?v=N1Y-29tX0Co


First of all, fascinating!

Second, random thought unrelated to this thread:

If we think about a the Belousov–Zhabotinsky reaction, it's sort of different than most other chemical reactions, that is, most other chemical reactions are unidirectional, Belousov–Zhabotinsky reaction is bidirectional, or perhaps we'd call it cyclical...

What would be fascinating, I think, would be to attempt to figure out what it would take to stabilize a Belousov–Zhabotinsky reaction in one state... like what chemical or chemicals, and how much of them would do that?

Even more interesting... try to stabilize it in one state using electricity... or sound... or other electromagnetic wave phenomena...

If it could be stabilized in one state using any wave phenomena, then perhaps we might unlock some new understanding about this reaction, and Chemistry in general...

Anyway, my apologies, the above thought was unrelated to this discussion, but I needed to write it down someplace, and this was the most convenient place...<g>


This is one of my favorite topics and wikipedia pages! Please forgive my wall of text, and inscrutable ascii graphics, and check out the Buckley paper for better illustrations.

Here's some JavaScript code that implements (and describes) John von Neuman's 29 state cellular automata machine. I based it on some older "jvn" C code by R. Nobili, U. Pesavento, and Umberto Pesavento I found on the net, but I have rewritten it to be more symbolic and self documenting, so I could understand it better.

What it really needs is a specialized set of rule-specific editing tools and templates to stamp down, since it's impossibly tedious to paint anything non-trivial with the CA painting tools that this version of CAM6 currently supports.

https://github.com/SimHacker/CAM6/blob/master/javascript/CAM...

I've tried to document what everything means and describe how it works. With evocative function names and comments like "pointedToByExcitedOrdinaryOrSpecial" (Return 1 if pointed by an excited transmission state (ordinary or special), else returns 0) and "wellFlankedByExcitedNotNextExcitedConfluent" (Return 1 if well flanked by an excited (not next excited) confluent state, else returns 0)! ;)

For example, here are the bit sequences for constructing new cells. You can send these sequences of bits down a wire to an arrow pointing into an empty space, and it will construct the corresponding cell in that empty space -- the intermediate construction states are called "Sensitized", and they huffman-encode all the possible cells you can create. Note that you can only construct non-excited cells. (See Buckley, page 457, The mechanisms of construction, below.)

                // Instructions to the jvn29 construction arm, whose tip
                // is an arrow pointing into an unexcited state, that
                // creates a sensitized state which evolves into other
                // states over time, given the following excitement inputs.

                constructionInstructions: {
                    OR:  '10000', // => S S0 S00 S000 OR
                    OU:  '10001', // => S S0 S00 S000 OU
                    OL:  '1001',  // => S S0 S00 OL
                    OD:  '1010',  // => S S0 S01 OD
                    SR:  '1011',  // => S S0 S01 SR
                    SU:  '1100',  // => S S1 S10 SU
                    SL:  '1101',  // => S S1 S10 SL
                    SD:  '1110',  // => S S1 S11 SD
                    C00: '1111'   // => S S1 S11 C00
                },
Here is the table of all the possible cell values, symbols and names (which is useful for an editor's user interface):

                // Array of dicts describing cell values for jvn29.

                cellStates: [
                    { symbol: 'U',    value: 0x00, name: 'Unexcited'              },
                    { symbol: 'S',    value: 0x01, name: 'Sensitized'             },
                    { symbol: 'S0',   value: 0x02, name: 'Sensitized 0'           },
                    { symbol: 'S1',   value: 0x03, name: 'Sensitized 1'           },
                    { symbol: 'S00',  value: 0x04, name: 'Sensitized 00'          },
                    { symbol: 'S01',  value: 0x05, name: 'Sensitized 01'          },
                    { symbol: 'S10',  value: 0x06, name: 'Sensitized 10'          },
                    { symbol: 'S11',  value: 0x07, name: 'Sensitized 11'          },
                    { symbol: 'S000', value: 0x08, name: 'Sensitized 000'         },
                    { symbol: 'C00',  value: 0x10, name: 'Confluent 00'           },
                    { symbol: 'C10',  value: 0x11, name: 'Confluent 10'           },
                    { symbol: 'C01',  value: 0x90, name: 'Confluent 01'           },
                    { symbol: 'C11',  value: 0x91, name: 'Confluent 11'           },
                    { symbol: 'OR',   value: 0x20, name: 'Ordinary Right'         },
                    { symbol: 'OU',   value: 0x21, name: 'Ordinary Up'            },
                    { symbol: 'OL',   value: 0x22, name: 'Ordinary Left'          },
                    { symbol: 'OD',   value: 0x23, name: 'Ordinary Down'          },
                    { symbol: 'SR',   value: 0x40, name: 'Special Right'          },
                    { symbol: 'SU',   value: 0x41, name: 'Special Up'             },
                    { symbol: 'SL',   value: 0x42, name: 'Special Left'           },
                    { symbol: 'SD',   value: 0x43, name: 'Special Down'           },
                    { symbol: 'ORX',  value: 0xa0, name: 'Ordinary Right Excited' },
                    { symbol: 'OUX',  value: 0xa1, name: 'Ordinary Up Excited'    },
                    { symbol: 'OLX',  value: 0xa2, name: 'Ordinary Left Excited'  },
                    { symbol: 'ODX',  value: 0xa3, name: 'Ordinary Down Excited'  },
                    { symbol: 'SRX',  value: 0xc0, name: 'Special Right Excited'  },
                    { symbol: 'SUX',  value: 0xc1, name: 'Special Up Excited'     },
                    { symbol: 'SLX',  value: 0xc2, name: 'Special Left Excited'   },
                    { symbol: 'SDX',  value: 0xc3, name: 'Special Down Excited'   }
                ],
I wrote an earlier version in OpenLaszlo that had some custom editing tools, but that requires Flash, and was on my old Drupal site that's not up any more. But here is the archive.org link and description (with a screen snapshot). I wasn't able to get the old Flash app to run though. The source code has some interesting initial condition configurations, that I'll try explain, and are described in more detail in a paper referenced on the Wikipedia page:

https://web.archive.org/web/20110720235050/https://www.donho...

John von Neumann's 29 state Cellular Automata Implemented in OpenLaszlo

Submitted by dhopkins on Sun, 2005-09-18 04:12. Cellular Automata Live Demos

For fun, and to learn OpenLaszlo, I implemented the classic 29 state self reproducing cellular automata, invented by John von Neumann.

The JavaScript and XML code is written with no thought to efficiency, just conceptual clarity and convenience of implementation. It can't run a lot of cells at once, but at least it's slow enough to watch it compute. Don't worry: there's not space for it to reproduce!

I've configured it with several interesting initial conditions, including several different approaches to signal crossing, and an exclusive-or gate.

It uses pie menus for editing the grid of cells.

Laszlo von Neumann Cellular Automata Demo

https://web.archive.org/web/20120319060434/http://www.donhop...

Laszlo von Neumann Cellular Automata Source Code in Laszlo

https://web.archive.org/web/20120319060340/http://www.donhop...

Here are some of the most interesting initial configurations: all different ways to perform signal crossing. Signal crossing is difficult with this rule, which doesn't directly support it, so you have to "emulate it in software" with multi-celled machines or "organs". Here are a few different ways of dealing with signal crossing, each with their own problems and limitations.

Buckley's paper about these gadgets is called "Signal crossing solutions in von Neumann self-replicating cellular automata". The Wikipedia page discusses some of it and links to the paper, but the link is broken. So here is the paper about it on archive.org, on page 453:

https://web.archive.org/web/20081209155223/https://uncomp.uw...

or (faster download):

https://donhopkins.com/home/documents/automata2008reducedsiz...

The Real Time Crossing (Buckley, p. 457, The real-time crossing organ) is like a road intersection that splits the two crossing lanes, then uses traffic lights to give cars in each pair of lanes alternating turns to cross, and then merges the lanes back together (since each intersection works at 50% throughput, you need to split, use two of them, and merge -- Factorio and Satisfactory players will get what I mean, in terms of conveyor belts, splitters and mergers, and conveyor belt throughput).

The description of the real time crossing, "This real time crossing is not easily constructible, but nonetheless here it is", is a reference to the fact that you can only construct non-excited cells (you'd get electrocuted if you tried to construct machines with the power on, so to speak -- it may be possible to kludge it with some simple machines, but in general it's extremely impractical if not impossible -- see Buckley p. 470).

And after you've constructed a machine in a powered-down state, then you have to excite just the right cells at just the right time, to get the machine to work. But that's impossible with this real time signal crossing machine! So it's like a beautiful tiny crystal alien artifact with perfectly blinking lights, that the laws of physics practically prohibit from ever being constructed, but there it is.

The Real Time Crossing depends on having a certain synchronized configuration of excited cells in it, acting as synchronized clocks or traffic lights that start and stop all the traffic at just the right time so the cars don't collide.

It's not actually possible for a universal constructor to construct a real time crossing, because it can't reach in through existing cells and excite internal cells from outside. It's essentially like a "Garden of Eden" configuration, that had to have been constructed by the Hand of God, and can't be copied or constructed, or used as part of a reproducible machine. Essentially it has a "spark of life" that is beyond the ability of creatures living in the world to ignite. Intelligent Design and DRM FTW! ;)

          <save
            name="Real Time Crossing" 
            rows="16" cols="16"
            description="This real time crossing is not easily constructible, but nonetheless here it is."
          >
    sssssw-----sbhb-
    yggggggggg-wbyb-
    hhhhhhhhhy-wbyb-
    yggggggggg-wbyb-
    ------sssw-wbyb-
    ------w----wbyb-
    ------w----wbyb-
    --ezshqaez-wbyb-
    --yty--wyt-wbyb-
    --shqshqsb-wbyb-
    ssq-wezw-z-wbybs
    --z-wyty-qswbybw
    --shqshqsy--bybw
    --ezw--wez--bybw
    --ytyqswyt--bybw
    -----w------hyhw
          </save>
The "Coded Channel Crossing" (Buckley, p. 460) is like two channels sharing the same wire by using a coding system, so you have to somehow make sure neither channel tries to send a message over that one wire at the same time (left as an exercise for the reader ;), otherwise there will be a collision. This is the only kind of signal crossing organ designed by von Neumann.

          <save 
            name="Coded Channel Crossing" 
            rows="8" cols="64"
            description="Coded channel crossings have interference problems, demonstrated here."
          >
    -zaaaaaaa-----qsssesqsq-----------qhshqsssqsqsqsq---------------
    -z------w-----w---w-z-z-----------w-------w-z---z---------------
    -sshhsssqsssssqsqsq-ssssssssssssqsusqhesqsq-ssssshshssssssssssq-
    --------------------------w-----z-------------------------------
    zaagagaaa-thssqsssqsqsqsq-w-----b-tsssqsqsq---------------------
    z-------w-w-------w-z---b-w-----b-w---w-z-z---------------------
    ssssssssqsqsthqsqsq-ssssshw-----ssestsq-sshhsssssssssssssssssse-
    ----------------------------------------------------------------
          </save>
This is the fun one, and the subject of Buckley's paper, an "Autoinitializing Exclusive Or" organ (Buckley, p. 473 and on). You can use these to solve the signal crossing problem, without needing the intervention of a benevolent God to power up all your traffic lights with the right synchronization. It actually has a "boot up" sequence: you first send it a "reset" signal, and part of it is used to initialize all the clocks the first time it's run, then it fires a bunch of "explosive bolts" that cut off the auto-initialization circuitry, and start up the exclusive or gate, after all its clocks have been initialized. It's literally self modifying code, that pokes itself after it boots, to switch into run mode! That's why it's so big and messy, compared the elegant but impossible to construct real time crossing.

          <save
            name="Autoinitializing Exclusive Or" 
            rows="28" cols="40"
            description="William R. Buckley's autoinitializing exclusive-or is initialized by 11111 at each input."
          >
    sstsb-sqqssssssssssssssssssssssssz--szsz
    y-z-b-wsw------------------------z--wzwz
    w-b-b-w-sqqsqsssssssqfqssqsssssz-z--wzwz
    y-z-b-qawsw----ssz--wsw--wsz---z-z--wzwz
    w-b-b-qww-----sq-sqzqqz--wqaa--z-z--wzwz
    y-z-z-w-qsq---wsqr-swwassz--w--z-z--wzwz
    w-b-z-qaw-zcqsqsqsqssqsq-ssqw--z-z--wzwz
    y-z-z-qww-zfw-zsqc-szzasqr-szssz-z--wzwz
    w-b-zsw-w-z-w-sq-szwqqw--zqaqq-z-z--wzwz
    yaa-sqz-w-q-w--sswswzsz--zsw-w-z-z--wzwz
    ------qsq-ssqsssssssqfqssqssqw-zsqz-wzwz
    zga-sqw-z-ssqsssssssqfqssqssqszsq-szwzwz
    b-y-wsz-z-wa---ssz--wsw--wsz--zwsqwzwzwz
    z-w-w-q-z--w--sq-sssqqz--wqaaazw-w-zwzwz
    b-y-w-z-z-qw--wsqr-wawassz---wzw-w-zwzwz
    z-w-w-q-qswcqsqsqsqssqsq-ssqswsw-w-zwzwz
    b-y-y-z-z--fw-zsqc-zazasqr-z---w-w-zwzwz
    z-w-y-z-z---w-sq-sqsqqw--zqa---w-w-zwzwz
    b-y-y-z-zsszw--ssw--zsz--zsw--qw-w-zwzwz
    z-w-y-z-sq-sqsssssssqfqssqssssww-w-zwzwz
    hstsy-z--sqsqsssssssqfqssqsssssw-w-zwzwz
    ------z-----z--ssz--wsw--wsz-----w-zwzwz
    ------z-----z-sq-sszqqz--wqaa----w-zwzwz
    ------z----fz-wsqr-swwasqc--w----w-zwzwz
    ------z----rqsqsqsqssqsq-sssw----w-zwzwz
    ------z----------------ssw-------w-zwzwz
    ------sssssssssssssssssssssssssssw-zwzwz
    -----------------------------------swsww
          </save>
Buckley, p. 473 ("rtco" means "Real Time Crossing Organ"):

>Auto-initialisation provides much more capability than that used in the rtco, the examples of clock synchronisation and trivial reconstruction being the simplest applications. Mechanisms used are signal sampling, portal closure, clock synchronisation, and staged initialisation. Our implementation uses three separate start signals; a staged initialisation. Each clock of the rtco has a separate auto-initialisation circuit. Signal to a stage is intercepted from a suitable path of channel A, by an interposing confluent state, or portal, and directed to the pulser of the adjacent auto-initialisation circuit by an auxiliary path. Pulser output is directed to clock input; and to a special transmission path constructor, which is addressed shortly. Clock signal for the entire organ is suitably synchronised, as initialisation of the first clock pair occurs simultaneously upon input of the first start pulse. All subsequent initialisations occur given knowledge of timing for the first two clocks. In this way, synchronisation becomes a trivial concern. Figure 17 shows the auto-initialisable rtco.

>Fig. 17. The rtco, configured for auto-initialisation. The minimum start signal for this organ is 10^13 10^32 1, which is applied once to Ai. The organ begins crossing signal 30 clock ticks later. This organ can be started at the time of construction; there is no start signal propagation. All signal crossing paths impose equal delay. The organ has 18×18 dimensions. This configuration can be marginally reduced in area.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: