算法导论(第三版)-复习16贪心算法

Scheduling

Task[t] 纪录开始时间为t的任务链表
f[t] 纪录t-n时间内最大value值,初始均为0

for i=n-1 to 0 do{
    t=Task[i].head;
    while (t){
        f[i]=max{f[i],f[t.endtime]+t.value};
        t=t->next;
    }
    f[i]=max{f[i],f[i+1]};
}

Fractional knapsack

根据性价比v/w排序

证明分数背包问题具有贪心选择性质


算法导论(第三版)-复习16贪心算法_第1张图片

最优装载问题

问题描述:有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。

最优子结构性质:设(x1,x2,……xn)是最优装载问题的满足贪心选择性质的最优解,则易知,x1=1,(x2,x3,……xn)是轮船载重量为c-w1,待装船集装箱为{2,3,……n}时相应最优装载问题的最优解。因此,最优装载问题具有最优子结构性质。

求解过程:最优装载问题可用贪心算法求解。采用重量最轻者先装的贪心选择策略,可产生最优装载问题的最优解。

你可能感兴趣的:(算法)