我找到了算法Package-Merge
Algorithm(I, X) {
S is empty;
for all d, Ld list of items having width 2^d;
while X > 0 loop
minwidth = the smallest term in diadic expansion of X;
if I=0 then //is empty
return “No solution.” ;
else
d=the minimum such that L is not empty;
r=2^d;
if r > minwidth then
return “No solution.”
else if r = minwidth then
Delete the minimum weight ;
X= X - minwidth ;
end if
Pd+1=PACKAGE(Ld) ;
discard Ld ;
Ld+l=MERGE(pd+1,Ld+1);
end if
end loop
return “S is the optimal solution.”
}
我对算法有一些疑问。 什么是Ld + 1? 为什么我们丢弃Ld时它可能有一个硬币,其价值= r时的最小宽度
答案 0 :(得分:5)
Ld + 1实际上是
→<子> d + 1 子>
See here (A Fast Algorithm for Optimal Length-Limited Huffman Codes)
表示位置d+1
的列表条目。因此,如果d == 5,那就是第六个列表条目。