|
출처: eea - 엘리트 글쓰기 논술 교실 원문보기 글쓴이: 김동석
MCell을 통해 본 세포자동자의 세계
-MCell의 사용법에 대한 소개-
MCell은 폴란드 출신의 수학자 Mirk Wojtowicz에 의해서 1999년 개발되어 지금 버전 4.20까지 나와 있는 아주 위력적인 1차원 및 2차원 세포자동자 소프트웨어이다. 이것은 잘 알려져 있는 콘웨이의 라이프게임 뿐만 아니라 지금까지 개발된 모든 규칙들을 내장하고 있다. 게다가 삶과 죽음의 두 상태만을 허용하는 여타의 세포자동자 소프트웨어들과는 달리 삶(1)과 죽음(0) 사이에 최고 256까지의 상태(성장과 늙음)를 허용하고 있다.이것을 통해 개체의 history를 갖게 함으로써 현란한 세포자동자의 패턴을 만드는 것을 가능하게 하고 있다.
이것은 반면 그만큼 복잡하다는 것이기도 하다. 주어진 규칙들을 이해하고 그것을 적용해서 패턴의 생성과정을 이해하는 것 자체가 만만한 일이 아니다. 필자의 이해도 아직 부족한 편이기는 하지만 이 소프트웨어의 사용법에 대해 간단히 기술해 보고자 한다.
1. MCell 맛보기
세포자동자의 기본개념과 그것의 작동법에 대해서는 이미 앞서 다루었다. 이것은 MCell이 아직 나오기 전에 쓴 글인데 세포자동자를 설명하기 위해서 여러 가지 단편적인 소프트웨어들을 이것저것 가져올 수밖에 없었다. 특히 1차원 세포자동자의 경우 윈도우에서 구동될만한 적당한 소프트웨어가 없었다. Ludy Rucker의 Calife가 있었지만 상당한 수학적 지식을 갖지 않고는 이해할 수 없을 정도로 반직관적이었고 게다가 도스용이었다. 아마 그 당시 컴퓨터의 용량문제도 있었으리라 생각된다.
초보자에게 직관적으로 가장 이해하기 쉬운 것은 LINE-CA였다. 그래서 이것을 통해 1차원 세포자동자의 원리에 대한 간략한 소개를 했다. 그러나 이것은 이웃이 둘인 아주 작은 세포자동자이다. 이것에 의해서 만들어지는 배열의 수는 고작 8개이며 그것에 의해서 가능한 규칙의 수는 2^8 즉 256개일 뿐이다. 게다가 줌기능이 없어서 이것의 진행상태를 길게 추적해 보기 어렵다.
그러나 단순하다는 것이 기본원리를 이해하는데는 더 도움이 된다. 그런 면에서 교육용으로서의 그것의 유용성은 아직 사라지지 않았다. 단지 LINE-CA가 도스용이라서 불편한데 윈도우용으로 만든 조그마한 소프트웨어가 있다. 이것을 띄워놓고 1차원세포자동자의 구동원리에 대한 설명을 읽으면 이해하기 쉬울 것이다.
그러나 1차원 세포자동자의 세계를 본격적으로 탐색하려면 역시 MCell을 이용하는 것이 좋다.( CAOS - Simulation of One-Dimensional Cellular Automata 애플릿을 구동시켜도 이 기능을 이용할 수 있다. MCell에 비해서 초기배열을 임의로 만들어 볼 수 없는 점 등 상당한 제약이 있다.)
MCell을 구동시켜 좌측 파일 메니저 박스에 1D Binary를 클릭하자. 그러면 하단에 거기에 해당하는 내장 규칙들이 표시될 것이다. 하단에 보면 § 기호가 보일 것이다. 그것을 클릭하면 Rule을 setup할 수 있는 박스가 뜬다. 상단에 1D Bi 로 지정되어 있을 것이고 그것의 우측에 보면 Range가 보일 것이다. 이것은 세포자동자의 이웃의 수를 지정하는 곳이다. 이웃이 둘인 경우 Range의 값은 1이 된다. 1을 넣으면 8개의 배열이 뜨고(이웃 둘과 자신 등 셋 세포로 배열의 수는 2^3=8) 그것의 규칙을 지정하기 위해서는 하단의 박스를 클릭하면 된다. 1은 on을 0은 off를 나타낸다.
100과 001을 1로 하고 나머지를 0으로 하면 위의 세포자동자의 배열과 똑같다. OK를 누르면 박스가 사라진다. 화면의 제일 상단을 보면 여러 색의 점들이 보일 것이다. 초기배열을 랜덤하게 지정해 놓았기 때문이다.지금 우리는 한 점의 전개를 보기를 원하기 때문에 File→New empty를 클릭하자. 그러면 상단의 점들이 사라질 것이다. 상단 메뉴의 +표시된 돋보기를 눌러 화면을 좀 확대해 두자. 혹시 눈금표시가 되어있지 않다면 하단의 눈금표시 그림을 클릭 해 둔다. 다음 거기에 점을 하나 찍어보자.(만일 마우스가 손바닥표시 pan mode 로 되어있다면 화면에 점을 찍을 수 없을 것이다. 그럴 경우 하단의 연필표시 draw mode를 클릭하면 된다.) 메뉴의 ▶1을 클릭해 보자. 아마 아무 변화도 없을 것이다. MCell의 1차원 세포자동자는 제일 상단에서 아래로 진행되도록 되어있다. 우측 바를 보면 약간 아래로 내려와 있을 것이다. 점을 잘못 찍은 것이다. File→New empty를 클릭해서 점을 지우고 바를 위로 당겨 올려 첫줄에 점을 찍고 ▶1(1은 한세대만을 보여준다)을 다시 클릭하자. 밑줄 좌우에 점이 찍혀 있을 것이다. 이제 ▶n(n세대까지를 보여 준다. 이 값을 얼마로 할 것이냐는 것은 setting에서 지정할 수 있다.)을 클릭해 보자. 앞서 본 것과 유사한 그림이 만들어질 것이다. -표시된 돋보기를 클릭해서 화면을 zoom-in하면 전체 윤곽이 제대로 들어올 것이다. 다음 화면을 반대로 zoom-out하면 점의 크기가 점점 커진다. 최대로 크게 한 다음 이 규칙이 제대로 적용되었는지를 음미해 보자.
MCell은 8개의 이웃의 수(자신을 포함해서 9)를 허용한다. Rules setup의 Range의 값을 4로 바꾸면 왼쪽에 512개(2^9)의 배열이 나타날 것이다. 이것이 만들어내는 규칙들의 수는 무려 2^512개이다! 이것은 엄청난 수이기 때문에 종전의 소프트웨어 예컨대 Calife 의 경우 이것을 통계적으로 처리할 수밖에 없었다. 그러나 MCell을 이용하면 이처럼 큰 용량의 세포자동자도 앞서의 LINE-CA의 방식으로 만들어볼 수 있다. 이 방식은 아주 직관적이기 때문에 별도의 배경지식 없이도 그 의미를 바로 이해할 수 있다. 전에도 이렇게 만들 수 있었지만 컴퓨터의 속도문제로 인해 그것이 어려웠다. 그래서 통계적 방식을 도입하다보니 상당히 반직관적으로 될 수밖에 없었다. 이것만으로도 이 MCell이 강력한 프로그램이라는 것을 알 수 있을 것이다.
그러나 이것뿐만 아니다. 이제 프로그램을 대략 맛보았으니 이것의 사용법을 체계적으로 살펴보도록 하자.
2. Tool Bar 살펴보기
좌측의 menu에는 규칙들의 종류에 따라 거기에 속하는 여러 패턴들이 분류되어 내장되어 있다. 그 가운데 아무거나 더블클릭하면 우측의 출력창에서 실행된다.
도구모음의 용법은 다음과 같다. 각 도구를 유형에 따라 이름과 번호를 매겨 놓았다. 예컨대 standard5 라 하면 바로 아래 그림의 디스켓을 가리킨다.
Standard
1. 출력창을 지울 때 사용한다. 기존의 패턴들이 사라지고 화면이 깨끗해진다. 그러나 거기에 적용된 규칙은 변하지 않는다.
2. 출력창에 무작위 배열을 만든다. 1차원의 경우 첫줄에 나타나고 2차원의 경우 화면전체에 무작위 점들이 나타난다. 이 단추를 클릭하면 무작위로 생성될 점의 농도를 조절할 수 있다.
3. 파일 열기
4. 기존의 배열에 다른 패턴 붙이기
5,6. 저장하는 방식을 정하는 단추
7. 현재의 패턴에 대한 기술
Animation
1. 규칙에 따라 패턴을 계속 생성시킨다. 한번 더 마우스를 누르면 생성이 중지된다.
2. 마우스를 누를 때마다 1세대씩 생성된다. 규칙이 어떤 패턴을 낳는가를 알아볼 때 유용하다.
3. 정해진 세대수 N만큼만 패턴을 생성시킨다.
4. 그 N의 수를 지정한다. 이것을 클릭하면 다음 대화상자가 나온다.
Run for;진행할 세대수를 정한다. 50을 입력하고 ▶N을 클릭하면 클릭할 때마다 50세대씩 진행한다. 50세대씩 계속 보고 싶으면 Run for로 지정해 두어야 한다.
Run up to cycle;지정한 세대수만큼 진행하고 멈춘다.
그 하단에 redrawing이 있다. 이것은 몇 세대를 간격으로 출력창을 업데이트할 것인가를 지정한다. 1은 세대마다 업데이트 하는 것이고 200은 200세대마다 업데이트하는 것이다. 속도를 빨리 하고 싶으면 업데이트 간격을 길게 하는 것이 좋다.
5. 앞서 지정한 만큼의 진행을 거꾸로 되돌린다. 50세대로 지정되었으면 50세대만큼 되돌린다.
6. 초기화면으로 되돌아가게 한다.
7. 되돌린 것을 다시 거꾸로 되돌린다.
8. 현재의 패턴의 상태를 undo list에 덧붙인다.
9. 속도를 증대시킨다.
10. 속도를 감속시킨다.
View
1. 전체 패턴을 본래로 되돌린다.
2. 확대,축소를 위한 zoom mode로 바꾼다.
3. 패턴이 화면보다 클 때 그것을 보기 위해 scall mode로 바꾼다.
4.5 대상의 확대와 축소,4는 패턴을 크게 하고 후자는 작게 한다. 4와 5사이의 ▼을 클릭하면 그 배율이 나온다. 가장 큰 것은 21개의 픽셀이 한 셀을 만든다. 반면 가장 작은 것은 1/64픽셀이 한 셀을 만든다. 따라서 가장 확대된 패턴과 가장 축소된 패턴간이 배율의 차이는 1,344배의 차이이다. 줌기능이 상당히 보강되었다. 디폴트값은 1픽셀 당 7셀로 되어있다.
6.전체 패턴이 가장 잘 보일 수 있게 자동으로 셀의 위치와 크기를 조정한다.
Edit
1. 이것을 클릭하면 selection mode 로 바뀐다. 임의의 패턴을 마우스로 지정한 다음 드랙하면 다른 곳으로 옮길 수 있다.
2. selection mode가 활성화되고 어떤 곳이 선택된 다음 이곳을 클릭하면 그 선택된 영역 안의 패턴을 제거할 수 있다.
3. 이곳을 클릭하면 선택된 영역 바깥의 패턴이 제거된다.
4. 선택된 영역의 cell의 상태를 뒤집는다.on cell은 off가 되고 off cell은 on이 된다.
5. 선택된 영역을 수직축을 중심으로 반사하는 거울상을 만든다.
6. 선택된 영역을 수평축을 중심으로 반사하는 거울상을 만든다.
7. 선택된 영역을 시계방향으로 90도 회전시킨다.
Statistics
1.현재 활성중인 패턴의 on cell의 수,패턴의 크기,cell의 상태에 대한 정보를 담고 있다.
Settings
1. 이것은 세포자동자의 규칙을 setting하는 곳이다. 이 소프트웨어의 핵심적 내용이므로 절을 바꾸어서 상세히 다루도록 한다.
2. board에서 그것의 크기를 조정할 수 있다. 60×60에서 1500×1500까지 가능하며 규정된 크기안에서 임의로 조절할 수도 있다. 그 외 cell의 크기,모양, 등을 조절할 수 있다. 그 다음의 colors에서는 cell의 각 상태에 따라 색을 조절할 수 있으며 미리 set되어 있는 색할당 박스가 우측에 있다. 그 중 어느 하나를 선택하면 cell의 상태에 따라 다른 색이 할당된다. 이것이 세포자동자의 현란한 무늬패턴을 만들어 낸다. 다음에 undo가 있는데 앞서 실행한 결과를 되돌릴 수 있다는 것을 보았다. 그것을 어느 정도 되돌릴 것인가에 대한 여러 옵션들이 여기에 있다.
3,4. 4를 클릭하면 색조견표가 나온다. 거기서 원하는 색을 선택한 다음 원하는 cell에 마우스를 대고 클릭하면 색이 바뀐다. 3을 클릭하면 그 기능이 중단된다.
5.cell의 형태를 정하는 옵션,4종이 있다.
6.출력창에 눈금을 넣는다. 다시 클릭하면 눈금이 사라진다.
3. 세포자동자의 규칙과 적용
1D totalistic 과 1 D binary
상단 메뉴표의 Rules→Rules setup을 클릭하거나 하단의 settings의 §기호를 클릭하면 14종류의 세포자동자와 거기에 따른 규칙표가 나온다. 1D totalistic 과 1 D binary는 1차원 세포자동자이고 나머지는 2차원 세포자동자이다.
우선 1차원 세포자동자를 검토해 보자. 아래는 1DTo의 규칙표이다.
우선 binary 규칙과 totalistic 규칙의 차이를 이해해야 한다. 이것은 앞의 세포자동자에서 논의되었지만 간략히 새로 정리해 보면 바이너리 규칙(모든 가능한 배열의 수를 나열하고 그 각 배열에 대한 on, off의 여부를 일일이 지정해준다는 의미에서 앞으로 매거규칙이라고 부르겠다.)을 사용해서 "001과 100의 배열의 경우 중앙셀은 다음 세대에서 1(on)이다." 고 말하는 대신 " 두 이웃셀중 하나가 1(on)이라면 중앙셀은 다음 세대에서 1(on)이다."고 말해도 상관없다. 이것이 totalistic 규칙( 앞서 이것을 총괄규칙으로 번역했다. 앞으로 총괄규칙이라고 부르겠다.)이다. 매거규칙은 좌우의 차이까지도 고려하는데 대해 총괄규칙은 그 차이를 고려하지 않는다는 점에서 전자가 더 섬세한 규칙이다.
그러나 반면 일일이 그것을 지정해 주어야 한다는 점에서 상당히 번거롭다. 예컨대 상단의 IDBi(매거규칙)를 클릭하고 Range를 3으로 주어보자. 그러면 배열의 수는 2^6=128개의 배열이 좌측 박스에 주어질 것이다. 그 배열 각각에 1 또는 0의 값을 넣어 규정해 주어야 한다.다시 IDTo(총괄규칙)를 클릭하고 Range를 3으로 주어보자. survival, birth를 규정하는 각 7개의 칸만 채우면 된다.
상당히 간단하다. 게다가 세포자동자와 같은 대칭성의 세계에서 좌우를 구분한다는 것은 큰 의미가 없다. 그러므로 총괄규칙으로도 충분하고 또 가장 많이 쓰이는 규칙이기도 하다. 그러나 그 변수의 의미를 이해하기가 처음에는 상당히 힘이 들기 때문에 그것을 아주 기계적으로 처리하고 있는 매거규칙에서 시작하는 것이 좋을 것이다.
이제 총괄규칙을 좀더 자세히 들여다 보자. 제일 상단에 count of ststes/color 라는 것이 보일 것이다.이것은 세대에 따라 색을 다르게 배정하기 위한 것이다. 이것은 세포자동자의 본질을 이해하는데 중요한 것은 아니지만 아름다운 패턴을 생성하기 위해서 사용되어진다. 상단의 그림은 1D totalistic의 Abacus의 규칙판이다. count of ststes/color이 10으로 설정되어 있다. 그리고 history가 선택되어 있다. 일단 그곳을 마우스로 눌러 선택을 제거하라.(그 이유는 조금후에 설명한다.) 그리고 apply, OK를 클릭하라. 다음 상단 Animation의 ▶1을 클릭하면서 패턴의 변화를 살펴보라. 각 행 마다 색이 다른 것을 볼 수 있을 것이다. 색의 수를 헤아려 보면 9개의 색이 순환되고 있다. 그런데 왜 10으로 설정되었을까? 바탕색(여기서는 디폴트색으로 검정색이 바탕색으로 주어져 있다.)을 포함하면 10이다. 세대에 따라 색이 어떻게 설정되었을까를 알아보려면 Toolbar의 settings의 4번을 클릭해 보라. 그러면 색의 배열순서가 나와 있을 것이다.
만일 위 그림과 같지 않다면 settings의 2번을 클릭해서 colors를 선택하라. 그 박스의 하단 좌측의 preset에서 8color를 지정하고 apply, OK를 누르고 다시 한번 시도해 보라.
이것을 자세히 설명하는 이유는 단순한 장식을 넘어서서 history와 밀접한 관계가 있기 때문이다. 다시 history를 선택하고 실행시켜 보라. 앞서와는 아주 다른 패턴이 얻어질 것이다. 도대체 history라는 것이 무엇을 의미하는 것일까?
history가 체크되어 있고 count of states/color가 10으로 주어져 있으면 survival 조건과 상관없이 1에서 9까지 계속 진행하고 다음 10에서 off 상태가 된다. 말하자면 생명체의 수명에 해당한다. 여기서 유의해야 할 것은 그것은 다른 셀의 survival과 birth의 조건에 아무런 영향을 주지 않는다는 것이다. 그리고 물론 이것은 이 상태에서 새로운 birth도 할 수 없다. 이 조건이 주어졌을 때 그렇지 않을 때 보다 현란한 패턴을 생성한다는 것을 알 수 있을 것이다. 이 조건을 이해하기가 좀 어렵다면 가장 간단한 경우인 셋세포의 규칙(range를 1로 놓으면 된다)에 이것을 적용해 보면 이해가 쉬울 것이다.
다음 그 아래에 Range가 있다. 이것은 앞서도 잠깐 언급했듯이 한 셀의 다음 상태에 영향을 주는 이웃셀의 범위이다. Range가 1이면 이것은 좌,우의 셀이 영향을 미친다는 것을 의미한다. 그러므로 자기자신을 포함한 셋 셀간의 국지적 관계만을 따지면 된다. Range가 2이면 좌,우 두 셀과 자기 자신 결국 다섯 셀간의 관계를 따져야 한다. Range가 2만 되더라도 손으로 해 보면 금방 헷갈려서 손을 놓아 버린다. 이것을 컴퓨터는 순식간에 해낸다. 필자가 처음 홈페이지를 만들면서 "세포자동자"를 썼을 때 랭턴의 다섯셀(Range 2)의 상태를 제대로 보여주는 일반용 소프트웨어도 없었다.(전문적 프로그램들은 있었지만 그것은 필자의 능력 밖이다.) 그런데 MCell은 21개의 셀(Range10) 까지 허용한다. 이 경우 배열의 수는 2^21,규칙의 수는 2^2^21 즉 2의 2의 21제곱에 해당한다. 그것이 얼마나 큰 수인지 필자로서는 감이 잡히지 않는다. 총괄규칙이라고는 하지만 엄청난 계산능력이라고 하지 않을 수 없다. MCell은 매거규칙의 경우도 9개의 셀을 허용한다. 물론 이것은 프로그램 능력의 진보가 아니고 엄청난 속도를 가능하게 한 하드웨어의 진보의 결과이다.
다음 그 하단에 보면 include the center cell 이라고 있다. 이것은 survival과 birth의 조건을 결정할 때 중앙셀을 계산해 넣을 것인가를 결정하는 옵션이다. 이것을 선택하지 않으면 이것은 우리가 앞서 본 데이비드의 규칙판과 같다. 이것이 체크되어 있으면 on셀의 계산에 중앙셀을 넣으므로 데이비드의 규칙판과 약간 달라지게 된다. 데이비드의 규칙판의 하나를 보자.
상자위의 숫자는 이웃의 on셀의 수를 나타낸다. 그리고 박스의 좌측에 ×가 표시되어 있으면 중앙셀이 on이고 우측에 ×가 표시되어 있으면 중앙셀이 off이다. 그러므로 상자의 좌측은 survival의 조건을, 우측은 birth의 조건을 나타내고 있다. 이것은 "자신이 on이고 이웃셀의 수가 1이나 2일 경우 다음 세대에 on(survival)이며 자신이 off이고 이웃셀의 수가 2일 경우 다음 세대에 on(birth)이다." 고 해석할 수 있다.
자신을 포함할 경우 birth의 값은 변화가 없다. 그러나 survival의 값은 1만큼 올려주어야 할 것이다. 그래서 S21/B2 가 아니고 S32/B2가 된다. 중앙셀의 포함 여부에 따라 달라지는 조건을 잘 숙지하고 있어야 한다. 매거규칙 1DBi를 클릭해서 이 총괄규칙과 비교해 보라. 여기에는 이러한 복잡한 고려가 필요 없다. 그것은 매거되어 있는 규칙들 속에 다 함의되어 있다.
박스의 제일 하단에 보면 text version이 있다.
R2C10M1S0S1B0B3
이것은 지금까지 우리가 준 조건을 요약한 것이다. R은 Range, C는 Color, M은 Middle Cell, S는 Survival, B는 Birth의 약자이다. 그러므로 "범위가 2이고 칼라 또는 상태의 수가 10이고, 중앙셀을 포함하며(1은 포함,0은 불포함),Survival은 이웃셀이 0,1일 경우 Birth는 이웃셀이 0,3일 경우다."는 것을 진술하고 있다.
박스의 우측에 Famous rules들이 있다. 그리고 그것의 규칙들이 text version으로 기술되어 있다. 여기에 등록되면 자동으로 우측 파일메뉴의 파일리스트 안에 들어가게 된다. 여러분도 좋은 규칙을 찾아내면 그것을 하단의 save as..를 클릭해서 저장할 수 있다.
지금까지의 논의들은 비단 1차원 뿐 아니라 2차원의 대부분의 경우에도 그대로 적용된다. 이제 2차원 세포자동자의 규칙들을 검토해 보자. 2차원에 대한 일반적인 논의는 세포자동자에 기술되어 있으므로 여기서는 생략하고 바로 MCell을 보기로 하자.
Life와 Larger than Life
우선 가장 익숙한 것이 콘웨이의 23/3의 라이프 규칙이다. 이것의 규칙은 세포자동자에서 논의되었으므로 생략한다. 이 규칙은 아주 간단하다. 이것의 특성은 규칙의 복잡성에 있다기 보다 그 규칙에 따라 만들어지는 우주-라이프라는 고유 이름이 있다-의 복잡성에 있다. 이것은 가장 많이 연구된 세포자동자이기도 하다. 이것은 Mcell에서 구동하기 보다 이것만을 전문적으로 다루고 있는 그런 면에서 더 효율적인 소프트웨어 Johan G. Bontes이 만든 LIFE32를 사용하는 것이 좋다. 이 우주를 탐색하면서 얻어진 방대한 양의 라이프 패턴들이 내장되어 있으며 그 외 따로 Lifep라는 이름으로 패턴들의 데이터 베이스가 모아져 있다.
Rules setup을 다시 들여다 보면 Larger than Life라는 것이 있을 것이다. 이것은 라이프와 비슷한 방식으로 작동하지만 셀에 영향을 주는 범위(Range)를 옵션으로 주고 있다는 점이 다르다. 라이프의 Rules setup을 보면 Range 항목이 없는 것을 확인할 수 있다. 이것은 자신의 직접 인근 셀에만 영향을 주두록 세팅되어 있다. Larger than Life의 관점에서 보면 이것은 Range=1 에 해당한다. Range를 주는 방식은 1차원의 경우와 다를 바가 없다. 아래 그림을 보자.
좌측이 콘웨이의 라이프의 Range이다. 중심셀에 영향을 주는 것은 인근 8개의 세포이다. 중앙에 있는 것은 중심셀의 인근 2번째 칸의 셀까지가 영향을 미친다.그래서 Range=2 이다. 같은 방식으로 우측의 것은 Range=3 이다.
majority.mcl을 불러내 보자. 하단에 보면 survival, birth를 지정하는 상자가 있다. 둘다 41에서 81까지로 지정되어 있다. 그리고 Range=4로 되어 있다. 그리고 include the center cell 이 선택되어 있으므로 결국 중심셀에 영향을 미치는 셀의 수는 9×9=81 이다. 중심셀 주변의 81개의 셀 가운데 on cell이 41개에서 81개 사이에 있으면 중심셀은 다음 세대에 만일 그것이 on cell 이었다면 on상태를 유지하고 off cell 이었다면 on cell로 바뀐다는 것을 의미한다. 실행시켜 보면 계산량이 많으므로 속도가 좀 느려질 것이다. 그러나 콘웨이 라이프와는 좀 맛이 다른 꿈틀거리는 생명의 형상을 볼 수 있을 것이다. 많은 파일들이 내장되어 있으므로 한번 실행시켜 보기 바란다. 필자가 보기에는 특히 그 가운데 ModernArt 폴더에 저장되어 있는 파일들이 재미있어 보인다. 마치 간딘스키의 그림들을 동화상으로 보는 느낌이다.
여기서 콘웨이의 라이프를 실행시킬 수도 있을 것이다. Range=1로 수정한 다음 include the center cell을 끄고 survival에 2,3 그리고 birth에 3,3을 넣으면 될 것이다.(물론 include the center cell을 끄지 않아도 되는데 그 때는 3,4 그리고 3,3을 넣어야 할 것이다.)
중간에 보면 이웃의 형태를 정하는 옵션 박스가 있다. Moore는 앞서 세포자동자에서 보았듯이 중심셀에 인접한 8셀이 인근세포가 되는 것이고 von Neumann은 모서리에서 만나는 4셀은 제외한 변으로 접하고 있는 4셀만을 인근세포가 된다. 어떤 유형을 택하느냐에 따라 나타나는 패턴들은 현저하게 달라진다.
Generation
이것은 라이프의 규칙과 아주 흡사하다. 하나 다른 점은 거기에 셀의 history를 포함하고 있다는 점이다. 라이프에서는 삶과 죽음 밖에 없지만 여기서는 수명이 있다. 그것은 다른 셀의 survival과 birth의 조건에 아무런 영향을 주지 않는다는 것이다. 그리고 물론 이것은 이 상태에서 새로운 birth도 할 수 없다. 이 history는 앞서 1차원 총괄규칙에서 논의한 것과 같다. 차이가 있다면 여기서는 그것이 2차원상에서 일어난다는 것이다. 이것이 도입되면 놀랄만한 현란한 무늬들의 패턴이 만들어진다.
이것의 규칙은 라이프의 규칙과 같다. 다만 마지막에 /C가 덧붙여지는데 이것은 셀의 상태의 수, Color의 수 쉽게 말하면 수명이다. 상세한 내용은 앞서 1D totalistic 과 1 D binary에서 설명한 count of states/color와 대동소이하므로 참조하기 바란다.
이 규칙이 가장 현란한 것은 놀라울 것도 없다. 세포자동자 가운데 가장 생명의 거동을 닮은 것이 콘웨이의 라이프이고 이것은 이 라이프에 history를 줌으로써 그 장식효과를 극대화한 것이기 때문이다. 여기서 생겨나는 문양들은 하나의 예술이라고 해도 과장이 아닐 것이다. generation의 swirl 폴더의 Swirlybird를 불러내어 감상해 보자. 아래는 그것을 동화상으로 캡쳐해 본 것이다.
Vote for Life
이것은 가장 간단한 규칙이다. 중심셀이 on이 되기 위해서 필요한 이웃 on셀(자신을 포함한)의 수를 규정한다. 여기에는 유명한 프레드킨(E.Fredkin)의 복제 패턴이 있다. 이것은 자기자신의 패턴을 복제하는 가장 간단한 규칙이다. 32세대 마다 최초의 형태가 9개씩 복제된다. 이 규칙은 간단히 13579이다. 이것은 라이프 규칙으로도 표현될 수 있는 바 S02468/B1357이다. 라이프 규칙은 자신을 포함하지 않는다. survival은 자신이 on cell이기 때문에 1을 빼야한다. 그래서 02468이다.(1-1=0, 3-1=2, ..) birth의 경우 자신은 off cell이기 때문에 13578이다.(9는 S8에 포함되어 있으며 birth의 조건이 아니다.) 실제 이것을 라이프 규칙에 적용해서 Vote for Life의 형태와 비교해 보기 바란다. 아래는 그것을 동화상으로 캡쳐해 본 것이다.
Rules tables
이것은 앞서 본 총괄규칙에 셀들의 이행규칙(transition table)을 부가함으로써 셀은 자신의 상태를 규칙에 따라 마음대로 바꿀 수가 있게 한 것이다. 그 나타나는 결과들은 상당히 흥미롭다. 말로 설명하는 것 보다 예를 가지고 실제로 해보는 것이 이해하기가 더 쉽다.
우선 익숙한 라이프 규칙을 이 Rules tables의 규칙으로 만들어 보자. 그것은 아래와 같다.
행(세로줄)은 셀의 현재의 상태를 나타낸다. 열(가로줄)은 이웃의 on cell의 수를 나타낸다. 첫 행은 현재 셀이 0의 상태에 있고 이웃에 on cell이 셋이 있으면 그것은 1의 상태로 간다는 것을 말하고 있다. 둘째 행은 현재 셀이 1의 상태에 있고 이웃의 on cell이 둘이거나 셋이면 1의 상태를 유지한다는 것을 말하고 있다.
총괄규칙에서는 1(on)과 0(off)의 상태 밖에 없기 때문에 이 상태의 수들을 늘이기 위해서 count of states/colors라는 부가적 조건이 따로 있었다. 그것을 통해서 보다 자유로운 표현이 가능했지만 미리 규정된 상태의 순서를 따라 진행할 수밖에 없다는 점에서 제약이 따른다. 그러나 이 방식에서는 임의대로 상태의 순서를 바꿀 수가 있다. 상태의 순서를 앞으로 되돌릴 수도 있으며 몇 단계를 뛰어 넘어 점핑할 수도 있다.
콘웨이의 라이프 규칙은 0과 1의 상태 밖에 없기 때문에 이 규칙표가 별로 의미가 없다. 그러나 다음의 경우를 보자. 파일메뉴의 Rules tables의 Cheops 폴더에서 beauty.mcl을 불러내어 보자. Rules setup 을 클릭하면 다음과 같은 규칙표가 뜰 것이다.
이 표의 의미를 이해하기 위해서 출력창에 아래 중앙의 그림처럼 4개의 점을 찍어 보자. 그리고 표를 참조해서 그 다음의 결과가 어떻게 나올 것인가를 생각해 보자. 그 결과가 우측에 나와있다.
처음 넷 셀이 상태1에 있다. 각 셀이 3개의 on cell에 인접해 있으므로 다음 세대에서 모두 7로 바뀔 것이다. (좌측 표에서 가로 3과 세로 1이 만나는 곳의 값이 7이다.) 넷 on cell의 인근에 있는 셀은 모두 12개이다.(위에서 moore가 선택되었으므로 Range=1임을 유의할 것) 이 셀은 아직 모두 0의 상태에 있다. 모서리의 넷 셀은 인근 on cell이 하나밖에 없기 때문에 가로1,세로0이 만나는 점에서 다음 세대의 상태가 결정된다. 그 상태는 4이다. 변의 8셀은 2개의 on cell과 접하고 있으므로 다음 세대의 상태는 1이라는 것을 알 수 있다. 이렇게 해서 만들어진 것이 우측 표이다.
이 각 상태에 따라 다른 색이 배정되어 있다. 이것을 확인하기 위해서 하단의 settings의 4를 클릭해 보자. 색 할당표가 아래와 같이 나와 있을 것이다. 그것을 위의 그림의 각 번호에 할당하면 다음 세대의 패턴이 결정된다.
Cyclic CA
색순환 세포자동자는 간단한 업데이트 규칙의 반복을 통해서 복잡한 자기 조직화를 생성해 낸다. 색채순환의 순서는 미리 설정되어 있는데 Cyclic CA 가운데 아무 파일이나 불러낸 다음 하단의 settings의 4번을 클릭하면 설정된 색채와 그 순서가 나온다.
실제로 해 보는 것이 낫다. Range가 크면 감을 잡기에 복잡하므로 내장된 파일 가운데 Range=1인 간단한 것을 찾아보자. 313.mcl 파일을 찾아 클릭하고 하단의 Rules setup(§표시된 곳)을 불러내 보자. 이웃(neighbourhood)이 vonNeumann 식으로 설정되어 있는데 우리에게 익숙한 Moore 식으로 바꾸자. apply, OK를 눌러 그 규칙을 받아들인 다음 다시 불러내어 보자. 다음 settings의 4번을 클릭하여 색채순환표를 불러내자. Rules setup을 보면 count of states/color가 14로 설정되어 있다. 이것은 14가지 색을 순환한다는 것을 의미한다. 색채 순환표를 보면 13번까지 색의 순서가 설정되어 있는 것을 볼 수 있다.(검은색은 0번으로 설정되어 있으므로 결국 14번까지 설정되어 있는 것이다.) 다음 Threshold가 있는데 이것은 문턱값이라는 뜻으로 셀이 다음 상태로 진행하기 위해서 필요한 최소한의 이웃수이다. 작은 번호는 큰 번호의 색으로 바뀐다. 그런데 여기서 이행을 가능하게 하는 이웃은 색채순환의 순서에서 인접한 번호이어야만 한다. 번호5는 4를 바꿀 수 있지만 3을 바꾸지는 못한다. 제일 큰 번호는 번호0(검정색)를 만나면 0으로 변해서 이 순환은 계속된다. 여기서 문턱값이 1로 설정되어 있으므로 그 조건에 해당하는 이웃이 하나만 있으면 이행이 발생한다. (아래 그림 참조)
여기서 번호1번인 빨강색의 변화는 독특하다. 이것은 배경색인 0의 다음 번호이므로 빨강색과 인접해 있는 배경색(검정색)은 전부 빨강색으로 변한다. 빨강색과 번호2인 파랑색을 나란히 놓아 보자. 어떤 결과가 나타날까? 빨강색이 주변으로 계속 확장되면서 이 빨강색은 계속 파랑색으로 변할 것이다.(좌측 그림) 13종의 색을 순서대로 나란히 놓아보면 어떻게 될까? 중심에서 주변으로 퍼져나가는 색채순환의 원심성 소용돌이가 만들어질 것이다.(우측 그림)
이것은 이해를 위해 Range=1로 두고 문턱값을 1로 준 단순한 경우이다. 이 값들을 변경시킴으로써 다양한 나선상의 소용돌이를 만들어낼 수 있다. 이 문서의 첫 그림에서 보이는 그림이 그것의 하나이다. 이것은 Cyclic spirals의 파일을 불러내어 실행시킨 것이다. 그 외 여기에 내장되어 있는 파일들을 실행시키면서 이 패턴을 만들어 내는 규칙들의 경계조건들이 무엇인지를 주의깊게 살펴 보자.
다시 Rules setup의 아래를 보면 Greenberg-Hastings Model 이라는 것이 있을 것이다. 이것은 기본적으로 Cyclic CA모델과 동일하나 후자는 문턱값의 인접번호를 가진 색을 만나야 색의 이행이 발생하고 그렇지 않은 것은 변화하지 않지만 이것은 조건에 맞는 것의 색채순환과 함께 이 조건에 맞지 않는 것도 정해진 순서대로 색채순환을 계속한다는 점이 다르다. Greenberg-Hastings Model을 클릭한 다음 출력창에 점 하나를 찍어 보라. 그 점이 정해진 순서대로 색채 순환을 한다는 것을 확인할 수 있을 것이다.다음 그것을 해제하고 같이 해 보라. 아무런 변화도 없을 것이다. 이 둘의 차이는 미묘한 패턴의 차이를 가져 온다.
화면에 랜덤하게 점을 찍어 놓은 다음 내장된 각 파일들을 실행시켜 보면 처음에는 혼돈적인 패턴들이 계속되다가 점차 일정한 형태를 갖춘 나선형의 소용돌이로 질서화되는 것을 볼 수 있다.
4. 마무리
이것으로 MCell에 대한 불충분한 소개를 마치고자 한다. 그 외 몇가지 규칙들이 더 있지만 번잡성을 피하기 위해서 가장 많이 알려진 규칙들에 대한 소개에만 그쳤다. 다른 규칙들에 흥미가 있으면 지금 까지 배운 지식만으로도 그것의 의미를 이해하기가 그렇게 어렵지 않을 것이다.
지금까지의 설명은 단지 그것을 이해하기 위한 단서일 뿐이다. 실제 소프트웨어를 실행시켜 놓고 내장된 파일들을 이것저것 실행시키다 보면 그 감이 훨씬 빨리 올 것이다. 그러나 왜 그런 패턴들이 생겨나는지를 좀 더 체계적으로 이해할려면 그것에 대한 설명서가 필요하다. 다시 그것을 단서로 소프트웨어를 실행시켜 보고 다시 문서로 돌아오는 방식을 되풀이 함으로써 보다 나은 이해에 접근할 수 있다.
세포자동자가 갖고 있는 심오한 생명현상의 함축에 대해 관심이 없다 더라도 이것이 보여주는 패턴 자체만으로도 미학적 관심을 불러 일으킬 만하다. 에셔가 아직 살아 있다면 이 세포자동자에서 새로운 미학의 가능성을 보았을 것이라고 확신한다.