摘要: This is a object containing several threadpools. Each pool has a name. There is a executorMap of <name, Executor> inside ExecutorService recording the mapping from name to executor , which contains a threadpool. User calls instance.startExecutorService(ExecutorType, maxThreads) to create the E 阅读全文
posted @ 2012-08-06 20:53 wlu 阅读(1508) 评论(1) 推荐(0) 编辑
摘要: 用Java HashMap做对象Cache时要注意一点:要Override对象的HashCode()方法和boolean equals(Object obj)方法,两者缺一不可! 阅读全文
posted @ 2012-07-19 01:16 wlu 阅读(570) 评论(0) 推荐(0) 编辑
摘要: 排序排序是使数据有序化的操作。这里的数据包括关键字和其它信息项,关键字用来控制排序。排序使得数据有序化,实际上是使数据按关键字的某个定义明确的顺序规则排列。如果被排序的数据在内存中,那么这个排序方法就叫做内排序;如果数据来自磁盘则叫做外部排序。其中内部排序能很容易访问任何数据项,而外排序必须顺序地访问数据项。本章我们主要讨论内部排序。对于内部排序,数据在内存中的存储方式分为数组和链表两种。本章我们主要讨论基于数组存储方式的算法,并简单介绍几种基于链表存储方式的数据的算法。对算法的性能评价包括时间开销、空间开销、稳定性等方面。时间和空间开销比较容易理解,所谓算法稳定性值得是:如果排序算法不改变关 阅读全文
posted @ 2012-07-14 17:37 wlu 阅读(3078) 评论(1) 推荐(0) 编辑
摘要: 网络流在上一章中我们讨论的主题是图中顶点之间的最短路径,例如公路地图上两地点之间的最短路径,所以我们将公路地图抽象为有向带权图。本章我们将对基于有向带权图的模型做进一步扩展。很多系统中涉及流量问题,例如公路系统中车流量,网络中的数据信息流,供油管道的油流量等。我们可以将有向图进一步理解为“流网络”(flownetwork),并利用这样的抽象模型求解有关流量的问题。图电路原理图可抽象为网络流流网络中每条有向边可以认为是传输物质的管道,每个管道有固定的容量,可以看作是物质能够流经该管道的最大速度。顶点是管道之间的交叉连接点,除了汇点之外,物质只流经这些点,不会再顶点滞留或消耗。也就是说,物质进入某 阅读全文
posted @ 2012-07-14 16:06 wlu 阅读(33270) 评论(6) 推荐(9) 编辑
摘要: 最短路径算法在交通地图上,两地点之间的路径通常标有长度,我们可以用加权有向来描述地图上的交通网。加权有向图中每条路径都有一个路径权值,大小为该路径上所有边的权值之和。本节将重点讨论顶点之间最短路径问题。在实际问题中,路径权值还可以表示其它类型的开销,例如两地之间行程所需要的时间;两任务切换所需代价等。本节讨论的最短路径具有方向性,问题用图的术语描述为:给定一个起始顶点s和一个结束顶点t,在图中找出从s到t的一条最短路径。称s为路径源点,t为路径汇点。最短路径问题可以进一步分为单源最短路径和全源最短路径。l单源最短路径定义为,给定起始顶点s,找出从s到图中其它各顶点的最短路径。求解单源最短路径的 阅读全文
posted @ 2012-07-14 15:27 wlu 阅读(18856) 评论(2) 推荐(2) 编辑
摘要: 连通区域标记算法 二值图像的连通区域标记过程:从仅由”1”像素(前景点)和”0”像素(背景点)组成的一幅点阵图像中,将相互邻接的”1”值像素组合成区域,并用边界信息来描述每个连通区域。传统的连通区域标记方法通常要对二值图像执行两次扫描。第一次扫描通过逐行逐列扫描像素。判断像素之间的相邻关系,对属于同一连通区域的像素赋予相同的连通标号,实现连通标识。这种逐行逐列的次序扫描的结果,通常会产生同一像素点被重复标记的现象,同一连通区域的不同子区域被赋予了不同的标记号。因此,需要执行第二次扫描来消除重复的标记,合并属于同一连通区域但是具有不同标记号的子区域。传统方法的效率比较低,尤其是在重复性标记发生率 阅读全文
posted @ 2012-07-14 14:33 wlu 阅读(8326) 评论(0) 推荐(0) 编辑
摘要: 最小支撑树树前几节中介绍的算法都是针对无权图的,本节将介绍带权图的最小支撑树(minimumspanningtree)算法。给定一个无向图G,并且它的每条边均权值,则MST是一个包括G的所有顶点及边的子集的图,这个子集保证图是连通的,并且子集中所有边的权值之和为所有子集中最小的。本节中介绍三种算法求解图的最小生成树:Prim算法、Kruskal算法和Boruvka算法。其中Prim算法将介绍两种实现方法,一种是普通的贪心算法;而第二种算法是借助最大堆的贪心算法,其性能更高。Prim算法的思路是从任意一个顶点开始,逐步向已形成的MST子树中增加权值最小的边从而最终形成MST。Kruskal算法和 阅读全文
posted @ 2012-07-14 14:11 wlu 阅读(9816) 评论(0) 推荐(4) 编辑
摘要: 强连通分支算法本节内容将详细讨论有向图的强连通分支算法(stronglyconnectedcomponent),该算法是图深度优先搜索算法的另一重要应用。强分支算法可以将一个大图分解成多个连通分支,某些有向图算法可以分别在各个联通分支上独立运行,最后再根据分支之间的关系将所有的解组合起来。在无向图中,如果顶点s到t有一条路径,则可以知道从t到s也有一条路径;在有向无环图中个,如果顶点s到t有一条有向路径,则可以知道从t到s必定没有一条有向路径;对于一般有向图,如果顶点s到t有一条有向路径,但是无法确定从t到s是否有一条有向路径。可以借助强连通分支来研究一般有向图中顶点之间的互达性。有向图G=( 阅读全文
posted @ 2012-07-14 12:03 wlu 阅读(23923) 评论(2) 推荐(3) 编辑
摘要: 拓扑排序在许多应用中,有向无回路图可用于抽象具有发生先后顺序的事件,图的搜索算法可以用于解决具有先决条件的问题。假设我们要安排一系列任务,但是只有在某个任务的先决条件具备时才能着手完成这个任务。我们希望以某种先后顺序组织这些任务,以便每项任务都是在先决条件已完成的前提下逐个完成。因为任务之间存在先决条件限制,也就是顶点之间存在方向性,所以这一类问题可以用有向无环图(DAG)来描述。如图给出一个学科学习的例子,其中必须先学完某些功课才能学习其它功课,当然也有一些比较独立的功课,例如体育课。图中有向边(u,v)表示功课u必须在功课v之前学习。所以该图的拓扑排序将可以给出一个功课学习的先后顺序。图功 阅读全文
posted @ 2012-07-14 11:35 wlu 阅读(1099) 评论(0) 推荐(0) 编辑
摘要: 图的广度优先搜索图的的搜索算法主要分为广度优先搜索(breadth-firstsearch或BFS)和深度优先搜索(depth-firstsearch或DFS)。首先讨论广度优先搜索算法。称之为广度优先,是因为算法始终首先发现距离起始顶点较近的顶点,然后才发现较远的顶点。假设搜索的出发顶点为s,则首先搜索与s直接相邻的顶点,然后再搜索这些相邻顶点的相邻顶点。在搜索过程中可以记录每个顶点到起始顶点s的距离。这种搜索算法能生成一棵以s为根、包括所有s可达的顶点的广度优先搜索树(BFS树)。图中各顶点的访问次序对应于广度优先搜索树中各节点由顶至底的层次。在这里我们设计算法跟踪图中各个顶点的访问次序, 阅读全文
posted @ 2012-07-14 11:25 wlu 阅读(17663) 评论(0) 推荐(2) 编辑