메뉴
Conway's Game of Life

2010. 12. 26. 16:32


다세포 생물의 생존 메커니즘은 인간의 상상 이상으로 복잡할 것이다.
하지만 어쩌면 그것을 이끄는 것은 사실 매우 간단한 법칙들을 바탕으로 이루어져 있을지도 모른다.
이러한 생각에서 시작된 것이 바로 Game of Life 이론이다.

기본적으로 Game of Life는 정사각형 모양의 Cell들을 바탕으로 시작된다.
마치 바둑판처럼 생긴 공간이라고 생각하면 된다.

각각의 Cell은 live 또는 dead의 두가지 상태를 가진다.
live는 꽉찬 셀, dead는 빈 셀로 나타낸다.

Cell들은 세대별로 변화해 간다.
어떠한 한 셀의 상태는 이전 세대의 주변 Cell의 상태를 바탕으로 설정되는데, 규칙은 간단하다.

  1. Live cell 주변에 Live cell이 2개 또는 3개 있으면 다음 세대에서도 생존한다. (live state)
  2. 이외의 모든 조건에서는 죽는다. (dead state)
  3. Dead cell 주변에 Live cell이 3개 있으면 다음 세대에서 부활한다. (live state)
  4. 이외의 모든 조건에서는 죽는다. (dead state)

단지 이 4가지의 규칙에 의해서 다음 세대가 결정되는 것이다.

이 게임에 대해서는 이미 수많은 연구가 진행되었으며 그 과정에서 과학자들은 수많은 패턴들을 발견할 수 있었는데
몇몇 간단한 예를 살펴보면 다음과 같다.




각각 순서대로 block, boat, loaf 라는 이름을 가진 녀석들인데
이런 녀석들은 안정된 상태로써 단계를 거치더라도 변화하지 않는다. 이를 still live 라고 부른다.





각각 beacon, blinker, toad라고 불리는 녀석들인데, 2개의 period를 가지고 계속 반복된다.
특히 blinker는 실제로 Game of Life를 하다보면 수도 없이 만나볼 수 있을 것이다.
이렇게 반복되는 유형들을 가진 녀석들을 oscillator 라고 부른다.






period는 2~4개의 간단한 것들부터 100개의 period로 이루어져있는 것들까지 다양하게 존재한다.
(위의 예제는 pulsar라고 불리는 것으로 4개의 period로 이루어져있다.)







각각 glider와 Lightweight spaceship라고 불리는 것으로,
같은 모양을 반복적으로 유지하긴 하지만 일정한 방향으로 이동하는 모습을 보여준다.
이러한 녀석들을 Spaceship 이라고 부른다.






그 외에 다양하고 이름 지을 수 없는 녀석들이 많은데
더 많은 예제들은 아래 링크에서 만나볼 수 있다.
http://www.ericweisstein.com/encyclopedias/life/


이것이 좀 더 스케일이 커지면 계속적으로 glider를 만들어내는 모델이라든지
일정 모양을 계속 확장시켜나가는 모델도 만들어 낼 수 있다.

실제로 '자가복제'를 하는 모델도 존재하는데, 셀이 셀 수 없이 많아 컴퓨터로 구현이 가능하다.
어쩌면 인간과 같은 복잡한 생물체도 이러한 간단한 규칙의 지배를 받는 것일지도 모른다.




알아서 다음 세대를 그려주는 프로그램을 간단히 자바스크립트 코딩을 이용해 짜보았다.

game_of_life.html
다운로드



위 프로그램을 실행시키면 수많은 정사각형들을 만날 수 있는데,
몇 개의 점을 찍어 최초 세대를 결정한 다음 start를 눌러서 이 '작은 세포'가 어떻게 변화하는지를 관찰해 볼 수 있다.
(다만 업로드한 녀석은 바운더리가 없는 버전이다. 구석에 다다르면 다른 쪽 끝의 cell을 참조한다.)


아래는 개인적으로 추천하는 모양이다.


 

추가 -

아래는 Game of Life를 온라인으로 해볼 수 있는 링크이다.

http://www.bitstorm.org/gameoflife/