2018-08-10

law of minimum

  • 머리를 식히기 위해 읽은 전공이 아닌 사회학 글에서 기억에 남는 진리적인 법칙으로 미니멈의 법칙이 있다. 미니멈의 법칙은 농업 연구에서 발표되었는데 영양분이 불균형을 이룰 때 식물의 성장은 가장 작은 영양분을 기준으로 수확물이 나타난다는 지금 생각하면 너무나 당연한 법칙이다.
  • 하지만 농업 연구에서 발표된 이 법칙은 체인의 법칙으로 경제학에서도 많은 설명을 가져온다. 단단한 체인에 양 끝을 연결하여 물체를 끌고 갈 때 체인이 견딜 힘은 체인의 구성 중 가장 약한 부위가 끊어질 때의 힘이다. 라는 역시나 당연한 법칙이다.
  • 당시 성과평가를 하고 좋지 않은 결과를 받은 나로서는 결과적으로 내가 가장 약한 부분의 결과만을 통해 좋지 않은 성과를 받았다는 불만족을 가졌는데 어떻게 보면 당연한 법칙이자, 내가 받은 성과에 대해 이의가 적용되지 않는 이유였다. 또, 역시 이쯤 읽은 사회학 글에서 나온 휴리스틱 내용과 결합하여 직관적으로 좋지 않은 결과를 받았다는 것을 생각했다.
  • 뭐 성과는 그냥 성과일 뿐이고, 돈에 영향을 주기는 하지만 내 본 모습이 있듯이, 다른 면에 생각해 볼 때 미니멈의 법칙은 매우 많은 시사점을 가지고 있었다.
  • 성과에 대한 나의 부족한 부분을 개선하기 위해 나의 가장 약한 부분을 보충하기 위해 노력해야 하는가? 이 물음에는 나는 아니라고 대답했다. 회사는 팀으로 일하고 팀의 존재 이유는 슈퍼 개발자를 만드는 것이 아니라 서로 간 협업을 위한다고 생각한다. 특히 프로그래밍 개발에 있어서 하나의 전문적인 강점을 가지고 있는 것이 기술에 있어 제너럴리스트가 되는 것보다 좋다고 본다.
  • 이외 반대로 팀의 구성을 효율적으로 하기 위해서는 가장 약한 부분을 보완해야 하는 필요성이 있다. 결과물 농작물에 있어서 수확물의 품질은 결국 가장 부족한 능력에 따르는 결과가 나타난다.
  • 실제 소프트웨어 엔지니어링에서 사용하고 있는 가장 긴 코드 개선하기, 가장 복잡도가 높은 코드 개선하기 등 이 이 법칙을 따르는 품질 향상 방법으로 적용할 수 있다.
  • 농업에 있어서 영양의 부족은 절대량이 달라 어떤 것은 조금 필요하고, 어떤 것은 많이 필요로 한다. 미니멈의 법칙에서는 그 부족의 비율이 작용하듯이 프로젝트 개발에서 팀 간 절대량은 다르기에 주니어는 절대량이 작은 부분을 시니어는 많은 부분을 수행해 영양의 부족 비율을 줄이는 팀 구성의 전략이 필요하다.

conclusion

  • 뜬금없는 결론
  • 가장 장점을 더욱 발전시켜 전문가가 되어야 함은 분명하지만 가장 약한 부분을 보완하는 것도 때로는 필요할 것이다.
  • 팀의 구성, 유지, 협력을 위해 이 법칙을 팀원 모두가 이해하고 팀을 발전시킬 수 있다.

Knot Theory

이어폰 꼬이지 않게 보관하기

  • 매듭 이론, 수학이 실생활에 도움을 얼마나 많이 주는지 생각하다가 조회한 글 내용이다. 수많은 사람의 난제인 이어폰 꼬이지 않게 보관하기를 해결하기 위해 매듭 이론이 사용된다.
  • 하지만 몇몇 방법을 살펴본바 그다지 편리하지 않고 명확하지 않아 이론적인 공식으로 접근해 다시 생각해 봤다.
  • 기초적인 매듭 이론. 그중 unknot 그냥 원 모양이다. 정확히 꼬이지 않은 매듭이다. 이어폰을 원 모양으로 보관하면 절대 꼬이지 않는다.(??) 하지만 이어폰 줄이 1m 정도일 때 50cm 길이로 보관할 수 있다.
  • 여기에서 또 발견한 공식이 Fary–Milnor theorem이다. 매듭이 어쩌고저쩌고 4 pi보다 작은 경우 항상 꼬이지 않은 상태임을 증명한 공식이다.

Fary–Milnor theorem

If K is any closed curve in Euclidean space that is sufficiently smooth to define the curvature k at each of its points, and if the total absolute curvature is less than or equal to 4pi, then K is an unknot.
  • https://en.wikipedia.org/wiki/Fary%E2%80%93Milnor_theorem

활용

  • 수학적인 증명은 생략하고 이어폰을 가지고 접근한다. 매듭 이론은 끝이 없는 원 형태의 매듭이고 이어폰은 직선 줄이다. 매듭 이론을 적용하기 위해 줄 끝과 끝을 서로 가상의 직선으로 연결하여 원 형태로 생각한다.
  • 이어폰을 한 번 접으면 가상의 선을 통해 원이 되고 2 pi, 한 번 더 접으면 4 pi가 된다. 1m 이어폰 줄을 25cm까지 줄이는 데 성공했다.
4pi
  • 이 상태로라면 아무리 가방에 오래, 주머니에 오래 있어도 절대 꼬이지 않는다. 그 증명은 Fary–Milnor theorem으로 되어있으니 나는 모른다.
  • 역시 25cm를 보관하기는 불편하다. 여기서 다른 방법에 많이 나온 것과 같이 현재 꼬인 상태를 유지하며 길이를 줄이는 방법이 필요하다. 나는 그냥 한 바퀴 묶었다. 그리고는 잘된다.
  • 이것은 위상적인 형태를 유지하며 선을 묶어주는 방법이다. 다른 방법에서는 집게를 사용한다던가 자석을 사용하여 그 형태를 유지하도록 한다. 그냥 묶어도 잘되는 것 같아 그냥 사용하기로 한다. 사실 여기서는 묶는 것이 아니라 위상적인 형태를 유지하기 위해 공간을 뒤틀어 준 것이다. 이어폰은 계속 4 pi로 있다.
topology
  • 이어폰에서는 가상의 선을 이었다는 점과 Y자로 선이 구성되어 있음에 실제로는 꼬임이 발생할 수 있겠지만 이론적으로는 절대로 꼬이지 않는 이어폰 보관방법이다.

conclusion

  • 수학은 생활에 도움이 된다.
  • Fary–Milnor theorem = 니 이어폰을 2번만 접은 상태로 유지하여 보관하면 절대 꼬이지 않는다.

문제의 정의와 해결 방법

알고리즘

  • 알고리즘 문제 해결 전략 세트 http://book.naver.com/bookdb/book_detail.nhn?bid=7058764
  • 무식하게 풀기 : 소풍 (난이도: 하, 문제 ID: PICNIC)
  • 분할 정복 : 울타리 잘라내기 (문제 ID: FENCE, 난이도: 중)
  • 동적 계획법 : 와일드카드 (문제 ID: WILDCARD, 난이도: 중)
    • 특정 범위까지의 값을 구하기 위해서 그것과 다른 범위까지의 값을 이용하여 효율적으로 값을 구하는 알고리즘 설계 기법
  • 탐욕법 : 도시락 데우기 (문제 ID: LUNCHBOX, 난이도: 하)
    • 각 단계마다 지금 당장 가장 좋은 방법만을 선택
  • 조합 탐색 : 게임판 덮기 (문제 ID: BOARDCOVER2, 난이도: 하)
  • 최적화 문제 결정 문제로 바꿔 풀기 : 남극 기지 (문제 ID: ARCTIC, 난이도: 하)

문제 해결

  • 개발이라는 것은 코딩을 가르키는 것이 아닌 문제를 해결하는 것이다.
  • 알고리즘 책에 나오는 방법은 수학적으로 증명된 사용 가능한 문제 해결 방법을 제시한다.
  • 소프트웨어 알고리즘이 단순 개발자가 면접을 보기 위한 수단이 아닌 소프트웨어 문제를 해결하기 위한 수학적인 분석 방법이라고 할 수 있다.
  • 물론 기본적으로 면접을 보는데 있어 알고리즘은 하나의 수단임은 분명하다.
  • 여러 혹은 모든 소프트웨어를 개발하기를 목표로 보면, 여러 알고리즘을 해결할 수 있어야 하지만 지금 나의 수준은 분할 정복 정도만 머리속으로 설계하여 소프트웨어 개발을 하고 있는 수준이라 생각한다.
  • 결국 알고리즘 공부는 소프트웨어 공부에 있어 연습문제를 해결하는 practice 경험이 될 수 있다.

문제 정의

  • 문제 해결에 알고리즘을 젹용하는 과정을 생각해 볼때 정의, 계획, 분석, 연구, 실행, 검토 로 분류해 생각할 수 있다.
  • 문제를 정의하는 것은 문제 해결의 과정이다.
  • 회사내에서는 일반적으로 이슈를 만드는 것을 좋아하지 않는다. 하지만 이는 문제 해결의 과정으로 볼 때 나는 이슈를 만드는 것을 피하지 않고 하나의 방법으로 사용한다.
  • 다수의 경우 여기에서 다른 사람과 관점적 문제가 발생한다.
  • 문제가 없으면 해결방안이 없다.

논문 개요

  • Introduction, Methods, Results, Discussion, and Conclusion