* 아래의 내용은 개인의 의견일 뿐 전문가의 의견이 아니며 어떤 특정한 단체의 의견을 대변하지 않습니다.


자기비하란, 스스로를 낮춰서 평가하고 말하는 것을 말한다. 자기비하를 하는 데에는 문화적인 요인, 정신적인 요인, 박탈감 등이 있을 수 있을 수 있다. 하나하나씩 짚어보고 넘어가자면...


문화적인 요인에는 특히 유교 문화권에서는 겸손이 미덕이라는 말이 있다. 한국에서는 "벼는 익을수록 고개를 숙인다." 같은 속담도 있다. 그 중 겸손하기 위한 방법이 상대를 높이기 위해 자기 자신을 낮추는 경향이 있는 문화가 존재하기도 한다. 이런 문화적인 상황에 있으면 과도한 겸손으로 자기비하를 할 수 있다.

정신적인 요인에는 우울증등을 포함한 자기 자신에 대한 비관적인 생각때문에 자기비하를 할 수 있다.

박탈감에는, 자기 자신과 비교해서 상대적으로 특정한 일을 잘 하는 상대를 보고, 내가 그 일을 못한다고 생각하는 것이다.


내가 자기비하에 대해 가진 생각들을 몇 개 적어보도록 하겠다.



[그림 1] 더닝-크루거 효과

사실 사람들이 자기비하를 하는 합리적인 이유는 굉장히 많다고 생각한다. 그 (결과?)중 하나는 더닝-크루거 효과라고 생각한다. 이 더닝-크루거 효과는 말하자면, 능력이 없는 사람이 다음의 경향을 보이는 것을 말한다. [출처는 링크 참조]

  • 자신의 능력을 과대평가한다.

  • 다른 사람의 진정한 능력을 알아보지 못한다.

  • 자신의 능력이 부족하기 때문에 생긴 곤경을 알아보지 못한다.

  • 훈련을 통해 능력이 매우 나아지고 난 후에야, 이전의 능력 부족을 알아보고 인정한다.

이 과대평가라는 것은, 정도가 굉장히 심해서 평균 상위 90% 정도의 사람이 자신을 평균 상위 40%에 있다고 까지 생각한다.

사실 이 현상은 능력이 있는 사람에게도 비슷하게 나타난다. 자신의 능력을 과소평가하는 방향으로 나타난다. 그렇기 때문에, 그들은 자신이 굉장히 못한다고 판단한다. 물론 상위 90% 정도의 사람이 자신을 상위 40%라고 생각한다면, 당연히 그 반대도 있을 것이다.


내가 나에게 느낀 이유는, 내가 올라오려고 노력했기 때문이라고 생각한다. 사실 잘 하는 사람들은 자신의 아래를 유의 깊게 보지 못한 사람이기도 하다. 왜냐하면 그들은 올라오기 위해 계속 위를 보아 왔기 때문이다. 상위 5%의 사람은 자신의 시각으로는 상위 10% 정도의 사람까지 밖에 보이지 않기 때문에 그들이 보는 곳에서 자신은 절반정도의 위치이다. 사실 내가 바라보고 있던 곳은 굉장히 높은 곳이기 때문에, 그 곳까지 올라가기 위해서는 더더욱 그 곳만을 볼 수 밖에 없고, 자기비하는 점점 더 심해져 간다.


다른 사람보다 자기 자신이 해놓은게 별로 없다고 느껴지는 이유에 대해 내가 느낀 것을 나름대로 간단히 설명하자면 "모든게 다 나를 기준으로 하기" 때문이다. 모두가 "어렵다" 라고 느끼는 것을 내가 "쉽다"라고 느끼면, 그것은 나의 적성이지 일이 쉬운 것이 아니다. "나에게 쉬운것은 쉽고, 어려운 것은 어려운 것" 이라는 잣대를 가져다 대면, 나의 적성은 그냥 당연한것이라고 여겨져 버리고, 다른 사람이 잘 하는 것은 그 사람의 천성이라고 생각해 버린다.




사실 이 이유는, 굉장히 안타까운 이유이기도 하다. 왜냐하면 그들은 정말 자신이 그렇게 생각하는 경향을 가지기 때문이다. 하지만 자신이 객관적으로 평가하는 자신의 실력과 사람들 앞에서 말하는 자신의 실력이 다른 경우도 있다. 이게 내가 말하고 싶은 두 번째 이유이다.


놀라운 표를 하나 본 적이 있다. 표의 원본은 기억나지 않으므로 생각이 나는 대로 다시 만들어보면... 


[그림 2] 우리가 어떤 것에 대해 모른다고 말해야 하는 이유



와 비슷했다.


이것이 주는 답은 의외로 간단하다.  "자기가 모른다고 말하면 상처를 받지 않는다." 이다. 자기비하는 다른 사람으로 하여금, 그 주제에 대해 자기가 인지하고 있다는 것을 알고 먼저 할 말이 없게 만든다. 이것은 자기가 상처를 받는게 두려워서 자기가 못한다고 말한 것이기 때문에, 정말 그 사람 보고 못한다고 말하면 화를 낼 수 도 있다. 그리고 이것은 사실 사람을 대할 때 굉장히 화나게 만드는 이유이기도 하다. 만약 내가 대하는 사람이 나보다 실력이 좋은 사람인데 그 사람이 자기 자신을 못한다고 말하는 것은, 나에게도 심각한 박탈감을 줄 수 있다. 

또한, 이것은 객관적으로 그 사람의 실력이 필요할 때 걸림돌이 되기도 한다. 만약에 정말 공동체에 기여할 생각이 있다면, 자신의 정보에 대해서 최대한 잘 전달하려고 노력해야 하지 않을까?




결론적으로 겸손은 굉장히 중요한 것이지만, 그것을 넘어서서 사람들은 여러 이유로 자기비하를 하고 가끔 이것이 문제가 되기도 한다. 자신의 실력을 객관적으로 알 수 있는 기회가 많은 경우에는, 그것을 측정하고 확인하고, 객관적으로 바라봤으면 좋겠다. 자신의 적성을 보고, 자기 자신을 사랑하고, 자기 자신을 자랑했으면 좋겠다고 생각한다. 물론 이것은 글을 쓴 나 자신에게 가장 해 주고 싶은 말이기도 하다.


'생각들' 카테고리의 다른 글

동아리 하제  (0) 2018.08.27
교수님과 상담을 하고 왔습니다  (1) 2018.07.11
2018년 가을 5학기 수강신청  (0) 2018.07.09
자기비하에 내가 느낀 점에 대해  (2) 2017.12.16
기말고사 안 갔다.  (0) 2017.12.12
자취에 대해서  (0) 2017.11.22
  1. hongjun7 2017.12.28 22:23 신고

    좋은 글 잘 읽었어, 한필이.
    나도 가끔 객관적으로 상황 파악한다고 하는 것이, 너무 지나쳐서 비하에 이르는 경우가 있었던 것 같네.
    또 내가 겸손하고자 말했던 게, 듣는 사람에게는 상대적 박탈감을 줄 수 있다는 것도 다시 한 번 생각해보게 되었어.
    형은 한필이 팬이야. 내년엔 올해보다 더 행복하자. 히히.

  2. Fan 2018.06.17 12:18

    안녕하세요. 저는 혜아님의 숨은 팬이에요. 팬이라서 블로그에 가끔 들르고는 하는데, 이 글은 읽을 때마다 새로운 감정으로 공감을 하게 해주는 소중한 글이어서 적어주셔 고맙다고 한번쯤 꼭 말씀드리고 싶었어요.

기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다. 기말고사 안 갔다.

'생각들' 카테고리의 다른 글

동아리 하제  (0) 2018.08.27
교수님과 상담을 하고 왔습니다  (1) 2018.07.11
2018년 가을 5학기 수강신청  (0) 2018.07.09
자기비하에 내가 느낀 점에 대해  (2) 2017.12.16
기말고사 안 갔다.  (0) 2017.12.12
자취에 대해서  (0) 2017.11.22

시간복잡도(Time complexity)는 어떤 프로그램이 수행하는데 걸리는 시간을 말한다. 프로그램이 빨리 실행 될 수록 이로운 점이 많기 때문에, 우리는 시간복잡도를 줄이려고 노력한다. 프로그램이 수행하는데 걸리는 시간과 시간복잡도에 대해 알아보자. 참고로 이 글에는 이해하기 어려울 수 있는 수학적인/공학적인 내용이 들어있다. 이해하지 않고 읽기만 해도 되는 내용에는 표시를 해놓겠다. 이외의 내용은 최대한 이해하기 쉽게 작성하려고 했다.


프로그램의 실행 시간

최신 프로세서 들은 어느정도의 연산을 할 수 있을까? 필자가 쓰고 있는 컴퓨터의 CPU는 Intel(R) Core(TM) i7-7700HQ @ 2.80GHz 이다. 여기서 2.80GHz라는 의미는, 1초에 28억번 "클럭"을 돌릴 수 있다는 것이다. CPU는 기본적으로 하나의 클럭에 한 가지 연산을 처리한다. 쉽게 말하면, 내 CPU는 1초에 28억번 연산을 할 수 있다는 뜻이다. 물론 실제로는 그렇지 않고, 파이프라이닝이라는 것을 한다.


[그림 1] (a)는 일을 순차적으로 처리한다. (b)는 파이프라인을 통해 동시에 처리한다.


쉽게 말해서, 동시에 진행할 수 있는 일 들을 동시에 진행하는 것이다. 우리가 어떤 두 수를 더하기 위해서는, 그 두 수를 본 다음에 계산을 하고, 결과를 어딘가에 작성해야 한다. 그래서 우리가 더해야 할 두 수가 많으면, 속도를 올리기 위해서 "두 수를 보는 것", "계산 하는 것", "결과를 작성하는 것"의 세 단계로 나눠서 일을 수행하게 되고 결과를 작성하면서 두 수를 보고, 계산을 하게 된다. CPU 내에서도 이런 작업이 일어나게 된다. 이것을 "파이프라이닝"이라고 한다. 최신 CPU의 파이프라인은 13~30단계 정도이고, 하나의 파이프라인이 기본적으로 하나의 일을 하는데 걸리는 시간은 1클럭이다. 모든 연산이 모든 파이프라인을 거치는 것은 아니며, 여기서 연산들의 속도차이가 생긴다.

결론적으로 말해서, 연산 하나의 연산시간을 측정하는 것은 의미가 없고, 그 연산의 "평균적인" 연산시간을 측정하는 것이 전체 실행시간을 판단하는 데에 도움을 준다. 간단한 연산인 64bit수의 덧셈, 뺄셈 같은 것은 1클럭 정도가, 곱셈 등은 3클럭, 메모리 접근은 4~300클락, 나눗셈은 80~100 클락 정도가 걸린다. 자세한 내용은 http://www.7-cpu.com/ 등의 사이트를 참조하면 좋다.

뭐 결론적으로, 우리는 가벼운 연산들을 30억번 정도, 무거운 연산들을 1억번 정도 할 수 있다고 생각하면 된다.


큰 수에서의 프로그램의 실행 시간

다음 두 함수를 생각하자. 이 두 함수는 같은 입력에 대해 같은 결과가 나온다. 이 두 프로그램의 차이가 뭔지 살펴보자.

unsigned func1(unsigned n)
{
int sum = 0;
for(int i=0; i<=n; ++i) sum += i;
return sum;
}

unsigned func2(unsigned n)
{
return (unsigned long) n * (n-1) / 2 + n;
}

위의 프로그램은 덧셈, 비교라는 가벼운 연산으로 이루어져 있어서, 연산 하나하나의 실행속도가 빠르다, 반면 아래의 프로그램은 곱셈과 나눗셈(사실 대부분의 컴파일러는 나눗셈을 최적화 해준다.) 으로 이루어져 있어서, 연산 하나하나의 실행속도가 느리다. 우리는 대략, 위의 프로그램이 기본 2클락에, 숫자를 한번 더 할 때 3클락 정도가 걸린다고 생각할 수 있다. 그리고, 아래의 프로그램은 입력에 관계 없이 100클락 정도가 필요하다는 것을 알 수 있다. 결론적으로, 우리는 실행시간을 n에 대한 함수로 나타낼 수 있다. 첫번째 함수의 실행시간은 T(n) = 3n+2일 것이고, 두번째 함수의 실행시간은 T(n) = 100일 것이다.


만약 우리가 쓰는 n의 범위가 0에서 10정도라면, 우리는 func1(n)을 사용할 것이다. 왜냐하면 func1은 2~32클락이 필요할 것이고, func2는 100클락이 필요할 것이기 때문이다. 하지만 만약 우리가 프로그램이 임의의 큰 n에 대해서 빠르게 돌기를 원한다면, n이 33을 넘은 시점부터는 func2가 더 빠르기 때문에, func2를 써야한다.


우리는 대부분 프로그램이 큰 입력에 대해서도 빠르게 실행되기를 원하기 때문에, func2를 사용할 것이고, 여기서 우리가 관심이 있는것은 n에 대해서 얼마나 프로그램의 실행시간이 커지는지에 대해서이다. 우리는 프로그램의 시간을 big-O 표기법으로 표현할 것이다. 이 표기법은 가장 시간이 오래 걸리는 부분에 대해서만 관심을 가진다. 첫번째 함수의 경우 T(n) = 3n + 2에서, 3n은 2보다 충분히 빠르게 커지기 때문에, 2를 무시하고 3n만 남길 수 있다. 그리고 커지는 정도에서 우리는 3이라는 숫자에 관심을 가지지 않는다. 왜냐하면, 이 숫자가 얼마나 크든 작든, 큰 수에서의 대소관계가 변하지 않기 때문이다. T(n) = an인 알고리즘과, T(n) = bn2인 알고리즘이 있으면, a와 b가 얼마나 크든 충분히 큰 n (>a/b)에 대해서, 앞의 알고리즘이 유리할 것이기 때문이다. 그래서 우리는 T(n) = 3n+2에서, 의미있는 부분인 n만 가져와서, O(n)이라고 부른다. T(n) = 100일 경우에는, O(1) 알고리즘이 되는 것이고,  T(n) = 0.00001n4+8n+92312312 같은 경우에는, O(n4) 알고리즘이 되는 것이다. (좀 더 자세히 말해서, f(n) = O(g(n)) 이라고 부르는 것은, 일 때 이다.)


우리가 충분히 큰 입력에 대해서 빠르게 실행되는 것에 관심을 가지는 이유는 여러가지가 있지만, 시간을 상수배만큼 줄이는것보다, n에 관한 식으로 줄이는게 좀 더 효율적이기 때문인 것이 크다.




최근에 바빠서 글을 못 남기는것 같아서, 짧게 짧게라도 글을 올리는게 낫겠다고 느껴서 간단하게 올렸다. 다음 포스트에서는 시간복잡도 분석에 대해서 써 볼것이다. 게시글에 개선할 사항은 덧글로 남겨줬으면 한다.




이제까지의 모든 Logical Thinking 게시글 보기: http://blog.kyouko.moe/8

+ Recent posts