随笔- 509  文章- 0  评论- 151  阅读- 22万 
07 2014 档案
《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——Alpha-Beta剪枝
摘要:2014.07.08 22:43简介: “搜索”与“剪枝”几乎是如影随形的。此处的“搜索”指的是带有回溯算法的深度优先搜索。 在之前的“Minimax策略”中我们给出了一个三连棋的程序,运行后你就知道计算一步棋要花多少时间。 为了计算最优的一步棋,我们可能需要递归9万多次。毫无疑问这种阶乘式的... 阅读全文
posted @ 2014-07-08 23:14 zhuli19901106 阅读(1203) 评论(0) 推荐(2) 编辑
《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——Minimax策略
摘要:2014.07.08 20:53 简介: Minimax策略描述的是二人在轮流操作的博弈中,尽力使自己的利益最大化(Max),使对手利益最小化(Min)的一种策略。 这样的游戏有很多种,其中最典型的就是双人棋牌类游戏:中国象棋、五子棋、扑克牌等等。 这样的游戏的特点是: 1. 两人交替操作,一方先开 阅读全文
posted @ 2014-07-08 22:23 zhuli19901106 阅读(4089) 评论(4) 推荐(1) 编辑
《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——拿石头游戏
摘要:2014.07.08 00:08简介: 本章里没有讲到这个内容,是我在看书的时候回忆起了自己被问过的一道面试题。当时觉得特别难,现在回想起来才知道是自己无知。 如果有50颗石子,两人轮流拿。每次可以从其中拿走1,2,4或者8颗。谁拿走了最后一颗,谁就输了(输或者赢根本无所谓)。 请问,先手或者... 阅读全文
posted @ 2014-07-08 00:42 zhuli19901106 阅读(785) 评论(0) 推荐(1) 编辑
《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——跳表
摘要:2014.07.07 22:03简介: 跳表(skip list)是一种随机化的有序数据结构。从形状上来看,长得比较像分层索引。能够在接近对数级别的时间内完成增、删、改、查操作。 你姑且可以认为这种数据结构的用途、用法都和平衡树很相似,但内部的实现原理则完全不同。图示: 下面是一条有序的单链表... 阅读全文
posted @ 2014-07-07 23:50 zhuli19901106 阅读(630) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——收费站重建问题
摘要:2014.07.07 18:19简介: 给定一条数轴上的n个互不重合的点,你可以计算出C(n,2)=n(n-1)/2个距离。如果我给你这些距离值,你能反推出这n个点的坐标吗?描述: 首先,考虑到你可以平移这n个点,并且可以左右反转它们得到对称的两种情况,我们不妨假设最靠左的点p0的坐标正好是0。... 阅读全文
posted @ 2014-07-07 19:23 zhuli19901106 阅读(624) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——质数检验
摘要:2014.07.07 16:46简介: 对于比较小的正整数n,我们习惯用逐个整除的方法检验n是否为质数。这种算法的复杂度是O(n^0.5)。对于int范围内的整数(最大是2147483647),开方以后不到五万,对于单次计算几乎是一瞬间完成,因此可以接受。但如果n是一个大数,比如10^100,这种... 阅读全文
posted @ 2014-07-07 17:46 zhuli19901106 阅读(476) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——矩阵连乘问题
摘要:2014.07.07 15:47简介: 给定N个矩阵,A1、A2、...、An,如果相邻矩阵的维度都满足相乘条件,如何组织这n-1次乘法的顺序,使得总共的乘法次数最少?描述: 根据矩阵乘法的定义,如果矩阵X的维度是aXb,矩阵Y的维度是bXc。那么XY相乘需要的乘法次数是aXbXc。 这道题目... 阅读全文
posted @ 2014-07-07 16:31 zhuli19901106 阅读(751) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——Strassen矩阵乘法
摘要:2014.07.06 18:52简介: 给定两个大小相同的方阵A和B,我们要计算AXB。方阵的大小是2的整次幂,比如2^k。对于这种特殊大小的方阵乘法,Strassen算法能够带来一定程度的加速,矩阵越大,加速效果越明显。描述: 这个例子其实也是分治法的典型算法,通过矩阵分块进行乘法,然后合并结... 阅读全文
posted @ 2014-07-06 21:00 zhuli19901106 阅读(736) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——平面最近点对
摘要:2014.07.06 17:56简介: 给定二维平面上n个点,求出距离最近的两个点的距离。描述: 个人觉得这本书的第十章是最精华的,因为每种算法思想用一个典型问题来讲解。平面最近点对问题,自然是分治法的例子了。 暴力的O(n^2)枚举法自然不用多说,两层循环能得出结果,但效率上只能承担至多几千... 阅读全文
posted @ 2014-07-06 18:39 zhuli19901106 阅读(535) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——Huffman编码
摘要:2014.07.06 16:47简介: 给定一段有固定符号集合S构成的文本T,集合S中总共有n种符号。如果对于每种符号,使用一种不同的由‘0’和‘1’构成的位字符串来代替,比如: ‘a’->‘01’ ‘c’->'101' 'd'->‘11’ ... 例如,文本“acd”经... 阅读全文
posted @ 2014-07-06 17:52 zhuli19901106 阅读(539) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第九章“图论”——割点
摘要:2014.07.04 23:57简介: 这本教材中提到了一个概念,叫关节点(articulation point)。如果从某个无向图里去掉某个顶点以及这个顶点所有的边,如果此时图中连通分量的个数增加了,那么定义这个顶点为“关节点”。更通俗地解释,可以说如果拿走这个顶点,这幅图就破成了好几块,因此这... 阅读全文
posted @ 2014-07-05 00:23 zhuli19901106 阅读(502) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第九章“图论”——Kruskal算法
摘要:2014.07.04 23:03简介: 给定一个无向带权连通图(三个条件),选出n-1条边将这n个顶点连成一棵树,使得这棵树的权值之和最小。描述: 本次使用Kruskal算法来解决这个问题。 如果有n个顶点的话,我们需要n-1条边来拼成一棵树。 Kruskal算法的基本思路,是每次拼上一条边... 阅读全文
posted @ 2014-07-04 23:19 zhuli19901106 阅读(484) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第九章“图论”——Prim算法
摘要:2014.07.04 22:42简介: 给定一个无向带权连通图(三个条件),选出n-1条边将这n个顶点连成一棵树,使得这棵树的权值之和最小。描述: 本次使用Prim算法来解决这个问题。Prim算法的思想是两点:BFS与贪婪。 我们从一个顶点出发,把这个顶点对应的边加入到优先队列中。既然是优先队... 阅读全文
posted @ 2014-07-04 23:00 zhuli19901106 阅读(452) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第九章“图论”——最大流问题
摘要:2014.07.04 20:43简介: 给定一个有向图,如果每一条边u->v代表一根水管,定义能从u流向v的最大水流量。那么选定起点s和终点t,如果让水从s流入,从t流出,最多能达到多少流量而不挤爆水管?图示: Capacity是容量的意思,那么我们用C(u, v)来表示u->v这条边,也就是u... 阅读全文
posted @ 2014-07-04 22:18 zhuli19901106 阅读(779) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第九章“图论”——多源最短路径问题
摘要:2014.07.04 19:34简介: 给定一个带权图(有向无向皆可),找出每个顶点到其他所有顶点的最短距离。描述: 此处介绍O(n^3)级别的Floyd算法,只需要用三层循环的简单代码就完成所有最短距离的计算。唯一需要注意的,就是三层循环里i、j、k的摆放顺序。 代码非常简单,所以无需多作解... 阅读全文
posted @ 2014-07-04 19:47 zhuli19901106 阅读(504) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第九章“图论”——单源带权最短路径问题
摘要:2014.07.04 18:32简介: 给定一个有向图,边的权值可能各不相同(不包含负权值)。给定一个起点s,找出起点到所有顶点的最短路径距离。描述: 这就是Dijkstra算法的用武之处了。 实际上,如果从无权值的情况出发,来思考带权最短路径问题的解法,那么应该只需要修改几行之前BFS的代码... 阅读全文
posted @ 2014-07-04 18:39 zhuli19901106 阅读(358) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第九章“图论”——无权值的最短路径问题
摘要:2014.07.04 18:24简介: 给定一个有向图,你可以认为每条边长度都是1(所以叫无权值)。下面的算法可以求出从特定的起点到终点的最短路径长度。描述: 从起点出发,根据当前顶点出发的边进行广度优先搜索,直至找到终点即可。如果搜索结束了仍然没有找到终点,那么起点无法到达终点。实现: 1 /... 阅读全文
posted @ 2014-07-04 18:30 zhuli19901106 阅读(744) 评论(0) 推荐(0) 编辑
《数据结构与算法分析:C语言描述》复习——第九章“图论”——拓扑排序
摘要:2014.07.04 17:23简介: 我们考虑一种特殊的图: 1.有向图 2. 只有一个连通分量 3. 不存在环 那么这样的图里,必然可以找到一种排序方式,来确定谁在谁的“前面”。 简单的来说可以这么理解:如果存在一条边a->b,那么a顶点就在b的前面。 下面我们通过例子... 阅读全文
posted @ 2014-07-04 18:19 zhuli19901106 阅读(649) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示