http://what-if.xkcd.com/34/

 얼마나 많은 각기 다른 영문 트위터 문구가 존재할 수 있나요? 전 인류가 그것을 다 읽는 데는 얼마나 걸릴까요? - 에릭 H, 뉴저지에서

 북쪽 멀리 스웨덴(Svíþjóð)이란 곳에 돌 하나가 있습니다. 그 돌은 높이가 1백 마일이고 너비가 1백 마일입니다. 1천 년마다 작은 새가 이 돌로 내려와 부리를 다듬습니다. 이 돌이 다 닳아 없어지면 영겁의 하루가 지나갑니다. - 헨드릭 빌헬름 판 론.


 트위터는 140자 제한이 있습니다. 영어 알파벳은 모두 26가지, 빈칸까지 포함해서 27가지이므로 가능한 경우의 수는 27140, 대략 10200가지가 됩니다.

 하지만 전세계 사람들이 이용하는 트위터에서는 영어만 쓰지 않습니다. 컴퓨터에서 사용하는 유니코드 문자열을 전부 사용 가능하며, 그 종류는 수백만 가지에 달합니다. 트위터가 다양한 언어마다 어떻게 한 글자를 정의하는가는 좀 복잡한 문제지만, 가능한 경우의 수는 최대 10800가지에 이를 수 있습니다.

 물론 그들 중 절대다수는 수많은 언어의 문자들이 뒤섞인 의미없는 문구에 불과할 것입니다. 심지어 단지 영어 26자만 사용한다 하더라도 Ptkiboj 같은 아무 의미 없는 단어가 대부분일 것입니다. 이 질문에서는 읽는 것을 전제로 하므로 영어로 의미를 갖는 트윗만을 따져야 할 것입니다. 그럼 얼마나 많은 문구가 가능할까요?

 이것은 상당히 어려운 질문입니다. 아마도 여러분은 사전에 존재하는 단어만 조합하는 경우를 생각할지도 모릅니다. 그리고는 문법에 맞는 것들만 찾아내는 식으로 계산할 수도 있을 것입니다.

 하지만 그래도 여전히 어렵습니다. 예를 들어서, <안녕하세요, 저는 Mxyztplk입니다.>라는 문장은 문법적으로 아무 하자가 없습니다. 여기서는 당신의 이름이 실제로 Mxyztplk이건 아니면 거짓말이건 문법과는 상관이 없습니다.

 따라서 <안녕하세요, 저는....> 같은 식의 모든 문장을 다 헤아리는 것은 별 효용이 없다는 게 명확합니다. <안녕하세요, 저는 Mxyztplk입니다.>와 <안녕하세요, 저는 Mxzkqklt입니다.>는 거의 차이가 없어 보입니다. 하지만 <안녕하세요, 저는 xPoKeMoNx입니다.>의 경우는, xPoKeMoNx가 사전에 있는 단어가 아님에도 불구하고 앞의 두 가지와는 확연히 구별되므로 다른 문장으로 구분할 수도 있을 것입니다.

 다행히도 더 나은 방법이 있습니다.

 딱 두 가지의 문장만이 존재하는 언어를 상상해 봅시다. <5번 통로에 말이 하나 있다(There's a horse in aisle five).>와 <내 집에는 함정이 가득하다(My house is full of traps).>의 두 가지입니다. 모든 트윗은 두 문장 중 하나일 수밖에 없습니다. 그 언어를 쓰는 트위터는 이런 모습일 겁니다.


twitter_screenshot.png

 예전에 제가 다니던 인터넷 커뮤니티 중에서는 글 내용으로는 똑같은 6문장의 대화를 정확한 순서대로 돌아가면서 반복해서 쓰고, 글 제목에 하고 싶은 말을 적는 것을 10년간 계속해왔던 곳이 있었습니다.

 아무튼 이 메시지들은 길지만, 각 메시지 자체에는 별 내용이 없습니다. 모든 트윗 내용은 작성자가 두 문장 중 하나를 골랐다는 것밖에 알려주지 못합니다. 이는 이진법의 0과 1과 같은 것입니다. 문장 자체는 여러 문자로 이루어져 있지만, 각 문장은 단지 0 아니면 1이라는 딱 1비트짜리 정보밖에 표현하지 못하는 것입니다.

 이 예시는 상당히 깊은 생각을 하게 만듭니다. 즉 정보라는 것은 받는 사람이 메시지 자체의 의미를 얼마나 불명확하게 생각하느냐와, 그것을 어떻게 미리 예측할 수 있는가에 달려 있다는 것입니다.

 거의 혼자서 현대 정보 이론을 창시해낸 클로드 새넌은 한 언어의 정보량을 측정해내는 기발한 방법을 생각해냈습니다. 그는 사람들에게 끝부분이 잘려나간 평범한 영어 문장들을 보여주고 그 다음에 올 글자를 예측하게 했습니다.

twitter_volcano.png
 오 맙소사, 화산이 지금 폭...                 폭력적이다?

 
 다음 글자를 맞추는 확률을 수학적으로 복잡하게 분석한 끝에 새넌은 일반적으로 영어 한 글자는 1.0에서 1.2비트 정도의 정보를 담는다는 것을 알아냈습니다. 따라서, 한 글자가 8비트 용량인 아스키 텍스트로 쓰여진 긴 문자열을 압축한다면 한 글자당 1.1비트가 되어야 하므로 용량이 1/8로 줄어들 것입니다. 실제로도 성능 좋은 압축 프로그램으로 전자책 텍스트 파일을 압축하면 비슷한 결과가 나오게 됩니다.

 만약 한 글자가 n비트의 정보를 가진다면 2n가지의 정보를 담을 수 있다는 뜻이 됩니다. 판단 간격(Unicity distance)이나 메시지의 길이 같은 고려할 것들이 많으나 결론적으로 아까 계산된 10200이나 10800보다는 훨씬 적은 대략 2×1046가지의 의미를 가진 각기 다른 트위터 문장들이 가능하다고 볼 수 있습니다.

 그렇다면 이걸 전세계 사람들이 다 읽는 데는 얼마나 걸릴까요?

 한 문장을 읽는 데에 5초가 걸린다고 가정한다면, 한 사람이 2×1046가지의 트윗을 다 읽는데는 1047초가 필요합니다. 이것은 너무나도 큰 숫자이기 때문에 한 사람이 읽건 70억 명이 읽건 큰 차이가 없습니다. 지구가 존재하는 동안에 많은 트윗들 중 지극히 일부라도 다 읽기 힘듭니다.


 대신에 돌산에 부리를 다듬는 새의 이야기로 돌아가도록 합시다. 이 새가 1천 년마다 돌산에 부리를 다듬을 때에 산의 조그마한 입자 몇 개씩이 닳아 사라진다고 가정합시다. 평범한 새라면 아마도 돌에 부리가 갈려서 부리의 일부를 남기고 갈 테니 오히려 산의 크기를 아주 조금씩 키우게 되겠지만, 이 이야기에 평범한 구석이라곤 없으니 넘어가도록 합시다.

 한 사람이 하루에 트윗들을 16시간씩 읽는다고 생각해 봅시다. 그 뒤로는 1천 년마다 1백 마일짜리 산 위에 새가 내려와 눈에 보이지도 않는 조그마한 돌 입자 몇 개를 갈아 없앱니다.

 돌산이 완전히 닳아 없어지면 영겁의 첫날이 지난 것입니다.

 둘째 날이 시작되면 또 다른 돌산에 새가 부리를 갈기 시작합니다. 하루에 1032년씩, 365일이 지나면 영겁의 1년이 지납니다.


 twitter_mountains.png 

세월 참 빠릅니다.


 36500개의 산이 없어지면 영겁의 100년, 한 세기가 지납니다. 하지만 백 년도, 천 년도 충분하지 않습니다.  트윗을 모두 다 읽기 위해서는 영겁의 1만 년이 지나야 합니다. 이것은 문자의 발명으로부터 현재까지 인류의 역사에 해당하는 기간입니다. 단지 하루가 24시간이 아닐 뿐입니다.


 140자는 그리 길지 않은 것 같지만, 우린 결코 할 말이 부족하진 않을 것입니다.


twitter_bird.png


새야, 그런데 너 남는 시간엔 뭐 하니?

profile

Our last, best hope for peace.