본문 바로가기

blah/Mini-Journal

예측의 문제

나비 효과(butterfly effect)란 카오스 이론에서 다루는 대상이 초기 조건의 미세한 차이에 따라 최종적인 결과가 굉장히 크게 달라지는 현상을 가리키는 단어다.

 

재밌게도 그러한 일이 발생하는 시스템을 구성하는 논리 자체는 간단할 수 있다. 로렌츠 어트랙터(Lorenz's attractor)의 기이한 궤적은 굉장히 짧은 수식으로부터 나타난다.

 

그러니까, 우리가 규칙을 이해하고 있더라도, 그 규칙이 간단하더라도 그 규칙의 끝에서 맞이하게 될 결과를 정확히 예측하는 것은 어려운 일이다. 심지어 우리가 규칙을 정확하게 파악하고 있지 않다면 더더욱. 결국에는 제약조건과 경험법칙을 덧대어 대상을 예측하게 된다.

 

오늘 푼 문제는 DSLR이었는데, 간단한 BFS로 보였지만 바로 통과하지는 못했다. 처음에는 방문 여부를 고려하지 않았고, 그 다음에는 Python의 한계를 고려하지 않아서였다. 최종적으로는 set을 이용해서 방문을 기록했고 통과했다.

 

그런데 살펴보니 큐에 처음 넣는 원소는 방문 처리를 하지 않았다. 사소한 부분일 거라는 생각이 들었지만 얼마 걸리는 일도 아니라서 그 부분을 고치고 제출해봤다.

 

Before
After

 

소요 시간이 10%나 차이났다. 상상 이상의 차이였다. 트리의 깊이가 2일 때 갔다 돌아오는 경우가 생기면서 원점이 방문 처리될 거라고 생각했는데, 그게 어떻게 이만한 차이를 불러올 수 있는지 이해되지 않았다. 나비 효과라는 단어가 머릿속에 떠다녔다.

 

고민 끝에 두 개의 풀이를 다시 제출해봤는데 웬걸, 시작점을 방문 처리하지 않은 풀이도 약 5400ms이 걸려서 통과했다. 아무래도 서버의 문제였던 듯하다.

 

나는 가끔 보면 너무 단순하게 생각하는 듯하다. 모델링한 대상을 실체 그 자체로 여긴다고 해야 할까, 지나치게 축약된 형태로 대상을 이해하는 것이다. 결국엔 불성실함이다. 불확정성을 야기할 수 있는 요소를 의심하지 않는.

 

비록 오늘 있었던 일이 나비 효과는 아니었지만 그 단어는 여전히 선명하다. 나는 나의 휴리스틱이 잘 짜여진 게임 위에서는 괜찮다고 믿어왔지만, 어쩌면 아닐지도 모른다는 생각이 들었기 때문이다. 규칙이 간결하더라도 과정은 복잡할 수 있다. 그 위에서도 잘하려면 무엇을 더 해야 할까? 당장은 경험을 쌓는 수밖에 없어보인다.

'blah > Mini-Journal' 카테고리의 다른 글

성장의 문제  (0) 2024.05.29
땜빵의 문제  (0) 2024.05.01
(Semi-)Completeness of Tools  (0) 2024.04.10
씨앗에 물을 주고 있어요  (0) 2024.04.02
언어의 사양과 구현  (0) 2024.03.28