05+贪心算法.ppt

Content 贪心算法原理 算法实例 单源最短路径问题 最小耗费生成树(Kruskal) 最小耗费生成树(Prim) 文件压缩 小样例:背包问题 0-1背包问题: 给定 n 种物品和一个背包。物品 i 的体积是vi,其价值为 si,背包的容量为 C。应如何使得装入背包中物品的总价值最大? 贪心算法思路 贪心算法 void Knapsack(int n, int M, int V[], int S[], int X[], f Y[]){ Sort(n, V, S, Y); //将各种物品按单位体积价值排序 int i; for(i=1; i=n; i++) X[i] = 0; //将解向量初始化为零 int C = M; // 将背包剩余容量初始化为 M for(i=1; i=n; i++){ if( V[i]C ) break; X[i] = 1; C -= V[i]; } if(i=n) X[i] = C/V[i]; } 算法正确吗? 单源最短路径问题 设:G = (V, E) 为一个有向图,每一条边都具有非负长度,有一个特异顶点 s 称为源。 求:从 s 到 V 中每一个其他顶点 v 的距离,即最短路径 d(v) 。 假设:V =

文档评论(0)

1亿VIP精品文档

相关文档