나비 효과(butterfly effect)란 카오스 이론에서 다루는 대상이 초기 조건의 미세한 차이에 따라 최종적인 결과가 굉장히 크게 달라지는 현상을 가리키는 단어다.
재밌게도 그러한 일이 발생하는 시스템을 구성하는 논리 자체는 간단할 수 있다. 로렌츠 어트랙터(Lorenz's attractor)의 기이한 궤적은 굉장히 짧은 수식으로부터 나타난다.
그러니까, 우리가 규칙을 이해하고 있더라도, 그 규칙이 간단하더라도 그 규칙의 끝에서 맞이하게 될 결과를 정확히 예측하는 것은 어려운 일이다. 심지어 우리가 규칙을 정확하게 파악하고 있지 않다면 더더욱. 결국에는 제약조건과 경험법칙을 덧대어 대상을 예측하게 된다.
오늘 푼 문제는 DSLR이었는데, 간단한 BFS로 보였지만 바로 통과하지는 못했다. 처음에는 방문 여부를 고려하지 않았고, 그 다음에는 Python의 한계를 고려하지 않아서였다. 최종적으로는 set을 이용해서 방문을 기록했고 통과했다.
그런데 살펴보니 큐에 처음 넣는 원소는 방문 처리를 하지 않았다. 사소한 부분일 거라는 생각이 들었지만 얼마 걸리는 일도 아니라서 그 부분을 고치고 제출해봤다.
소요 시간이 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 |