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분 전까지는 절대 알 수가 없다.
"음.. 오늘 날씨 좋은 데. 기분이다~. 자 놀러가자. 빨리 세수하고 나오렴. 여보 도시락 챙겨줘"
"제발 미리 말 좀 해주세요."
댓글 없음:
댓글 쓰기