这个代码行在这个包合并算法中意味着什么?

时间:2011-04-25 20:36:01

标签: algorithm

我找到了算法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时的最小宽度

1 个答案:

答案 0 :(得分:5)

Ld + 1实际上是

  

→<子> d + 1

See here (A Fast Algorithm for Optimal Length-Limited Huffman Codes)

表示位置d+1的列表条目。因此,如果d == 5,那就是第六个列表条目。