시뮬레이터 파헤치기 - 무한을 처리하는 난해함에 대해서
우리가 사는 세상을 시뮬레이터로 생각해보면. 사실은 시뮬레이터 밖의 사정에 대해서 알 수가 없겠다. 게임의 세계 안에서 게임 밖의 세계를 알 수가 없다. 물론 어떤 인터페이스가 있을 수 있다. 설계에 반영하면 그만이기는 하다. 그러나 아직 그 대칭과 보존이 철저히 지켜지는 우리가 살고 있는 세상에서 생각해보면(아직은 어떠한 예외도 검증되어 관측되지 않은 상태에서) 무언가 밖을 볼 수는 없는 상황인 것이 인지 상정이다.
따라서 이 시뮬레이션 이론이라는 알 수 없는 이론을 탐구하기 위해서는 우리 안에서 그것을 파악해나갈 수 밖에 없는 안타까움을 지니고 있다. 게임 안에서 게임 밖을 상상해야 하는데 이것은 거의 랜덤과 가까운 관계를 유추해나갸아하는 상황이다. 애초에 불가능할 수도 있겠다. 따라서 그저 그 시뮬레이터 안을 들여다보는 것 밖에 할 수가 없고, 그것이 수학자와 물리학자의 합심에 의해 진행되고 있는 것이 현 상황이다.
그러나 그러함에도 불구하고 이 거대한 계산 체계의 장에서 숨기기 힘든 골치아픈 것들이 있다. 바로 비연속과 무한이다. 소프트웨어 개발에 있어서 이미 무한의 문제는 골치아픈 일임이 잘 알려져있다. 즉, 0으로 나누면 어떻게 표기해야 할지 난감하며 무한은 그것의 무한의 정확도를 보증하기 위해서는 무한의 저장공간이 필요하다. 이 문제 속에서 대칭과 보존을 정확히 처리하는 문제는 시뮬레이터를 디자인함에 있어서 가장 난감한 부분 중의 하나가 되는 것이다.
하나의 해결 방법은 모든 것을 아주 작은 단위의 깨지지 않는 무엇인가로 상정하는 방법이다. 바로 원자이다. 그렇게 되면 무한의 저장공간이 필요하지 않고 유한의 공간만으로 가능하다. 배열을 만들고 그 배열에 원자들을 배치하면 그만이다. 0과 1로만 그 모든 것을 처리할 수 있다. 원자라는 말로 현대의 표준모형과 헷갈리게 할 필요도 없다. 무언가 가장 작은 단위를 상정하고 그것을 기준으로 처리하면 된다.
따라서 이산적으로 다루는 것은 이 시뮬레이터의 계산을 혼란스럽게 하지 않기 위한 가장 쉬운 접근방법이다. 계산은 원자단위 까지만 하고 나머지는 "근사"하면 그만이다. 그러나 이 근사는 각 원자스러운 것들 사이의 관계가 완벽해야 한다. 이를 테면 자연에는 시간이나 에너지나 질량이나 공간처럼 서로 다른 "량"들이 존재하는데 이것들이 같은 표준으로 이루어져야만 이 하나의 "원자"라는 개념으로 각기 변환이 가능하다. 그리고 이것은 현대 표준모형에서는 플랑크 상수라는 것으로 정의되고 있다.
만약에 이 "원자"라는 개념이 각 물리량마다 다른 체계가 있으면 문제가 있는 것이 근사를 통해 사라지거나 더해지게 된다. 즉 반올림과 반내림이 필요한데, 이전에 설명한대로 특정 변환이 무한이 반복되면 지속적으로 반올림이 생기거나 반내림이 한쪽으로 치우쳐 발생하면서 결국에는 무언가가 사라질 수도 있게 된다. 이렇게 되면 기나긴 계산의 반복하에서 위의 대칭과 보존이 무너지게 된다.
만약에 우리가 존재하는 이 자연(시뮬레이터)이 물리학자들의 주장처럼 전체 시간을 모두 함께 넣고 계산하고 있다면 재미있게도 무한에 대한 고려가 필요하다. 그리고 그것을 완벽하게 대칭시키려면 상기 여러가지 고민이 필요하다.
그러면 우리가 살아가는 이 자연(시뮬레이터)은 이것들을 어떻게 처리하고 있을 것인가?
어찌보면 이 질문에 양자역학은 대답을 하고 있는것 같다. 1900년 이후에 그래서 플랑크와 보어는 이 이산적인 것들에 대해서 정리를 해나가기 시작한 것처럼 생각해볼 수 있다. 우주는 과연 이 무한이라는 연속과 이를 둘러싼 비연속을 어떻게 처리하고 있을까? 시뮬레이터의 특성에 대해 특이하게 고민할 수 있는 중요한 주제가 되겠다.