算法证明 经典排序算法 为什么基于比较的排序算法的时间复杂度不能低于O(nlogn) 决策树与二叉树 红黑树 2-3-4树 树的遍历 算法正确性证明 完全正确性与部分正确性 循环不变量 为什么使用循环 ...
一,部分背包问题介绍 首先介绍下 背包问题。假设一共有N件物品,第 i 件物品的价值为 Vi ,重量为Wi,一个小偷有一个最多只能装下重量为W的背包,他希望带走的物品越有价值越好,请问:他应该选择哪些物品 背包问题的特点是:对于某件 更适合的说法是:某类 物品,要么被带走 选择了它 ,要么不被带走 没有选择它 ,不存在只带走一部分的情况。 而部分背包问题则是:可以带走一部分。即,部分背包问题可带走 ...
2016-06-11 15:45 0 12341 推荐指数:
算法证明 经典排序算法 为什么基于比较的排序算法的时间复杂度不能低于O(nlogn) 决策树与二叉树 红黑树 2-3-4树 树的遍历 算法正确性证明 完全正确性与部分正确性 循环不变量 为什么使用循环 ...
一,问题介绍 最近一直在看贪心算法的正确性证明(如何证明贪心算法获得的解一定是最优解),感觉“剪枝”技巧用得比较多。再看了下《算法导论》中贪心算法一章里面的一个练习---找换硬币问题。这个问题对于某些 面值的硬币 是有最优解的,故记录下其中的一些证明思路。 考虑用最少的硬币数 来找 n 分钱 ...
问题:求图中点1到其他各点的最短距离 策略: 1.把起点1放入初始集合Set中,从剩余的点中,选取到Set(此时Set中只有1个点)距离最近的点,并入集合Set中, 2.从剩余的点中,找经过集合Set,到起点1的最短距离,将最短边并入Set集合 3.依次循环 ...
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语言代码实现,后面将用这段代码来辅助证明。 先用比较形象的语言来简单 ...
RSA加密算法是利用大整数分解耗时非常大来保证加密算法不被破译。 密钥的计算过程为:首先选择两个质数p和q,令n=p*q。 令k为n的欧拉函数,k=ϕ(n)=(p−1)(q−1) 选择任意整数a,保证其与k互质 取整数b,使得a*b ≡1mod k 令公匙为a和n。私匙为p,q,b ...
Dijkstra算法正确性证明 问题:求图中点1到其他各点的最短距离 算法描述: 设初始时图的所有点的集合U 把起点s放入初始集合Set中 U=U-{s} Set=Set+{s} 找s经过集合Set中的点,能达到的距离最短的点k(k\(\in\)U),将k并入Set ...
...