본문 바로가기

생명의 철학

콘웨이 라이프 우주의 탐색(2)-Life32의 소개(2001.12)

세포자동자 보충자료

 

 

콘웨이의 라이프 우주의 탐색(2)

2차원 세포자동자 Life32 의 사용법 해설

 

Life32 다운로드 받기

Life 패턴모음 다운로드 받기

Life32 Johan Bontes Homepage

 

 

앞서 본 것처럼 세포자동자는 여러 종류들이 있지만 가장 많이 연구되고 가장 많은 매니아들을 확보하고 있는 것이 콘웨이의 23/3 규칙을 적용하는 "라이프"(Life) 게임이다. 이것을 구동시킬 수 있는 소프트웨어들은 일찍이 많이 개발되었다.

그 가운데 헨셀(Hensel)의 Life1.06이 가장 많이 애용되어 온 것중의 하나이다. 속도와 줌 기능을 보강함으로써 종전의 소프트웨어에서는 구현해 볼 수 없었던 대형 라이프 패턴들-예컨대 갈퀴rake나 번식자breeder 등-을 PC상에 구현해 볼 수 있게 되었다. 그러나 이것은 PC의 도스용 시절의 산물이어서 인터페이스가 불편하다. 이것은 뒤에 윈도우용으로 개편되었는데 그것이 Winlife이다. 이제 7,80년대 대형 컴퓨터 앞에서만 가능하던 라이프 우주에 대한 광범한 탐색이 가정용 컴퓨터 앞에서도 가능하게 되었다.

지금 소개하고자 하는 것은 Winlife와 대체로 비슷하지만 기능이 더 뛰어난 Life32이다. 이것의 사용법은 앞서 소개한 MCell에 비해서 훨씬 간단하다. 후자는 모든 세포자동자들의 규칙들을 망라하고 있는 범용 세포자동자인데 대해 이것은 그 가운데 2차원 세포자동자 특히 콘웨이의 라이프 규칙과 그에 준하는 규칙들만을 다룬다. 그러므로 그것의 작동의 기본원리에 대해서는 더 이상 부가할 것이 별로 없다. 단지 인터페이스에 도움을 주기 위해서 실행과 편집에 따른 몇가지 기능들을 여기에 소개할까 한다.

우선 메뉴 상단의 도구 모음을 보자. 각 도구를 지시하기 위해서 필자가 임의의 번호르 매겨 놓았다.

 

1은 현재의 창에 보이는 패턴들을 깨끗이 지우는 것이고 2는 내장되어 있는 파일을 여는 것이며 3은 패턴을 저장하는 것이다. 이름을 지정하면 lif 확장자를 가진 파일로 저장된다. 이 파일들은 호환가능하기 때문에 Life1.06, Winlife ,lifep에 내장되어 있는 파일도 모두 여기에 불러내어 실행시킬 수 있다.

4는 setting 하는 곳이다. 이것은 speed, display, rules, pattern properities, colors, misc 등 6개 항목으로 구성되어 있다.

 

speed, display은 도구모음에 들어 있으므로 뒤에 보기로 하고 Rules를 보자. 라이프와 그에 준하는 규칙들만을 다룸으로 아주 간단하다. 라이프 규칙인 23/3 규칙외에 survival,birth의 값을 바꿔줌으로써 여러 유형의 규칙의 세포자동자를 탐색해 볼 수 있다. 우측에 23/3 규칙외의 여러 규칙들이 예시되어 있다. 화면에 on cell을 랜덤하게 준 다음 규칙들을 바꿔서 그 변화를 보라. (메뉴 16번에서 Select 모드를 선택한 다음 화면에 마우스로 영역을 지정하라. 다음 Edit→Fill with random data를 클릭하면 된다.) 규칙에 따라 상당히 다른 특성의 패턴들이 만들어짐을 확인할 수 있을 것이다. 하단에 그 규칙들의 특성에 대한 information이 기술되어 있다.

survival, birth라는 말에서 함축하듯이 이것은 중앙셀의 상태는 미리 세팅되어 있는 규칙이다. 전자의 경우는 중앙셀은 on(1)의 상태이고 후자의 경우는 off(0)의 상태이다. 그러므로 세포자동자에서 소개한 피크의 그림판을 여기에 그대로 적용할 수 있다.

23/3 규칙을 피크의 그림판으로 나타내면 다음과 같다.

박스위의 숫자는 이웃의 on cell의 수를 나타낸다. 무어이웃을 사용하므로 최대 8개 까지 가능하다. 박스의 왼쪽은 중앙셀의 on인지의 여부를,오른쪽은 중앙셀이 off인지의 여부를 나타낸다. 왼쪽 박스에 ×가 표시되어 있으면 중앙셀이 on이라는 것을 의미하고 오른쪽 박스에 ×가 표시되어 있으면 중앙셀이 off 라는 것을 의미한다.

이것을 읽어 보자. 중앙셀이 on인 경우 이웃에 둘 또는 셋의 on cell을 가지면 다음 세대에 on이다. 중앙셀이 off인 경우 이웃에 둘의 on cell을 가지면 다음 세대에 on이다. 이것을 중앙셀의 on,off에 따라 구분하면 중앙셀이 on인 경우는 이웃의 on cell이 둘 또는 셋이면 다음 세대에 on이고( 이것은 survival에 해당한다), 중앙셀이 off인 경우 이웃의 on cell이 셋이면 다음 세대에 on이다.( 이것은 birth에 해당한다.) 그러므로 S23/B3 또는 간단히 23/3으로 표기하도록 약속되어 있다. 이 순서가 헷갈린다면 son of bitch를 연상하라. 점잖치 못하지만 헷갈리는 일은 없을 것이다.

이 규칙판을 위의 Rules Table에 표기하기는 쉽다. 오른쪽 박스의 것은 오른쪽에 체크하고 왼쪽 박스의 것은 왼쪽에 체크하면 된다.

이것은 앞서 설명한 총괄규칙이다. 이것은 on cell이 좌측에 있느냐 우측에 있느냐는 문제삼지 않는다. 여기에 대해 그 배열방식 까지 고려한 것이 매거규칙이었다. MCell에서 1차원 세포자동자의 경우 이 두가지 방식으로 다 표현할 수 있음을 보았다. 2차원 세포자동자의 경우 매거규칙에 의한 표현이 가능할까?

이것은 앞서 세포자동자에서 간략히 언급한 바 있다. 이것을 좀더 자세히 검토해 보자. 이러한 표현방식의 사용을 가능하게 한 소프트웨어로서 고든- 스미스(Gordon-Smith)가 만든 Flexica라는 2차원 세포자동자가 있다.

 가능한 배열의 수는 2^9=512개이다. 그런데 여기에 표시된 배열의 수는 256개이다. 그 이유는 중앙셀의 on,off 여부를 여기에 표시하지 않았으므로 셀이 하나 줄어들어 2^8=256개가 되었다. 중앙셀의 on,off의 여부는 색깔로 표시된다. 청색은 중앙셀은 현재의 상태에 관계없이 다음 세대에서 off임을 나타내는 기호이다. 녹색은 중앙셀이 현재의 상태를 그대로 유지한다는 것을 나타내는 기호이다. 적색은 중앙셀이 현재의 상태에 관계없이 다음 세대에 on임을 나타내는 기호이다. 위 그림에서 검은 점은 off 상태, 흰점은 on 상태를 의미한다.

라이프 규칙을 이 고든-스미스의 규칙판으로 나타낸 것이 위의 그림이다. 총괄규칙을 사용하면 녹색판은 그냥 S2로 표기될 것이고 적색판은 S3,B3으로 표기될 것이다.그러나 총괄규칙은 예컨대 다음 세 배열의 차이를 고려할 수 없다. 다음 세대에 중앙셀은 어느 경우든 모두 on이 될 것이다. 그러나 고든-스미스의 규칙판을 채용하면 이 셋의 배열에 차이를 둘 수 있다.

상단의 총괄규칙에서는 중앙셀은 다음 세대에서 모두 on이다.( 여기서는 고든-스미스의 규칙판과 반대로 on을 검정색으로 표현했다.) 그러나 하단의 규칙판을 사용하면 중앙셀의 운명은 달라진다. 첫 번째는 다음 세대에 off, 두 번째는 off, 세 번째는 on이다. 피크의 규칙판이 2차원 세포자동자에 대한 총괄규칙에 대한 그림판이라고 한다면 고든-스미스의 규칙판은 매거규칙에 대한 그림판이라고 할 수 있다.

다시 Settings으로 되돌아 가자. pattern property는 현재의 패턴에서 on cell의 수 등 그 상태를 알려주고 있다. 다음에 colors가 있다. 이것은 셀의 색 등을 지정할 수 있다. 배경화면이 초기값으로 진한 갈색으로 지정되어 있을 것이다. 보기에 좀 피로할 것이다. background를 흰색으로 지정해 놓기를 권장한다. 다음 Misc난을 보면 화면을 랜덤하게 채우게 할 때 on cell의 비율을 조정할 수 있도록 되어 있다. 그것은 필요에 따라 그 비율을 조정해주면 된다.

그리고 다른 것은 건드릴 필요가 없지만 제일 앞에 selection 난이 있다. 여기에 "Do not animate the selection(freeze)"가 있다. 이 난을 체크했을 때와 그렇지 않았을 때의 상태의 차이에 대해서는 설명이 좀 필요하다. 일단 내장된 파일 하나를 불러내자. 다음 이 난을 체크한 다음 메뉴의 16을 클릭해 보라. Draw,Select,.. 등이 나올 것이다. Select를 선택하면 선택모드에 들어간다. 불러낸 패턴의 임의의 영역을 마우스로 선택할 수 있다. 그 영역이 선으로 둘러쌓여 선택되었다는 것을 보여줄 것이다. 다음 ▶을 눌러 play 시켜 보라. 선택된 영역이 모니터에서 사라지고 그 외의 영역만이 실행될 것이다. 다음 다시 ▶을 누르면 실행이 중단된다. 그리고 나서 키보드의 Esc 키를 쳐보라. 사라졌던 영역이 다시 나타날 것이다. 그런데 그 부분은 전혀 변화되지 않았다. 이것이 체크되어 있으면 어떤 영역을 선택할 때 마다 그 부분은 실행되지 않고 원래의 상태를 유지한다. 변화 전의 패턴과 변화 후의 패턴을 한 화면속에서 보고자 할 때 유용하다. 이것은 패턴을 편집하는데 아주 유용하므로 잘 기억해 두기 바란다. 뒤에 다시 한번 다룬다.

메뉴의 5번은 snapshot 이다. 이것은 어느 정도 진행된 다음 다시 출발점으로 되돌아 오고자 할 때 사용한다. 어떤 파일을 불러낸 다음 snapshot를 클릭하자. 다음 불러낸 파일을 실행켜 보자. 그리고 그것을 중단시킨 다음 ∥◀을 누르면 출발점으로 되돌아 온다.

이것은 중요한 패턴을 잃어버리지 않고 기억시켜 두는데 아주 유용하다. 원하는 패턴들이 나올 때 마다 그것을 중단시키고 다시 실행시킨다. 이 패턴의 진행과정을 다시 보고 싶으면 ∥◀을 누르면 된다. 재실행시킨 그 시점을 역으로 소급해 간다.

∥▶는 한 세대씩의 진행을 보고자 할 때 사용하고 ∥◀은 한 세대 바로 직전으로 소급하고자 할 때 사용한다. ▶은 물론 연속실행을 위한 버턴이다. 다시 한번 누르면 기호가 ∥으로 바뀌면서 멈춘다. 다시 누르면 실행모드로 돌아간다.

다음 ▶▶은 skip이라는 것으로 비디오의 빨리감기와 유사하다. 중간의 진행과정을 생략하고(skip) 원하는 시점의 결과만을 보고자 할 때 유용하다. 또는 100세대씩 끊어서 그 결과만을 모니터에 나타내도록 할 때 유용하다. 당연히 중간 과정을 모니터상에 나타내지 않으므로 실행속도도 빨라진다. ▶▶을 클릭하면 skip할 세대를 지정하는 선택상자가 뜬다. skip to generation에 예컨대 200을 입력한 다음 OK를 누르고 ▶▶을 클릭( ▶이 아니다!) 해 보자. 200세대 후의 결과를 보여준 다음 대화상자가 다시 뜬다. 다시 OK 하면 다음 200세대(그러니까 400세대)를 보여준다. 멈추고 싶으면 Cancel을 체크하면 된다. 이것은 화면 하단의 상태바에 숫자를 입력함으로써 실행할 수도 있다. 윈도우의 하단 제일 좌측에 Gen200 이라고 표기되어 있을 것이다. 이 수치는 우리가 200을 앞의 대화상자에서 입력했기 때문이다. 이것을 지우고 100을 입력하고 ▶▶을 눌러 실행시켜 보라. 100세대를 끊어서 보여줄 것이다. skip 기능은 이 상태바를 이용하는 것이 더 편리하다.

다음의 + ▼ - 은 실행속도를 조절하는 곳이다. ▼을 클릭하면 속도값이 나온다. 수치가 적을수록 빨라진다. 그리고 +를 누르면 한 단계씩 속도가 올라가고 -를 누르면 한 단계씩 속도가 내려간다.(친절하기도 하시지..)

메뉴번호 13번은 화면상에 눈금을 넣느냐를 선택하는 곳이다. 돋보기가 그려진 14번은 확대와 축소를 실행하는 곳이다. 파일에서 breeder를 불러와 보라. 엄청나게 큰 대형패턴이 나타날 것이다. 배율을 10으로 하면 셀이 최대로 커지면서 이 패턴이 무엇이 무엇인지 알 수 없다. 그것을 1/2정도로 놓아 보라. 거대한 선단과 같은 형태들이 보일 것이다. 그것을 실행시켜 보면 점들이 비스듬히 쏘아올려지고 있을 것이다. 화면을 확대해 보면 그 점들이 하나하나의 글라이더들이라는 것을 알 수 있다. 이 강력한 줌 기능으로 해서 대형패턴의 전개를 추적하는 것이 가능하게 되었다. 1985년에 출판된 윌리암 파운드스톤의『회귀우주』(Recursive Universe)에 보면 이 패턴을 보기위해 MIT의 대형컴퓨터를 사용했다고 하는데 지금 나의 이 평범한 PC로도 그 패턴을 감상할 수 있으니 컴퓨터의 진화의 속도가 정말 놀랍다는 생각이 든다.

메뉴번호 15는 패턴의 위치를 조정하는 곳이다. 대형 패턴의 경우 가끔 화면 밖으로 벗어나 버리는 경우가 있다. 이때 이것을 선택해 별모양의 중앙단추 center of pattern을 누르면 화면의 중앙으로 들어온다.

메뉴번호 16은 앞서 잠깐 언급되었다. 이것을 열면 Draw,Select,Zoom selection,Scroll 의 4가지 유형이 있다. Draw 모드를 선택하면 화면안에 패턴을 직접 그려넣을 수 있다.

Select 모드에 대해서는 앞서 잠깐 설명했지만 이외 몇가지 기능이 더 있다. 여기에는 패턴 편집기능이 있다. 원하는 부분을 선택한 다음 마우스로 끌어보라.(drag) 선택된 부위를 잘라서 다른 곳으로 이동시킬 때 사용한다.  Ctrl키를 누른 상태에서 drag해 보라. 그 부위만 복사되어 다른 곳으로 이동할 것이다. Alt키를 누른 상태에서 drag 하면 그 부분만 이동하고 나머지는 화면에서 지워진다. 다음 실례를 통해서 이 용도를 잘 이해할 수 있을 것이다. 아래 그림을 보자.

이것은 라이프 우주에서 출현하는 미들급 우주선이다. Time0가 그 초기패턴이다. ∥▶을 누르면 그림에서처럼 한 세대씩의 변화를 볼 수 있다. 이것을 어떻게 한 화면속에 나타낼 수 있을까? 일단 Time0를 입력한 다음 선택모드로 들어가 그것을 선택한다. 다음 Ctrl을 누른채 drag하면 새 복사본이 옆에 만들어질 것이다. 다음 ∥▶을 클릭하면 복사본이 Time1으로 변해 있을 것이다.(물론 이때 Settings의 Misc,Selection에서 Do not animate가 선택되어 있어야 한다.) 다시 Esc를 누르면 Time0이 다시 나타난다. 다시 Time1을 선택해서 앞서의 과정을 반복하면 Time2를 붙일 수 있다.

그 아래에 보면 Zoom selection mode가 있다. 이것을 클릭하면 마우스가 돋보기로 바뀐다. 화면을 클릭하면 화면이 점점 확대된다.(따라서 대상은 점점 작아진다.) 대상을 확대시켜 보고자 하면 그 부분을 마우스로 선택하면 된다. Scroll을 선택하면 마우스가 손바닥 모양으로 바뀐다. 그것을 마우스로 끌면 화면의 여기저기로 쉽게 이동할 수 있다.

마지막으로 메뉴번호17을 보자. 이것을 열면 Transparent, Opaque, Invert, Don't overwrite 가 있다. 두 패턴을 합성할 때 위에 덮어써는 패턴을 투명한 것(Transparent)으로 취급할 거이냐 불투명한 것(Opaque)으로 취급할 것이냐에 대한 옵션이다. 어떤 바탕무늬를 가진 판위에 무늬가 그려진 투명한 셀로판지를 올려 놓는다고 생각해 보자. 아래의 판의 무늬와 위의 판의 무늬가 겹치는 부분은 위의 무늬로 대체될 것이다. 그러나 상판의 무늬가 없는 부분은 그것이 투명하기 때문에 아래판의 무늬가 그대로 살아남을 것이다. 이것이 Transparent를 선택했을 때 일어나는 결과이다. 반면 불투명한 종이에 그려진 무늬를 어떤 무늬를 가진 판위에 올린다고 해보자. 아래판은 완전히 상판의 무늬로 대체될 것이다. 이것이 Opaque를 선택했을 때 일어나는 결과이다.

Invert는 역상의 음판을 만드는 옵션이다. 이것이 선택되면 on cell은 모두 off cell로 바뀌고 off cell은 모두 on cell로 바뀔 것이다.

Don't overwrite이 선택되어 있으면 두 패턴을 겹칠 수 없게 된다. 어떤 패턴을 다른 패턴의 옆으로 가까이 붙일려고 하는데  안되는 경우가 가끔 있다. 이것은 화면상에 나타나지는 않지만 그 패턴의 여백이 서로 충돌하고 있기 때문이다. 이 때는 이 선택을 해제하면 된다.

이것으로 Life32에 대한 개괄적인 소개를 끝내겠다. 이 소프트웨어안에는 아주 많은 Life 파일들이 내장되어 있으므로 그것들을 하나씩 불러내어 콘웨이의 라이프 우주를 직접 체험해 보도록 하자. 그리고 이 소프트웨어를 이용해서 라이프 우주를 탐색해 볼 수 있도록 라이프 우주의 대상들을 소개하고 있는 글 하나를 따로 잡기장에 올려 놓았다. 이 글속에 나오는 라이프 대상들은 이용자의 편의를 위해서 따로 파일을 만들어 저장해 두었다. 이것을 다운받아 이 소프트웨어속에 실행하면서 글을 함께 읽어보기를 바란다.