3강 / 20강

시간을 흘려보낸다 — '동시에' 갱신한다는 것

궤적, 그리고 순서가 만드는 함정

시간을 흘려보낸다 — '동시에' 갱신한다는 것
모든 유전자가 같은 순간에 현재를 읽고 같은 순간에 바뀝니다. 이 약속 하나가 계산을 가능하게 합니다.

규칙이 있으면 시간을 흘려보낼 수 있습니다. 방법은 이렇습니다.

  1. 지금 상태를 읽는다
  2. 모든 유전자의 다음 값을 각자 계산한다
  3. 계산이 다 끝난 뒤에 한꺼번에 갈아 끼운다

3번이 핵심입니다. 계산 도중에 값을 바꿔 버리면, 나중에 계산되는 유전자가 이미 바뀐 값을 읽게 됩니다. 그러면 유전자 이름을 적은 순서에 따라 결과가 달라져요. 생물학에는 그런 순서가 없으므로, 그건 모형의 버그입니다.

이 방식을 동기 갱신(synchronous update)이라고 부릅니다. 가장 흔하고 가장 계산하기 쉬운 방식이에요. 대신 대가가 있는데, 10강에서 그 대가를 봅니다.

왼쪽은 한 시점에 한 걸음, 오른쪽은 한 시점에 두 걸음을 가 버렸습니다.
Python 브라우저에서 실행
trace 는 매 시점을 표로 찍어 줍니다. 더 이상 변하지 않으면 거기서 멈춥니다.
Python 브라우저에서 실행
이 성질 덕분에 우리는 아무 상태에서나 출발해도 됩니다. 다음 강의 열쇠입니다.
Python 브라우저에서 실행

🎮 시계 실험대

초기 상태를 고르고 ▶ 를 눌러 시간을 한 칸씩 흘려보내세요.

같은 회로인데 출발점이 다르면 어디로 가는지 눈으로 확인해 보세요.
불러오는 중…
🤔 확인 문제
동기 갱신에서 새 값을 계산할 때 반드시 지켜야 할 것은?
🤔 확인 문제
동기 갱신 모형에서 '같은 초기 상태에서 두 번 돌리면' 어떻게 되나?
🤔 확인 문제
Cancer_Growth 를 1 로 켜 두고 출발했는데 곧 0 이 된 이유는?