생활 알고리즘

거제 몽돌해수욕장('96.4)
모든 것을 의심하고, 나의 신념에 따라 학문을 재구성한다. (데카르트)

1. 도입

간단히 말해 알고리즘이란 어떤 일을 하기 위한 방법 및 절차를 말한다.
'효율적인 일처리를 위해서 어떻게 하면 좋을까?' 라는 문제에 대한 해답은 여러 가지가 있을 것이다. 어떤 일은 최상의 방법이 한 가지일 수도 있고, 또 어떤 일은 최상의 방법은 없지만 취향에 따라 여러 좋은 방법 중 선택할 수도 있을 것이다.

알고리즘이란 말은 컴퓨터 프로그램을 작성할 때 많이 나온다.
예를 들어 1부터 100까지 더하는 프로그램을 작성하는데 대한 알고리즘, 100명의 수학 점수가 있을 때 이를 높은 점수부터 정렬하는 알고리즘, 두 자연수에 대한 최대공약수를 찾는 알고리즘 등등이 있다. 다른 모든 조건(컴퓨터)이 같을 경우, 알고리즘의 차이에서 오는 프로그램의 차이는 엄청날 수 있다. 알고리즘이라는 것은 일을 처리할 때 혹은 문제를 해결할 때 어떤 방법으로 또 어떤 순서에 의해 행할 것인가 하는 방법론적인 문제이다.
컴퓨터라는 깡통(?)은 순전히 사람의 지시(프로그램)에 의해서만 일을 하므로 어떤 알고리즘을 사용하는가는 무척 중요한 문제이다. 그래서 컴퓨터 알고리즘은 많이 연구되어 나와있고 또한 계속 연구되고 있으며 중요한 연구 분야이다.

사람은 기계가 아니며, 기계처럼 살고 싶은 사람은 없을 것이다.
하지만 우리의 수명은 한계가 있다. 남들이 두 시간에 할 일을 한 시간에 제대로 끝낼 수 있다면 그건 기쁜 일이다.
행동이나 사고에 있어서 누구나 나름대로의 철학이 있을 것이다. 내게도 여러가지 생활방식이 있는데 '도덕적 생활', '수학적 사고방식', '알고리즘적 사고방식'이 그러한 예이다. 생활속에서의 알고리즘은 재밌는 게 많다. 여기서는 단순하면서도 쓸데없는 나의 생각들을 소개하고자 한다. 알고리즘은 개략적일 수도 있고 무척 상세할 수도 있다. 너무 간략하면 부족할 수가 있고, 너무 자세하면 피곤할 수가 있다. 여기에 소개하는 알고리즘들이 완벽하다고 생각하진 않는다. 또한 반드시 모든 사람에게 유익하다고도 생각하진 않는다. 그냥 '이런 생각도 할 수 있구나.' 정도로 봐 주길 바라며, 잘못된 부분을 발견했거나 여러분의 알고리즘이나 기타 의견이 있으면 게시판으로 연락을 주기 바란다.

2. 재미있는 생활 알고리즘들

긴급 알고리즘 (가로채기 알고리즘)

화장실에서 일을 보고 있는데 뱀이 나타났다고 하자. 이 때, 일이 덜 끝났다고 하여 계속 힘만 주고 있을 것인가?

남에게도 긴급 알고리즘이 있음을 알고 양보하는 습관을 갖는다.

취침 알고리즘

자면서 무슨 알고리즘이 있냐고 묻는다면 그 대답은 "있다" 이다.

    [용어] 취침자세 : 잠을 자고자 하여 취한 자세(방바닥, 침대, 차, 책상, ... 등등 어디서든).
  1. 잠을 원해서 취침자세를 취한다.
  2. 잠을 원하나 잠이 안 오면 자신에게 계속 잠을 요구하며 다음을 행한다.
    • 하루의 일을 반성한다.
    • 내일 할 일을 계획하며 맘 속으로 그 일을 그려본다.
    • 기상해야할 시각을 계획하며, 꼭 그 시각에 일어나도록 자기최면한다.
    • 부모님을 비롯한 고맙고 중요하고 가까운 사람들을 생각한다.
    • 오늘 내가 도움 받은 사람을 생각하고, 내일 도와줄 사람을 생각한다.
    • 최근의 나의 일을 반성하고 근래에 해야할 일을 생각한다.
    • 이제까지의 일을 돌아보고 지금의 어려움은 즐거움이라 생각한다.
    • 숫자를 100부터 역으로 세며 잠을 청한다.
    • 숫자를 수열에 의해 세며 잠을 청한다.
    • 그래도 잠이 안 오면 취침자세를 다시 취하며 1번으로 간다.
  3. 잠이 들었다.
  4. 잠을 깨기 전까진 계속 잔다.
  5. 잠든 상태에서 기상 알고리즘으로 자신도 모르게 넘어간다.

기상 알고리즘

아침에는 누구나 바쁘다. 그 바쁜 중에도 여유로울 수 있으려면 어떻게 해야할까. 여기서는 아침에 잠자리에서 일어나는 것을 기준으로 삼았다.

  1. 잠이 든 상태이다. 즉, 취침상태이다.
  2. 잠이 깨었다. 눈은 감은 상태이다.
  3. 눈을 떠야함을 직관적, 감각적, 지각적으로 느끼면 눈을 뜬다.
    아니면 취침 알고리즘으로 돌아간다.
  4. (눈 뜬 상태에서) 더 자야함을 직관적, 감각적, 지각적으로 느끼면 취침 알고리즘으로 간다.
  5. (눈은 떴고 더 자야할 지는 모르는 상태에서) 일어나야함을 직관적, 감각적, 지각적으로 느끼면 일어난다.
    아니면 시계를 보고 더 잘 것인지(go 취침 알고리즘), 눈만 감고 있을지(go 2번), 눈 뜨고 수시로 시계를 확인할 것인지를 결정한다(go 5번).
  6. (일어난 상태임) 먼저 해야할 일을 생각한다.
  7. 조금밖에 시간적 여유가 없을 땐 간단히 씻을 수 있다.
    씻을 여유가 없거나 늦었을 땐 옷만 갈아 입는다.
    여유가 있을 땐 다음을 행할 수 있다.
  8. 신진대사를 원활히 하기 위해 한 모금의 물을 천천히 마신다.
  9. 화장실이 무척 급할 땐 화장실부터 간다.
  10. 아침을 집에서 먹기로 결정했다.
    밥솥에 밥이 있으면 화장실로 바로 가고, 없으면 밥을 되도록 준비시키고 (즉, 쌀을 씻어 전기밥솥에게 일을 시키고) 화장실에 간다.
  11. 서브루틴 화장실 알고리즘(화장실 알고리즘을 시행하고 돌아온다).
  12. 밥을 준비하며 반찬도 준비한다. 필요에 따라 설거지도 한다.
    이 때, 국을 끓이는 중에 세면을 하는 등 시간을 효율적으로 쓴다.
  13. 식사를 즐겁게 하며 다음을 생각한다.
    • 음식이 나오기까지의 정성을 생각하며 부모님과 농어민에 감사한다.
    • 오늘 하루는 어떻게 보낼 것인가, 반드시 해야할 일은 어떤 것인가.
    • 식사후 해야할 일들을 머리속에 그려본다.
  14. 설겆이할 것은 물에 불려 놓았다가 나중에 하겠다.
  15. 이를 닦는다. 이 때도 건설적인 생각을 한다.
  16. 준비물이나 짐 등을 챙긴다.
  17. 시간적 여유가 있으면 책을 보거나 생각을 하는 등 여유를 부려 본다.
  18. 여유를 다 부렸으면 적당한 옷으로 갈아입는다.
  19. 방 상태를 확인(가스, 전기, 창문 등의 잠금 상태)하고 짐을 챙겨 든다.
  20. 출입문을 잠그고 나가야 할 경우 열쇠를 밖으로 가지고 나와 잠근다.
  21. 기상 및 출근 알고리즘이 끝났다.
절대로 열쇠를 방 안에 두고 잠그는 일이 있어서는 안 된다.

화장실 알고리즘

  1. 화장실에 가야할 필요가 없으면 여기서 화장실 알고리즘을 빠져나간다.
  2. (화장지 챙기기)
    화장지가 필요한 일이면
    • 화장지는 가지고 있는가?
      예.
      • 화장지를 챙긴다.
      아니오.
      • 화장지보다 화장실이 급하지 않으면
        • 화장지를 찾는다.
        • 화장지를 못 찾았으면 대용으로 쓸 것이라도 구한다.
  3. (화장실 찾기)
    빈 화장실을 못 찾았으면
    • 더 찾을 것인가?
      예.
      • 가까운 화장실부터 찾는다.
      • 못 찾으면 (화장실 찾기)를 반복한다.
      아니오.
      • 앞 사람이 나올 때까지 기다리던가
      • 산으로 올라간다. 이 때,
        1. 주위에 나무, 갈대나 키 큰 풀이 몸을 숨길 수 있는 곳을 찾는다.
        2. 돌이나 나뭇가지, 신발 등을 이용하여 적당히 넓게 구덩이를 판다.
        3. 적당한 돌을 구덩이 옆에 발판으로 만든다.
  4. 일을 볼 때는 불필요한 요소가 없게 한다.
    • 삐삐, 볼펜, 수첩, 동전 또는 기타 나와서는 안 되는 것이 주머니에서 나와 똥통으로 빠지는 일이 없도록 해야 한다.
    • 큰 일을 앞두고 어떠한 일이 있어도 화장지가 바닥에 떨어지게 해서는 안 된다.
    • 큰 변이나 작은 변이 직접 혹은 굴절, 회절, 분사, 반사 또는 아직 알려지지 않은 다른 방법으로 몸이나 옷, 신발 등에 튀게 해서는 안 된다.
    • 한여름밤엔 모기향을 준비하지 않으면 고생하는 경우가 있다. 경우에 따라선 일을 시작하지 않았으면 다시 준비해서 들어오는 것이 현명하다.
  5. 화장실에서 힘을 쓰며 다음을 생각한다.
    • 현재 고민하고 있는 문제를 풀려고 노력한다.
    • 재밌는 문제를 머리속으로 만들어 본다.
    • 오늘 혹은 내일 해야할 일들을 떠올려 본다.
    • 어제 혹은 오늘 한 일들을 떠올려 본다.
  6. 물을 내려야 하는 화장실이면 물을 내린다. 이때 물이 없다면 나중에 아무리 먼 곳에서라도 물을 퍼 와서 내린다.
  7. 화장지가 필요한데 현재 없는 경우 몇 가지 방법.
    • 주위에 인기척이 나면 부탁한다.
    • 핸드폰이 있다면 가까운 사람에게 부탁한다. 기타 통신 장비를 최대한 이용한다.
    • 주머니를 뒤져 종이나 기타 닦을 수 있는 것을 이용한다.
    • 이미 사용된 좀 깨끗한 휴지를 재사용한다.
    • (산으로 간 경우)잎이 넓은 풀이나 나뭇잎 등을 이용한다.
    • 인생에 관해 깊이 생각하며 죽치고 누군가를 기다린다. 이 때, 마르고 닳는 수가 생길 수 있음.
    • 그냥 나온다.
    • 어쨌든 찝찝할 경우 나중에 깨끗이 처리해야함은 당연하다.
  8. 일이 끝나고 옷은 항상 단정하게 정리한다.
  9. (산으로 간 경우) 흙과 풀, 나뭇잎 등으로 땅을 덮고 원상복구 시킨다.
  10. 시원함과 고마움을 느껴야 하며, 일을 보기 전과 일을 본 후의 마음이 다르지 않아야 한다.
  11. 바로 손을 씻을 것을 권한다.
화장실에 삐삐를 빠지게 하는 행위, 똥물이 튀게 하는 행위, 화장지가 찢어지는 경우 등은 생각하기도 싫다.

주차 알고리즘

차를 운전해서 목적지에 왔다. 차에서 내려야 하고, 차를 잠궈야 한다. 그 전에 확인해야할 사항이 있다.

  1. 주차할 적당한 곳이 아니면 적당한 곳으로 이동한다.
  2. 주차를 제대로 한다(평지, 경사로 등에 따른 고임목 및 브레이크 등 확인).
  3. 창문은 모두 올린다(경우에 따라 약간 열어둘 수 있다).
  4. 전기장치를 모두 끈다(전조등, 미등, ... . 밧데리 방전 방지 위함).
  5. 열쇠를 돌려 뽑는다.
  6. 내부 상태(안전한지)를 확인하고 차에서 내린다.
  7. 열쇠를 차 밖으로 가지고 나와 문을 잠근다.
  8. 모든 상태를 다시 확인하고 잘못된 부분이 있으면 거기부터 다시 행한다.
  9. 이상이 없으면 주차가 완료되었으며 다른 할 일을 한다.
가끔 밧데리 방전되어 고생하는 운전자를 보게 된다. 또 열쇠를 차에 두고 내려 고생하는 운전자를 보게 된다. 좋은 알고리즘의 습관화로 이러한 실수를 하지 않도록 하자. 만일 실수를 하게 되면 똑같은 실수를 하지 않도록 깊이 반성하자.

운동 알고리즘

  1. 자기 몸에 맞는 운동을 목적에 맞게 장기적으로 계획하는게 좋다.
  2. 어떤 운동을 어떻게(시간, 강도, 효과) 할 것인지 계획한다.
  3. 운동에 적합한 복장(필요할 경우 준비물 포함)을 하고 목적지로 간다.
  4. 운동은 '준비운동 - 본운동 - 정리운동'의 3단계로 나눌 수 있다.
  5. 운동에 호흡이 중요함을 명심하고 유의한다.
  6. 준비운동
    • 본운동에 앞서 몸을 푸는데 목적이 있다.
    • 심장에서 먼 곳부터 풀어 준다.
    • 근육, 관절 등에 처음부터 무리를 주어서는 안된다.
    • 동적, 정적인 몸풀기를 병행한다.
    • 동작은 최대한 크게 한다.
    • 달리기 등 뛰는 것은 꼭 할 것을 권한다.
    • 몸이나 마음에 준비가 덜 되었을 경우 본운동을 삼간다. 무리한 운동은 안 하는 것만 못 할 수 있다.
  7. 본운동
    • 본운동 중에도 수시로 몸을 풀어준다.
    • 사람, 종목, 목적 등에 따라 운동 방식이 다를 수 있다.
    • 항상 예의를 다한다.
    • 항상 최선을 다한다.
    • 경기에선 항상 정정당당해야 한다.
    • 함께 운동하는 사람이 있을 경우 고마움을 느낀다.
    • 위험을 무릎써야할 경우 반드시 주위에 미리 알린다.
    • 수영에 있어서 수영장, 도랑, 계곡, 강, 저수지, 바다 등에서의 수영이 모두 같지 않음을 알고 수영에 임해야 한다.
    • 상대와 몸끼리 부딪히는 경우 감정이 상하지 않게 한다.
    • 무리하지 않는다. 무리한 운동은 몸을 상하게 한다.
    • 가끔 체력의 한계에 도전하는 것도 괜찮다.
  8. 정리운동
    • 아무리 피곤하거나 귀찮더라도 정리운동을 반드시 한다.
    • 심장에서 먼 곳부터 무리가 가지 않을 정도로 한다.
    • 정리운동의 습관화로 건강한 몸을 유지하자.

3. 맺음말

세상엔 많은 컴퓨터가 있다. 하지만 그 모든 컴퓨터를 다 합쳐도, 또한 앞으로 개발될 컴퓨터를 다 모아도 나의 머리를 능가할 순 없다는 것을 아는가? 두뇌공학이라고 하여 계속 연구되겠지만 아뭏든 우리 인간의 머리는 컴퓨터라는 기계와는 구조적, 본질적으로 다르다. 사람에 얼만큼 닮은 컴퓨터를 만드는가는 학자들에게 주어진 영원한 과제인 것이다.

알고리즘은 또한 알고리즘의 모임이다.
만일 로봇에게 많은 알고리즘을 주어서 스스로 살아가도록(그렇게 보일 뿐이다.) 만들 경우 많은 시행착오를 거칠 것이다. 이 때, 로봇은 무서운 악당이 될 수도 있을 것이다. 로봇에게 도덕성의 우선순위에 대한 알고리즘을 많이 집어 넣어야 비로소 인간다와질 것이다.

좋은 일에 기뻐하며, 남의 슬픔에 함께 눈물 흘릴 수 있는 따뜻한 마음씨를 갖자. 올바른 알고리즘의 생활화로 가장 인간다운 삶을 살자.


최초 작성일 : 1998.6.3.화.