2D 셀룰러 오토마타 Wolfram 바이너리 코드

Aug 17 2020

이것은 2d 셀룰러 오토마타 규칙이 작동하는 방법 과 유사한 질문입니다 . 그러나 거기에 대한 대답은 내가 찾고있는 것을 제공하지 못했습니다. 특히 다음과 같은 2D 셀룰러 오토마타 형태를 렌더링 할 수 있기를 원합니다.https://www.wolframscience.com/nks/p173--cellular-automata/실수와 성장 규칙 사이에서 변경하는 방법을 설명하는 참조는 어디에도 없습니다. 1d에서 상황은 다음과 같이 잘 문서화되어 있습니다.https://mathworld.wolfram.com/ElementaryCellularAutomaton.html그러나 2d에서는 정확한 비트 매핑을 찾을 수 없습니다. 예를 들어 숫자 465를 입력하면 Wolfram 책에서 465 패턴을 그릴 수 있도록 프로그램을 만들고 싶습니다. 위에서 링크 한 다른 스택 교환 답변은 가능한 이진 매핑을 제공하지만 여기에 제공된 방법은 Wolfram 참조와 동일한 숫자를 생성하지 않습니다. 465의 이진 값은 111010001이며 전혀 도움이되지 않습니다. 이 특정 모양은 정확히 하나의 이웃이 현재 점유 중일 때 셀을 추가하는 것을 기반으로합니다. 따라서 4 개의 이웃 각각에 대해 하나씩 4 개의 1이 연속적으로있을 것으로 예상해야하지 않습니까? 그리고 이것을 더욱 헷갈 리게하기 위해 마지막 두 자리는 Wolfram 페이지 자체에 주어진 설명에서 바뀐 것 같습니다 ... 다른 Stack Overflow 답변에서 가능한 바이너리 매핑이 하나뿐 아니라 많은 것이 있다는 것이 분명해 보입니다. 규칙 번호로 참조 된 그림이있는 가이드가 이미 존재한다는 점을 감안할 때 실제로 해당 규칙 번호를 사용할 수 있기를 바랍니다. 감사.

답변

1 IlmariKaronen Aug 18 2020 at 00:15

링크 한 페이지 에 제공된 설명 이 정확합니다.

"각 경우에 코드 번호에 대한 기본 2 자리 시퀀스는 다음과 같이 규칙을 지정합니다. 마지막 숫자는 이전 단계에서 이웃 셀이 모두 흰색이고 흰색 인 경우 중앙 셀의 색상을 지정합니다. 두 번째- 마지막 자리까지 모든 이웃이 흰색이지만 가운데 셀 자체가 검은 색이면 어떤 일이 발생하는지 지정합니다. 그리고 각 앞자리 숫자는 점차적으로 더 많은 이웃이 검은 색이면 어떤 일이 발생해야하는지 지정합니다 (60 페이지 비교). "

당신이 놓칠 수있는 것은 규칙 번호가 홀수이면 다른 흰색 셀로 둘러싸인 흰색 셀이 자연스럽게 검은 색으로 변하기 때문에 빈 격자가 불안정하다는 것입니다. 특히 465와 같이 숫자가 1 모듈로 4 (즉, 이진 형식이 01로 끝나는)와 일치하는 모든 규칙은 "strobing"입니다 . 즉, 빈 격자는 각 연속 세대에서 모두 흰색과 모두 검은 색 사이에서 번갈아 나타납니다.

특히, 이는 규칙 465 가 "현재 정확히 하나의 이웃이 점유 된 경우 셀 추가"에 대응할 수 없음을 의미합니다 . (아마도 규칙 686 또는 바이너리 1010101110 일 것입니다.)

대신 올바르게 지적했듯이 465는 바이너리에서 111010001과 같습니다. 각각 2 비트의 5 개 그룹으로 작성되어 01 11 01 00 01을 제공합니다. 각 그룹에서 그룹의 맨 오른쪽 비트$k$ (0에서 4까지의 오른쪽에서 왼쪽으로 번호가 매겨 짐)은 흰색 셀에 $k$ 검은 색 이웃은 다음 세대에서 검은 색으로 변하고, 검은 색 셀이 $k$ 흑인 이웃은 흑인을 유지합니다.

즉,이 규칙에 따라 흰색 셀이 0, 2, 3 또는 4 개의 검은 색 이웃 (오른쪽에서 세는 그룹 0, 2, 3 및 4에서 1이기 때문에)이있는 경우 흰색 셀이 검은 색으로 바뀝니다. 셀에 정확히 3 개의 검은 색 이웃이 있으면 셀은 검은 색으로 유지됩니다 (가장 왼쪽 비트는 그룹 3에서만 1이므로).

실제로 흰색 배경에 검은 색 픽셀 하나부터 시작하여 22 세대 동안이 규칙을 시뮬레이션하면 연결된 페이지에있는 것과 일치하는 이미지가 생성됩니다.


추신. 규칙 465는 상태 대칭 규칙 558 = 01000101110 2 의 "스트로 빙 등가물" 이며, 규칙 686과 정확히 1 비트 차이가 있으며 "정확히 하나의 이웃이 점유 될 때 셀 추가, 제거 정확히 하나의 이웃이 비어있을 때 셀 ".

단일 셀에서 시작하면 규칙 558과 686이 동일하게 진화하는 것 같습니다.이 시작점부터 정확히 세 개의 라이브 이웃이있는 라이브 셀을 생성하지 않기 때문입니다. 따라서 짝수 세대에서 스트로 빙 규칙 465는 두 세대 모두와 동일하게 보입니다.