D+27
오늘도 알고리즘 스터디는 계속된다. 나는 왜 알고리즘 스터디를 계속할까. 모르는 척 하지만 이유는 명확하다. 나는 여전히 건축의 한 면은 Geometry라고 생각한다. 그리고 Geometry를 제대로 다룰 정도의 지식을 갖추려면 컴퓨터공학 4학년은 되어야 한다. 그렇기 때문에 나는 알고리즘을 공부한다.
알고리즘이란 무엇이냐, 주어진 입력값과 출력값이 조건이 주어졌을 때 이를 충족시키는 함수라고 표현할 수 있다. 예를 들면 1,2,3,4 -> 2,4,8,16을 보고 "제곱을 해야 하는구나"를 아는 것과 같은 원리다. 물론 말이야 쉽고 실제로 하면 어렵다.
나는 사대주의에 물들어 있기 때문에 해외 자료를 본다. 그럴 때 멘 해외 유명대학과 같이 있다는 약간의 뿌듯함, 쟤네도 질문하는 부분이 내가 모르는 부분이랑 유사하네, 이야 문제 어렵네 등등 많은 생각이 스친다. 내가 현재 보는 자료는 MIT 6006으로 이전 글에도 언급했던 것으로 기억한다. 알고리즘 입문 책을 기준으로 가르치는 책이다. 예전에 겉만 핥았을 때는 아무것도 몰랐지만 그래도 이번엔 좀 노력 끝에 어느 정도는 이해할 수 있게 되었다.
이 수업은 7강까지 정렬 알고리즘을 논한다. 사실 7강까지 오는 동안 문제 해설 내용 등등을 합치면 거진 12강 정도를 할애하는 내용이다. 이제야 Depth First search 등등을 다루게 되었다. 꽤나 고단한 과정이긴 해도 그래도 해나갈 수 있다. 그 이유는 나의 스승은 임 해당 내용을 공부하고 관련한 일을 하고 있기 때문이다. 나도 그의 수준에 다다라야 하는 의무가 있기에 멈출 수 없다.
정렬 알고리즘을 하며 트리구조 내용이 많이 나온다. 그리고 예상컨대 DFS를 할 때도 트리구조가 나올 것이다. 이쯤부터가 건축에서 쓰는 알고리즘과 접점이 생긴다. 건축 설계와 관련된 대부분 알고리즘은 그래프구조에 기반한다. 근데 그 그래프라는 게 알고리즘 합니다! 그래프부터 합시다 보다는 요래조래 배우다가 드디어 그래프에 다다랐습니다 하는 그런 내용이다. 그러다 보니 다소 시간이 좀 걸린다. 그리고 좀 더 심화 수업에서는 그래프만 가지고 한 학기를 보내니 매우 중요하면서도 쉽지 않은 내용이다.
그래프는 건축에서 공간사이의 관계를 다루는 Space Syntax나 3D 그래픽에 쓰이는 각종 Geometry에 관한 뒤에 달려있는 내용이다. 그러다 보니 이 업계에서 깔짝이다 보면 만날 수밖에 없다. 내 생각엔 그래프 구조만 잘 이해해서 설계 자동화 방법만 만들어도 충분히 괜찮을 거라고 본다. 왜냐면 건축가들이 만들어하고 싶어 하는 공간의 얘기를 들어보면 결국 관계성이라는 키워드가 꼭 나오기 때문이다. 그리고 실제로 Building-GAN이라는 설계 자동화 AI에도 그래프 구조가 쓰였다. 그래서 이 업계의 같은 궤를 하는 사람들이라면 그래프를 해야 한다고 본다.
다시 알고리즘 스터디 내용으로 넘어오면, 이제는 머리로는 어느 정도 이해하는데 코드로 쓰는 부분이 아직 미숙하다. 이론과 실제라는 말이 있듯, 프로그래밍도 알고리즘의 원리를 잘 설명하기도 해야 하지만 말한 대로 코드를 잘 짜는 능력도 필요하다. 그냥 한마디만 덧붙여 보자면 많은 사람들이 개발업계에 있으면서 알고리즘을 몰라도 된다고 말하기도 한다. 내가 본 수업을 기준으로 말하자면 이는 틀린 이야기다. 수업 첫 강에 나온다. "여러분이 알고리즘을 배워야 하는 이유는 개발을 하지 않아도 정확한 의사소통을 하기 위해 필요하다"라고 얘기한다. 아무튼 나는 오늘도 배운다