Diffusion 
A version of this applet using Sun's Java plugin is available here.IntroductionThis applet displays a cellular automata designed to illustrate a variety of types of reversible diffusion.It uses a a number of different "partitioning neighbourhoods" to do this. In particular the Triumphant neighbourhood, the Q*Bert neighbourhood, the Star of David neighbourhood and the Margolus neighbourhood are the partitioning schemes used to help construct the reversible automata. Various classical Margolus automata are also demonstrated, perhaps most notable the original Margolus neighbourhood implementation of Fredkin's Billard Ball Machine (BBM). All the automata here are completely reversible. It is interesting to allow the automata to evolve for a period, and then click on the "Reverse" tickbox, to observe that the initial state is indeed recovered. Th applet demonstrates both uniform and nonuniform cellular automata. The nonuniform automata are called things like "Lichen", "Ultra noise" and "Nonuniform gas". Reversible automata have applications in simulating gasses and liquids, and associated physical phenomena. They are important in modelling the physical foundation of computation. Nonuniform reversible automata have applications in cryptography:
