Puzzle for the Day

How do you build a computer out of fire?
(Motivated by the observation that if you take three pieces of string and tie them together at a single point, you can make an OR gate. If we denote the presence of fire on a string as a 1 and the absence of fire as a 0, then this contraption clearly computes the OR function. But OR by itself is not universal.)

12 Replies to “Puzzle for the Day”

  1. Hmmm … the set {AND,OR,NOT} is of course universal … gate array programmers know that {NAND} is universal by itself … so is {NOR} by itself … this makes it evident that the tough part of fire-based programming is implementing any one of {NOT,NOR,NAND} using the medium of fire.
    In the physical world, how does one use fire to stop fire? Easy … by setting a backfire … thus your gates might need to include an internal flammable fuse that (1) is hard to ignite (needing two fire inputs), and (2) the fuse is an internal wire of the gate … then run your circuit off a two-stage clock (set internal fuses, then fire the gate), and you’re done!

  2. At the fiber-optical level, we can imagine a 1×1 coupler, consisting of a Fabry-Perot cavity having a nonlinear refractive index, such that the coupler is transmissive for power levels that are even multiples of unity, and reflective for odd multiples of unity.
    AFAICT, this (nonlinear) coupler, plus orthodox linear 2×2 couplers, plus a phase delay coupler, is a universal set of components for computation not with fire, but with light.
    Real-world optical computers need occasional power amplifiers too, which are subject to Carlton Caves’ 2 dB standard quantum noise limit for phase-sensitive amplification. And in fact, amplifiers that approach Caves’ limit quite closely are off-the-shelf items in the telecommunications industry.
    I know all this because the above device is just a time-reversed version of the interferometric sensors that are standard practice in quantum spin microscopy.
    Does this mean that sensing processes can be viewed as computation processes?
    Yah, sure, you betcha!

  3. Colin, your objection applies equally to optical computers — one solution is simple — specify that at least some (ancilla) input bits that are initialized to “fire/light”!
    A related real-world issue is fan-out — in the optical world this is simply “amplifier followed by beam-splitter”.
    A final real-world issue is a beam-dump — in the optical world these are ports at which vacuum fluctuations enter.

  4. I’m not sure that’s made them much clearer.
    I based my designs on some that I came up with to compute using dominos. It turns out other people have had the same idea and even taken it as far as placing a youtube video.
    I think it’s relatively easy to generalise from this to fire

  5. In addition to using backfires, you can also control the oxygen supply using fire. If the oxygen has been consumed by a fire, then there will be none available. Of course, this is a bit more involved than simply laying out some strings and lighting them in appropriate places, but depending on the fuel used it may be more reusable.

  6. If 0=no fire and 1=fire then how do you do a simple NOT gate? That means given no fire you have to output fire. Spontaneous combustion?
    Ditto for NAND, NOR, and XNOR that output 1 when inputs are 0.
    I don’t see how you can make a fire computer work with the given definition of 0 and 1.

  7. I think it’s possible:
    OR is as you say >-
    AND is extremely tricky to draw in ascii. Essentially you make a fire block by placing a gap in each input. Then above the gap you place a piece of flammable material ( for clarity only one shown denoted by ===) suspended by a non flammable thread (&). When released this dangles perfectly in the gap. Then you hold this out of the gap with a flammable thread connected to the opposite input ( | ).
    The idea is that when you light one input it burns until it reaches the gap, then stops. It also fills in the gap on the opposite side by igniting the flammable thread, which burns and drops the === material into the gap. However since the other input isn’t lit it doesn’t lead to an output.
    If both inputs are lit then the fire burns both flammable threads dropping the flammable material into the gaps on both sides. When the fire from the input reaches that point it can cross the filled in gap i.e. you get an output iff both inputs are lit. [in the diagram i’ve only shown one crossing because it’s already too complicated to be clear. I’ve marked where the second crossing would start with an @]

    +--+
    |      |
    |      |
    |      |
    |      |
    ---+     +-      ---\
    |                         \
    |                          \
    +----|  &           >----------
    |  &          /
    @            ===     /
    --+      +--    ---/
    |        |
    |        |
    |        |
    |        |
    +---+
    

    A not gate could be done along similar principles but would need a fire rail (marked at the start with @) such that if there’s no fire we can start one. This time suspend a piece of flammable material (===) in the gap. If the input is burning it sets fire the the thread holding the piece in the gap such that it falls. when the real input gets there it can’t get across. The fire rail needs to be slightly longer than the input and contact the input just before the gap. If the input causes the material to fall then, when the fire rail signal arrives at the gap they’ll be nothing there (because the input will have already burnt the thread). If the input is zero then when the fire rail signal arrives the flammable material in the gap will still be in place and the signal will get across.

    +----+
    |          |
    |          |
    |          |
    |          |
    |          |
    |          |
    @--+          |
    |
    +---- ^ -----+
    |            |              |
    ---+     +-+----===---
    |      |
    |      |
    |      |
    |      |
    |      |
    |      |
    +--+
    

    I think that this would be much more obvious with some real diagrams or, better yet, a working model.

  8. Dan, interesting but the premise is the use of two temperatures to determine the digital value. Related, but not the same problem as fire and string.

  9. Ok, I didn’t realise that when you comment it removes any spaces from the start of the lines.
    That’s completely destroyed my, already fairly poor, attempts at ascii diagrams.
    To summarise the now fairly useless comment above:
    you can make an AND gate and a NOT gate by carefully either dropping or removing bits of flammable material into/from gaps dependent on the state of the inputs.

Leave a Reply

Your email address will not be published. Required fields are marked *