2004년 1월 13일 화요일

Preload 전략과 On Demand 전략

  Computer Science에서 무진장 많이 쓰는 전략들이다.

  모든 Input이 off-line이라면 (시작시 모든 input을 알 수 있다면)

  전혀 필요 없는 전략들이지만

  현실세계의 input은 on-line이라서 의미가 있다.

  on-line의 input은 많이 올 때도 있고 적게 올 때도 있는 데.

  worst-case로 보자면 가장 복잡한 case를 생각하고 설계를 해야해서

  worst가 아닌 대부분의 경우 매우 심심해게 된다. (자원의 낭비)

  이걸 막기 위해 하는 것이 preload.

  자원이 남을 때 미래의 일을 예측해서 미리 해두는 거다.

  On Demand는 반대 전략이다.

  자원이 부족할 때 현재 꼭 필요한 일만 해두고 현재 필요한 일이 아니라면 안한다.

  ----
  약간 비약하자면
  preload는 breadth first search랑 비슷하다. 일단 보이는 건 다 queue에 담고 처리해 나간다.
  on demand는 depth first search랑 비슷하다. 현재 search하는 데 필요한 최소 정보만 stack에 담고
  처리.

  -----
  그럼 일반인들은 어떤 상황에서 저런 전략들을 사용할까?

  예)

  지금은 봄.

  우리 집이 광주인데. 대전에 있는 학교에 입학하게 되서 기숙사로 이사를 하게 되었다고 하자.

  이사가는 거니까 내 옷을 챙겨가야 한다.

  Preload 전략가 : 지금 기회가 되니까 사계절 옷을 다 챙겨오자. 다음에 남은 짐 가져오려면
                          귀찮다구. (바리바리 짐을 싸 짊어지고 온다.)

  On Demand 전략가 : 당장 입을 옷 두 벌만 가져가야지. 기숙사 공간도 좁으니까 필요한 옷만
                                가져오고 나중에 계절 바뀌면 더 가져와야지. 필요없는 건 집으로 보내기도
                                해야겠다.


  예 2)

  preload 전략가 : 음. 다음 주는 어디를 배우게 될까? 미리 책을 읽어둬야지.
                          (미리 읽어둔 곳을 교수님이 필요없는 부분이라고 skip하면 낭패)

  On Demand 전략가 : 뭐 아직 시험 멀었군. 시험 범위나오면 필요한 곳만 공부해야겠다.
                               (범위 발표 후 시간이 부족하면 낭패..)

  ----

  둘 중 어느 전략이 낫다고 할 수는 없고 상황에 맞게 잘 적용해 나가야 된다.
  우리집 같은 경우는 잘 조화가 안된다고 본다.;;a
  어디 이사 갈 때는 필요하든 안하든 다 넣어주는 preload 전략만 쓰는 데.
  짐이 너무 많이 미칠 지경이다. 필요하지 않은 건 좀 두고 갔으면 좋겠다.

  "현성아. 이것도 가져가렴 나중에 없으면 얼마나 아쉬운데."
  "엄마. 지금 3월인데요. 겨울옷은 주지 마세요."

  놀러가거나 옷사러 갈 때는 On demand.
  출발 30분 전까지는 절대 알 수가 없다.

  "음.. 오늘 날씨 좋은 데. 기분이다~. 자 놀러가자. 빨리 세수하고 나오렴. 여보 도시락 챙겨줘"
  "제발 미리 말 좀 해주세요."

댓글 없음:

댓글 쓰기