一,部分背包问题介绍 首先介绍下0-1背包问题。假设一共有N件物品,第 i 件物品的价值为 Vi ,重量为Wi,一个小偷有一个最多只能装下重量为W的背包,他希望带走的物品越有价值越好,请问:他应该选择哪些物品? 0-1背包问题的特点是:对于某件(更适合的说法是:某类)物品,要么被带走(选择 ...
一,问题介绍 最近一直在看贪心算法的正确性证明 如何证明贪心算法获得的解一定是最优解 ,感觉 剪枝 技巧用得比较多。再看了下 算法导论 中贪心算法一章里面的一个练习 找换硬币问题。这个问题对于某些 面值的硬币 是有最优解的,故记录下其中的一些证明思路。 考虑用最少的硬币数 来找 n 分钱的问题,假设每个硬币的值都是整数。 如果可换的硬币的单位是 c 的幂,也就是 c ,c ,... ,ck ,其中 ...
2016-06-11 16:46 4 7299 推荐指数:
一,部分背包问题介绍 首先介绍下0-1背包问题。假设一共有N件物品,第 i 件物品的价值为 Vi ,重量为Wi,一个小偷有一个最多只能装下重量为W的背包,他希望带走的物品越有价值越好,请问:他应该选择哪些物品? 0-1背包问题的特点是:对于某件(更适合的说法是:某类)物品,要么被带走(选择 ...
算法证明 经典排序算法 为什么基于比较的排序算法的时间复杂度不能低于O(nlogn) 决策树与二叉树 红黑树 2-3-4树 树的遍历 算法正确性证明 完全正确性与部分正确性 循环不变量 为什么使用循环 ...
今天学习了Prim算法和Kruskal算法,因为书中只给出了算法的实现,而没有给出关于算法正确性的证明,所以尝试着给出了自己的证明。刚才看了一下《算法》一书中的相关章节,使用了切分定理来证明这两个算法的正确性,更加简洁、优雅并且根本。相比之下,我的证明带着许多草莽气息,于此写成博客,只当是记录 ...
说明: 本文仅提供关于两个算法的正确性的证明,不涉及对算法的过程描述和实现细节 本人算法菜鸟一枚,提供的证明仅是自己的思路,不保证正确,仅供参考,若有错误,欢迎拍砖指正 ...
问题:求图中点1到其他各点的最短距离 策略: 1.把起点1放入初始集合Set中,从剩余的点中,选取到Set(此时Set中只有1个点)距离最近的点,并入集合Set中, 2.从剩余的点中,找经过集合Set,到起点1的最短距离,将最短边并入Set集合 3.依次循环 ...
已知条件: 图p是一个连通图,Y是对p使用prim算法得到的一棵生成树,Y1是p的一棵最小生成树 1.若Y=Y1,显然prim算法是正确的 2.若Y≠Y1,可进行如下推导: a)Y中有n(n≥1)条边不存在于Y1中,在构建Y的过程中,第一次遇到这样的一条边时(以e表示),则e ...
Kruskal算法: 步骤1,选择边e1,使得权值w(e1)尽可能小; 步骤2,若已选定边e1,e2,...,ei,则从E\{e1,e2,...,ei}选取e(i+1),使得 (1)G[{e1,e2,...,e(i+1)}]为无圈图 (2)权值w(e(i+1 ...
以下所有讨论,都是基于有向无负权回路的图上的。因为这一性质,任何最短路径都不会含有环,所以也不讨论路径中包含环的情形!并且为避免混淆,将“最短路径”称为权值最小的路径,将路径经过的点数-1称为路径的长度。 先列出算法的c语言代码实现,后面将用这段代码来辅助证明。 先用比较形象的语言来简单 ...