2014.07.07 15:47简介: 给定N个矩阵,A1、A2、...、An,如果相邻矩阵的维度都满足相乘条件,如何组织这n-1次乘法的顺序,使得总共的乘法次数最少?描述: 根据矩阵乘法的定义,如果矩阵X的维度是aXb,矩阵Y的维度是bXc。那么XY相乘需要的乘法次数是aXbXc。 这道题目...
分类:
编程语言 时间:
2014-07-09 21:05:55
阅读次数:
284
2014.07.07 16:46简介: 对于比较小的正整数n,我们习惯用逐个整除的方法检验n是否为质数。这种算法的复杂度是O(n^0.5)。对于int范围内的整数(最大是2147483647),开方以后不到五万,对于单次计算几乎是一瞬间完成,因此可以接受。但如果n是一个大数,比如10^100,这种....
分类:
编程语言 时间:
2014-07-09 00:49:12
阅读次数:
269
2014.07.07 18:19简介: 给定一条数轴上的n个互不重合的点,你可以计算出C(n,2)=n(n-1)/2个距离。如果我给你这些距离值,你能反推出这n个点的坐标吗?描述: 首先,考虑到你可以平移这n个点,并且可以左右反转它们得到对称的两种情况,我们不妨假设最靠左的点p0的坐标正好是0。.....
分类:
编程语言 时间:
2014-07-08 23:39:38
阅读次数:
361
2014.07.07 22:03简介: 跳表(skip list)是一种随机化的有序数据结构。从形状上来看,长得比较像分层索引。能够在接近对数级别的时间内完成增、删、改、查操作。 你姑且可以认为这种数据结构的用途、用法都和平衡树很相似,但内部的实现原理则完全不同。图示: 下面是一条有序的单链表...
分类:
编程语言 时间:
2014-07-08 22:13:36
阅读次数:
365
2014.07.04 18:32简介: 给定一个有向图,边的权值可能各不相同(不包含负权值)。给定一个起点s,找出起点到所有顶点的最短路径距离。描述: 这就是Dijkstra算法的用武之处了。 实际上,如果从无权值的情况出发,来思考带权最短路径问题的解法,那么应该只需要修改几行之前BFS的代码...
分类:
编程语言 时间:
2014-07-06 18:52:39
阅读次数:
255
2014.07.04 19:34简介: 给定一个带权图(有向无向皆可),找出每个顶点到其他所有顶点的最短距离。描述: 此处介绍O(n^3)级别的Floyd算法,只需要用三层循环的简单代码就完成所有最短距离的计算。唯一需要注意的,就是三层循环里i、j、k的摆放顺序。 代码非常简单,所以无需多作解...
分类:
编程语言 时间:
2014-07-06 18:47:25
阅读次数:
151
2014.07.04 20:43简介: 给定一个有向图,如果每一条边u->v代表一根水管,定义能从u流向v的最大水流量。那么选定起点s和终点t,如果让水从s流入,从t流出,最多能达到多少流量而不挤爆水管?图示: Capacity是容量的意思,那么我们用C(u, v)来表示u->v这条边,也就是u.....
分类:
编程语言 时间:
2014-07-06 17:16:55
阅读次数:
260
2014.07.04 23:03简介: 给定一个无向带权连通图(三个条件),选出n-1条边将这n个顶点连成一棵树,使得这棵树的权值之和最小。描述: 本次使用Kruskal算法来解决这个问题。 如果有n个顶点的话,我们需要n-1条边来拼成一棵树。 Kruskal算法的基本思路,是每次拼上一条边...
分类:
编程语言 时间:
2014-07-06 17:07:20
阅读次数:
245
2014.07.04 22:42简介: 给定一个无向带权连通图(三个条件),选出n-1条边将这n个顶点连成一棵树,使得这棵树的权值之和最小。描述: 本次使用Prim算法来解决这个问题。Prim算法的思想是两点:BFS与贪婪。 我们从一个顶点出发,把这个顶点对应的边加入到优先队列中。既然是优先队...
分类:
编程语言 时间:
2014-07-06 16:49:33
阅读次数:
272
2014.07.04 23:57简介: 这本教材中提到了一个概念,叫关节点(articulation point)。如果从某个无向图里去掉某个顶点以及这个顶点所有的边,如果此时图中连通分量的个数增加了,那么定义这个顶点为“关节点”。更通俗地解释,可以说如果拿走这个顶点,这幅图就破成了好几块,因此这....
分类:
编程语言 时间:
2014-07-06 16:28:12
阅读次数:
287