上一页 1 ··· 4 5 6 7 8 9 10 11 下一页
摘要: 连通区域标记算法 二值图像的连通区域标记过程:从仅由”1”像素(前景点)和”0”像素(背景点)组成的一幅点阵图像中,将相互邻接的”1”值像素组合成区域,并用边界信息来描述每个连通区域。传统的连通区域标记方法通常要对二值图像执行两次扫描。第一次扫描通过逐行逐列扫描像素。判断像素之间的相邻关系,对属于同一连通区域的像素赋予相同的连通标号,实现连通标识。这种逐行逐列的次序扫描的结果,通常会产生同一像素点被重复标记的现象,同一连通区域的不同子区域被赋予了不同的标记号。因此,需要执行第二次扫描来消除重复的标记,合并属于同一连通区域但是具有不同标记号的子区域。传统方法的效率比较低,尤其是在重复性标记发生率 阅读全文
posted @ 2012-07-14 14:33 wlu 阅读(8514) 评论(0) 推荐(0)
摘要: 最小支撑树树前几节中介绍的算法都是针对无权图的,本节将介绍带权图的最小支撑树(minimumspanningtree)算法。给定一个无向图G,并且它的每条边均权值,则MST是一个包括G的所有顶点及边的子集的图,这个子集保证图是连通的,并且子集中所有边的权值之和为所有子集中最小的。本节中介绍三种算法求解图的最小生成树:Prim算法、Kruskal算法和Boruvka算法。其中Prim算法将介绍两种实现方法,一种是普通的贪心算法;而第二种算法是借助最大堆的贪心算法,其性能更高。Prim算法的思路是从任意一个顶点开始,逐步向已形成的MST子树中增加权值最小的边从而最终形成MST。Kruskal算法和 阅读全文
posted @ 2012-07-14 14:11 wlu 阅读(10006) 评论(0) 推荐(4)
摘要: 强连通分支算法本节内容将详细讨论有向图的强连通分支算法(stronglyconnectedcomponent),该算法是图深度优先搜索算法的另一重要应用。强分支算法可以将一个大图分解成多个连通分支,某些有向图算法可以分别在各个联通分支上独立运行,最后再根据分支之间的关系将所有的解组合起来。在无向图中,如果顶点s到t有一条路径,则可以知道从t到s也有一条路径;在有向无环图中个,如果顶点s到t有一条有向路径,则可以知道从t到s必定没有一条有向路径;对于一般有向图,如果顶点s到t有一条有向路径,但是无法确定从t到s是否有一条有向路径。可以借助强连通分支来研究一般有向图中顶点之间的互达性。有向图G=( 阅读全文
posted @ 2012-07-14 12:03 wlu 阅读(24806) 评论(2) 推荐(3)
摘要: 拓扑排序在许多应用中,有向无回路图可用于抽象具有发生先后顺序的事件,图的搜索算法可以用于解决具有先决条件的问题。假设我们要安排一系列任务,但是只有在某个任务的先决条件具备时才能着手完成这个任务。我们希望以某种先后顺序组织这些任务,以便每项任务都是在先决条件已完成的前提下逐个完成。因为任务之间存在先决条件限制,也就是顶点之间存在方向性,所以这一类问题可以用有向无环图(DAG)来描述。如图给出一个学科学习的例子,其中必须先学完某些功课才能学习其它功课,当然也有一些比较独立的功课,例如体育课。图中有向边(u,v)表示功课u必须在功课v之前学习。所以该图的拓扑排序将可以给出一个功课学习的先后顺序。图功 阅读全文
posted @ 2012-07-14 11:35 wlu 阅读(1119) 评论(0) 推荐(0)
摘要: 图的广度优先搜索图的的搜索算法主要分为广度优先搜索(breadth-firstsearch或BFS)和深度优先搜索(depth-firstsearch或DFS)。首先讨论广度优先搜索算法。称之为广度优先,是因为算法始终首先发现距离起始顶点较近的顶点,然后才发现较远的顶点。假设搜索的出发顶点为s,则首先搜索与s直接相邻的顶点,然后再搜索这些相邻顶点的相邻顶点。在搜索过程中可以记录每个顶点到起始顶点s的距离。这种搜索算法能生成一棵以s为根、包括所有s可达的顶点的广度优先搜索树(BFS树)。图中各顶点的访问次序对应于广度优先搜索树中各节点由顶至底的层次。在这里我们设计算法跟踪图中各个顶点的访问次序, 阅读全文
posted @ 2012-07-14 11:25 wlu 阅读(17832) 评论(0) 推荐(2)
摘要: 本章开始介绍图数据结构和相关的算法。一个图有两个部分组成,跟前面介绍的树结构一样,一部分是节点,在图的术语中也称为顶点(vertex),我们将统一称之为顶点;另一部分是顶点的链接,称为边(edge)。顶点和边之间有着紧密的联系,通常图的任意一对顶点之间都允许有一条边。前几章介绍的链表和树都可以看作是结构首先的图,从这个意义上讲,图是最基本的数据结构。图结构本广泛应用与实际问题的描述和求解,以下几个例子:1.地图的坐标点和坐标点之间的连接及距离,求解坐标点之间的最右路径;2.交通网络流问题;3.通信网络路由算法…………本章将给出以上问题的相关抽象模型和问题的求解算法。包括:术语及描述 .术语及描 阅读全文
posted @ 2012-07-14 11:05 wlu 阅读(902) 评论(0) 推荐(0)
摘要: 二叉树前序遍历(递归及递推算法)后续遍历(递归及递推算法)中序遍历(递归及递推算法)层序遍历霍夫曼编码深入研究 上面两节内容中,我们讨论了广义树的两种实现方法,及“子节点表”和“最左子节点/右兄弟节点”法。这两种方法所实现的树是多叉树,适用于描述任意的树形结构。本节内容中我们将讨论一种特殊的树,即二叉树。与广义树相比,二叉树具有特定的结构,包括内外节点个数的关系、节点数与树的高度的关系等。本节将着重讨论二叉树的各种遍历算法,包括前序、中序、后序和层序遍历算法。最后,本章将研究一种在信息技术中广泛应用的一种特殊的二叉树,即Huffman树。二叉树的数学性质在讨论二叉树的各种算法之前,我们先详细讨 阅读全文
posted @ 2012-07-14 01:02 wlu 阅读(1974) 评论(0) 推荐(0)
摘要: 树广义树概念子节点表描述方法树的“左子节点/右兄弟节点”描述方法 本章将扩展前几章的内容,讨论一种较为复杂的数据结构,即树(tree)结构。前面所讨论的线性表、堆栈等数据结构中,跟每个节点相连的节点的个数都是有限的。本章讨论的树结构中,节点可以有任意数目的子节点。这是的数在实际应用中具有更大的作用,但其结构更复杂。树的定义 一棵树T是由一个或一个以上节点组成的有限集合,其中节点有分为根节点、叶节点和中间节点。树具有层结构,根节点(R)之外的节点集合{T-R},可以划分为一些不相交子集{T1,…,Tn}。这些子集又可以分别构成子树,并拥有相应的根节点。一般将位于根节点左边的子节点称作左子节点,位 阅读全文
posted @ 2012-07-14 00:04 wlu 阅读(631) 评论(0) 推荐(0)
摘要: 堆堆的概念 堆上的算法堆的打印CPU优先级抢占模型 堆是一种数组对象,与之前几章所讨论的内容稍有不同的是,堆中的元素项具有特殊的顺序结构。在本书后面将介绍树数据结构,事实上堆属于一种特殊的树,即完全二叉树。完全二叉树中除了最后一层之外树的每一层都填满。之所以将堆数据结构提前介绍,一方面是因为堆也是一种基本的数据结构。另一方面,堆的一个重要功能是能实现优先队列。上一章中我们刚讨论过队列,所以紧接着在这一章介绍堆以及利用堆实现优先队列。堆的概念假设r[0],r[1],…,r[n-1]是一序列元素,可以看作是数组结构。如果对于任意r[i],同时满足条件r[i]≥r[2*i+1]和r[i]≥r[2*i 阅读全文
posted @ 2012-07-13 23:47 wlu 阅读(560) 评论(0) 推荐(0)
摘要: 队列顺序队列生产者消费者模型 链式队列 队列(queue)跟上一章中介绍的栈数据结构一样,也是一种操作受限的线性表。栈的操作受限表现在插入和删除只能对栈顶元素进行,删除的元素永远是最新插入的,即操作遵循后入先出(LIFO)原则。这一章将讨论的队列中的操作原则与栈的相反。删除的元素是最早插入到队列中的,就像排队一样,排在最前面的人将最先从队伍中出列。这样的操作原则常常称作先入先出(FIFO,FirstInFirstOut)。由于队列结构和栈结构具有相反的操作原则,我们在的设计队列是将在栈的设计结构的基础上做一定的“反向”调整。本章同样首先介绍队列的ADT,然后介绍两种队列的实现方式:顺序队列和链 阅读全文
posted @ 2012-07-13 23:17 wlu 阅读(1064) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8 9 10 11 下一页