2d autômatos celulares códigos binários de volfrâmio

Aug 17 2020

Esta é uma questão semelhante a Como funcionam as regras dos autômatos celulares 2D? No entanto, a resposta não me forneceu o que procuro. Especificamente, eu quero ser capaz de renderizar essas formas de autômato celular 2d:https://www.wolframscience.com/nks/p173--cellular-automata/Não consigo encontrar nenhuma referência em qualquer lugar que explique como mudar entre um número real e uma regra de crescimento. Em 1d, a situação está bem documentada, como aqui:https://mathworld.wolfram.com/ElementaryCellularAutomaton.htmlmas em 2d o mapeamento exato dos bits não é encontrado em lugar nenhum. Eu realmente gostaria de fazer um programa, para que eu pudesse, por exemplo, inserir o número 465 e ele desenharia o padrão 465 do livro Wolfram. A outra resposta de troca de pilha que vinculei acima fornece um possível mapeamento binário, entretanto, o método dado ali não produz os mesmos números que na referência de volfrâmio. O valor binário de 465 é 111010001, o que não me ajuda em nada. Esta forma particular é baseada na adição de uma célula quando exatamente um vizinho está ocupado no momento, então não deveríamos esperar ter 4 1s em uma linha, um para cada um dos quatro vizinhos? E para tornar isso ainda mais confuso, os dois últimos dígitos parecem ter sido trocados da descrição dada na própria página do Wolfram ... Parece claro na outra resposta do Stack Overflow que não há apenas um mapeamento binário possível, mas muitos, no entanto dado que já existe um guia com imagens referenciadas por números de regra, eu realmente gostaria de poder usar esses números de regra específicos. Obrigado.

Respostas

1 IlmariKaronen Aug 18 2020 at 00:15

A descrição fornecida na página que você vinculou está correta:

"Em cada caso, a sequência de base de 2 dígitos para o número do código especifica a regra da seguinte maneira. O último dígito especifica a cor que a célula central deveria ter se todos os seus vizinhos fossem brancos na etapa anterior, e ela também era branca. o último dígito especifica o que acontece se todos os vizinhos forem brancos, mas a célula central em si for preta. E cada dígito anterior especifica o que deve acontecer se progressivamente mais vizinhos forem pretos. (Compare com a página 60.) "

O que pode estar faltando é que, se o número da regra for ímpar, a estrutura vazia é instável, pois as células brancas rodeadas por outras células brancas ficarão pretas espontaneamente. Especificamente, quaisquer regras cujo número é congruente a 1 módulo 4 (ou seja, cuja forma binária termina em 01), como 465, são "estroboscópicas" , ou seja, a rede vazia alternará entre todo branco e todo preto em cada geração sucessiva.

Em particular, isso significa que a regra 465 não pode corresponder a "adicionar uma célula quando exatamente um vizinho está ocupado no momento". (Isso provavelmente seria a regra 686 ou 1010101110 em binário.)

Em vez disso, como você observou corretamente, 465 é igual a 111010001 em binário. Escrito em cinco grupos de dois bits cada, que dá 01 11 01 00 01. Em cada um desses grupos, o bit mais à direita do grupo$k$ (numerado da direita para a esquerda de 0 a 4) é 1 se uma célula branca com $k$ vizinhos pretos ficarão pretos na próxima geração, e o bit mais à esquerda é 1 se uma célula preta com $k$ vizinhos negros continuarão negros.

Isso significa que, sob esta regra, uma célula branca ficará preta se tiver 0, 2, 3 ou 4 vizinhos pretos (já que o bit mais à direita é 1 nos grupos 0, 2, 3 e 4 contando da direita) e um preto a célula permanecerá preta se tiver exatamente 3 vizinhos pretos (já que o bit mais à esquerda é 1 apenas no grupo 3).

E, de fato, simular essa regra por 22 gerações, começando com um pixel preto em um fundo branco, produz uma imagem correspondente à da página vinculada.


Ps. Acontece que a regra 465 é o "equivalente estroboscópico" da regra de estado simétrico 558 = 01000101110 2 , que difere da regra 686 por exatamente um bit e pode ser descrita como "adicionar uma célula quando exatamente um vizinho estiver ocupado, remover um célula quando exatamente um vizinho está vazio ".

Partindo de uma única célula, parece que as regras 558 e 686 evoluem de forma idêntica, já que a partir desse ponto de partida elas aparentemente nunca geram uma célula viva com exatamente três vizinhos vivos. Assim, em gerações pares, a regra estroboscópica 465 também parece idêntica a ambas.