짧은 일부터 처리하면, 끝날 때까지의 비용도 최소일까요?

모든 일을 처음부터 시작할 수 있고, 한 번에 하나씩 중단 없이 처리하는 가상 일정이에요. 끝날 때까지 붙는 비용을 줄이려면 짧은 일이나 비용률이 큰 일부터 하면 되는지, 두 일의 순서를 바꾼 비용과 전체 순서의 조건을 비교해요.

도구와 빈 작업대, 제도대가 놓인 작업실

이미지: AI 생성 · 수학 이야기

처리자가 세 일을 한 번에 하나씩 끝내요. 모두 시각0부터 시작할 수 있고, 시작한 일은 중단하지 않으며 빈 시간을 넣지 않아요. 각 일은 시작 전과 처리 중 모두 완료될 때까지 시간당 비용 w를 내요. 처리시간 p와 비용률은 자체 수치예요.

일 p w
A 6 7
B 2 4
C 1 1

완료시각을 Cᵢ라 할 때 총비용 ΣwᵢCᵢ를 최소로 하는 순서를 구해 볼까요? 짧은 일부터 또는 비용률이 큰 일부터 하면 되나요? 임의의 서로 다른 n개 일에서 pᵢ,wᵢ>0일 때 모든 최적 순서의 조건도 증명해 볼까요?

이웃한 i,j 전에 이미 T시간 지났다고 해 볼까요? i→j와 j→i의 비용 차는

[wi(T+pi)+wj(T+pi+pj)]−[wj(T+pj)+wi(T+pj+pi)]=piwj−pjwi.\begin{aligned} &[w_i(T+p_i)+w_j(T+p_i+p_j)]\\ -&[w_j(T+p_j)+w_i(T+p_j+p_i)]\\ &=p_iw_j-p_jw_i. \end{aligned}

뒤의 일은 두 순서 모두 T+pᵢ+pⱼ 후에 시작해 변하지 않아요. 따라서 pᵢ/wᵢ≤pⱼ/wⱼ일 때 i를 먼저 하는 편이 비용을 늘리지 않아요. 이 예의 비는 B가1/2,A가6/7,C가1이므로 B→A→C입니다. 완료시각은2,8,9라 최소비용은4×2+7×8+1×9=73입니다. 짧은 순 C→B→A는76, 비용률 순 A→B→C는83입니다.

두 일의 비교만으로 전체 최적성이 되는 이유도 적어 볼게요. 비용은 각 일 자체의 wᵢpᵢ와, i가 j보다 앞이면 생기는 pᵢwⱼ를 모든 두 일에 걸쳐 더한 값이에요. 각 쌍의 추가 비용은 min(pᵢwⱼ,pⱼwᵢ)보다 작을 수 없어요. p/w가 작아지는 일이 없도록 정렬하면 모든 쌍에서 이 하한을 동시에 얻으므로 전체 비용도 최소예요.

반대로 그 비율 순서가 깨진 배열에는 이웃한 엄격한 역전이 있어요. 두 일을 바꾸면 위 차가 양수여서 비용이 줄므로 그 배열은 최적일 수 없어요. 따라서 최적 순서일 필요충분조건은 p/w의 비감소 순서예요. 비가 모두 다르면 순서는 유일하고, 같은 비끼리는 어느 순서로 바꿔도 비용이 같아요. 서로 다른 비의 동률 묶음 크기가 m₁,…,mₖ이면 최적 순서는 m₁!⋯mₖ!개예요.

여기서 비용은 끝날 때까지의 시간에 붙어요. 시작 전 대기만 합산하는 다른 기준과 섞지 않아요. 원문이 설명한 이웃 교환을 자체 세 일에 적용하고, 모든 쌍의 하한과 동률 경우까지 직접 증명했어요. 무엇을 먼저 하겠다는 직관을 적은 뒤, 그 규칙이 최소로 하려는 양을 식으로 확인해 봐요.

출처·착안: Stanford CS161, Lecture14 — Greedy Algorithms의 Scheduling. 자체 조건·수치·문항·최적 순서 전체의 증명을 새로 작성했다.

이 글 공유하기

개인정보 및 방문 통계 안내