一、Dijkstra算法 Dijkstra算法是解决带权重的有向图最短路径问题,要求所有边权重为非负值。 以下是算法导论上给出的伪码,采用了是贪心策略实现的,总是寻找集合V-S(S集合是加入)中最近的节点加入到S集合中,算法时间复杂度依赖于最小优先队列的实现方式。 下面是C++的实现,时间复杂度是O ...
分类:
其他好文 时间:
2017-06-04 22:43:08
阅读次数:
207
1. 0-1 knapsack problem Instance : weight capacity is 100 item weights values A 50 200 B 30 180 C 45 225 D 25 200 E 5 50 0-1背包问题有最优子结构、重叠子问题————用动态规划。 ...
分类:
编程语言 时间:
2017-05-29 16:38:41
阅读次数:
316
1、bellman-ford算法 对每条边松弛|V|-1次。 运行结果如下: (实现的例子) 2、All-pairs shortest path (choose one from the three algorithms) (实现的例子) 运行结果: 3、8-queen problem (back ...
分类:
编程语言 时间:
2017-05-29 16:36:01
阅读次数:
312
生日悖论 在算法导论书上看到个比较有意思的概率算法,在这里加上自己的理解分享下: 上次刚看同学发的朋友圈说道:“两个人同一间宿舍,而且同年同月同日生,这个缘分真的是醉了”,当时我也是醉醉的,看了这个算法后才发现,屋里有23个人,那么就可以50%的概率生日是一样的。 是这样子证明的: 首先,假设屋子里 ...
分类:
其他好文 时间:
2017-05-27 21:52:52
阅读次数:
6600
有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。《算法导论(原书第3版)/计算机科学丛书》将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具 ...
分类:
编程语言 时间:
2017-05-27 17:08:13
阅读次数:
172
求一个有n个元素的数列,满足任意连续p个数的和不小于s, 任意连续q个数的和不大于t。 令sum[i]表示前i项的和(0<=i<=n,sum[0]=0) 那么题目的条件可转化为: sum[i]-sum[i-p]>=s (p<=i<=n) sum[i]-sum[i-q]<=t (q<=i<=n) 将第 ...
分类:
其他好文 时间:
2017-05-26 21:41:15
阅读次数:
255
//动态规划(Dynamic programming)的最长公共子序列问题(Longest common subsequence) //原理参考《算法导论》书 import java.util.Scanner; public class LCS { public static void main(S... ...
分类:
其他好文 时间:
2017-05-16 10:58:58
阅读次数:
175
《大规模分布式存储系统:原理解析与架构实战》读书笔记 在了解了 Bitcask存储模型后,又開始研究LSM树存储引擎。LSM在实现的过程中使用了一个非常有意思的数据结构:跳跃表。之前在《算法导论公开课》中听过这一节。当时感觉这样的结构和二叉树简直是殊途同归,可是一直没有亲自己主动手实现过。这次又遇到 ...
分类:
其他好文 时间:
2017-05-13 17:00:10
阅读次数:
290
算法导论课程中,老师在介绍随机算法的时候提到指示器随机变量(indicator random variable),感觉很有用的一个东东。 先介绍一下指示器随机变量。 给定一个样本空间S和 事件A,那么事件A对应的指示器随机变量I{A}=1(如果A发生),0(如果A不发生); 显而易见,事件A对应的指 ...
分类:
其他好文 时间:
2017-05-09 11:26:17
阅读次数:
365