阿牧路泽

哪有那么多坚强,无非是死扛罢了
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

随笔分类 -  数据结构

1

摘要:一、普里姆算法介绍 普里姆(Prim)算法,是用来求加权连通图的最小生成树的算法。 基本思想 对于图G而言,V是所有顶点的集合;现在,设置两个新的集合U和T,其中U用于存放G的最小生成树中的顶点,T存放G的最小生成树中的边。 从所有uЄU,vЄ(V-U) (V-U表示出去U的所有顶点)的边中选取权值 阅读全文

posted @ 2018-10-14 22:36 阿牧路泽 阅读(962) 评论(0) 推荐(0)

摘要:一、最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树。 例如,对于如上图G4所示的连通网可以有多棵权值总和不相同的生成树。 二、克鲁斯卡尔算法介绍 克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的 阅读全文

posted @ 2018-10-14 22:35 阿牧路泽 阅读(371) 评论(0) 推荐(0)

摘要:一、拓扑排序介绍 拓扑排序(Topological Order)是指,将一个有向无环图(Directed Acyclic Graph简称DAG)进行排序进而得到一个有序的线性序列。 这样说,可能理解起来比较抽象。下面通过简单的例子进行说明! 例如,一个项目包括A、B、C、D四个子部分来完成,并且A依 阅读全文

posted @ 2018-10-14 22:34 阿牧路泽 阅读(368) 评论(0) 推荐(0)

摘要:一、深度优先搜索的图文介绍 1. 深度优先搜索介绍 图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径 阅读全文

posted @ 2018-10-14 22:33 阿牧路泽 阅读(480) 评论(0) 推荐(0)

摘要:一、邻接矩阵有向图的介绍 邻接矩阵有向图是指通过邻接矩阵表示的有向图。 上面的图G2包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"<A,B>,<B,C>,<B,E>,<B,F>,<C,E>,<D,C>,<E,B>,<E,D>,<F,G>"共9条边。 上图右边的矩阵是G2在内存中的邻接矩 阅读全文

posted @ 2018-10-14 22:32 阿牧路泽 阅读(2266) 评论(0) 推荐(0)

摘要:一、邻接矩阵无向图的介绍 邻接矩阵无向图是指通过邻接矩阵表示的无向图。 上面的图G1包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"(A,C),(A,D),(A,F),(B,C),(C,D),(E,G),(F,G)"共7条边。由于这是无向图,所以边(A,C)和边(C,A)是同一条边;这里 阅读全文

posted @ 2018-10-14 22:31 阿牧路泽 阅读(2188) 评论(0) 推荐(0)

摘要:一、图的基本概念 1. 图的定义 定义:图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常被成为"顶点(vertex)",而点与点之间的连线则被成为"边或弧"(edege)。通常记为,G=(V,E)。 2. 图的种类 根据边是否有方向,将图可以划分为:无向 阅读全文

posted @ 2018-10-14 22:29 阿牧路泽 阅读(180) 评论(0) 推荐(0)

摘要:一、斐波那契堆的介绍 斐波那契堆(Fibonacci heap)是堆中一种,它和二项堆一样,也是一种可合并堆;可用于实现合并优先队列。斐波那契堆比二项堆具有更好的平摊分析性能,它的合并操作的时间复杂度是O(1)。与二项堆一样,它也是由一组堆最小有序树组成,并且是一种可合并堆。与二项堆不同的是,斐波那 阅读全文

posted @ 2018-10-14 22:22 阿牧路泽 阅读(527) 评论(0) 推荐(0)

摘要:一、二项树的介绍 二项树的定义 二项堆是二项树的集合。在了解二项堆之前,先对二项树进行介绍。 二项树是一种递归定义的有序树。它的递归定义如下: (1) 二项树B0只有一个结点; (2) 二项树Bk由两棵二项树B(k-1)组成的,其中一棵树是另一棵树根的最左孩子。 如下图所示: 上图的B0、B1、B2 阅读全文

posted @ 2018-10-14 22:15 阿牧路泽 阅读(181) 评论(0) 推荐(0)

摘要:一、斜堆的介绍 斜堆(Skew heap)也叫自适应堆(self-adjusting heap),它是左倾堆的一个变种。和左倾堆一样,它通常也用于实现优先队列。它的合并操作的时间复杂度也是O(lg n)。 相比于左倾堆,斜堆的节点没有"零距离"这个属性。除此之外,它们斜堆的合并操作也不同。斜堆的合并 阅读全文

posted @ 2018-10-14 14:01 阿牧路泽 阅读(251) 评论(0) 推荐(0)

摘要:一、左倾堆的介绍 左倾堆(leftist tree 或 leftist heap),又被成为左偏树、左偏堆,最左堆等。它和二叉堆一样,都是优先队列实现方式。当优先队列中涉及到"对两个优先队列进行合并"的问题时,二叉堆的效率就无法令人满意了,而本文介绍的左倾堆,则可以很好地解决这类问题。 左倾堆的定义 阅读全文

posted @ 2018-10-14 13:51 阿牧路泽 阅读(263) 评论(0) 推荐(0)

摘要:一、堆和二叉堆的介绍 堆的定义 堆(heap),这里所说的堆是数据结构中的堆,而不是内存模型中的堆。堆通常是一个可以被看做一棵树,它满足下列性质: [性质一] 堆中任意节点的值总是不大于(不小于)其子节点的值; [性质二] 堆总是一棵完全树。将任意节点不大于其子节点的堆叫做最小堆或小根堆,而将任意节 阅读全文

posted @ 2018-10-14 13:41 阿牧路泽 阅读(222) 评论(0) 推荐(0)

摘要:一、伸展树的介绍 伸展树(Splay Tree)是一种二叉排序树,它能在O(log n)内完成插入、查找和删除操作。它由Daniel Sleator和Robert Tarjan创造。 (1) 伸展树属于二叉查找树,即它具有和二叉查找树一样的性质:假设x为树中的任意一个结点,x节点包含关键字key,节 阅读全文

posted @ 2018-10-14 13:33 阿牧路泽 阅读(237) 评论(0) 推荐(0)

摘要:一、哈夫曼树的介绍 Huffman Tree,中文名是哈夫曼树或霍夫曼树,它是最优二叉树。 定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若树的带权路径长度达到最小,则这棵树被称为哈夫曼树。 (1) 路径和路径长度 定义:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。 阅读全文

posted @ 2018-10-12 15:55 阿牧路泽 阅读(479) 评论(0) 推荐(0)

摘要:一、R-B Tree简介 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。即:红黑树的每个节点上的属性除了有一个key、3个指针:parent、lchild、rchild 阅读全文

posted @ 2018-10-12 15:47 阿牧路泽 阅读(236) 评论(0) 推荐(0)

摘要:一、AVL树的介绍 AVL树是高度平衡的而二叉树。 它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 二、AVL树的C++实现 1. 节点 1.1 AVL树节点 AVLTreeNode是AVL树的节点类,它包括的几个组成对象: (1) key -- 是关键字,是用来对AVL树的节点进行排 阅读全文

posted @ 2018-10-12 15:32 阿牧路泽 阅读(525) 评论(0) 推荐(0)

摘要:一、树的介绍 1. 树的定义 树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。 把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: (1) 每个节点有零个或多个子节点; (2) 没有父节点的节点称为根节点; (3) 每一个非根节 阅读全文

posted @ 2018-10-12 14:48 阿牧路泽 阅读(946) 评论(0) 推荐(0)

摘要:一、栈的介绍 栈(stack),是一种线性存储结构,它有以下几个特点: (1) 栈中数据是按照"后进先出(LIFO, Last In First Out)"方式进出栈的。 (2) 向栈中添加/删除数据时,只能从栈顶进行操作。 栈通常包括的三种操作:push、peek、pop。 push -- 向栈中 阅读全文

posted @ 2018-10-12 14:27 阿牧路泽 阅读(299) 评论(0) 推荐(0)

摘要:概要 线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列。线性表的几个基本组成部分:数组、单向链表、双向链表。 一、数组 数组有上界和下界,数组的元素在上下界内是连续的。 数组的特点是:数据是连续的;随机访问速度快。 数组中稍微复杂一点的是多维数组和动态数组。 二、单向链表 阅读全文

posted @ 2018-03-26 20:10 阿牧路泽 阅读(199) 评论(0) 推荐(0)

摘要:一、数据结构概述 程序 = 数据结构 + 算法 数据结构就是程序中,数据元素相互之间存在的一种或多种特定关系的集合。 1、数据结构包括逻辑结构和物理结构 逻辑结构:指数据对象中数据元素之间的相互关系。 物理结构:指逻辑结构在计算机中的存储形式 2、四大逻辑结构: 1、集合结构:集合结构中的数据元素除 阅读全文

posted @ 2018-03-26 15:24 阿牧路泽 阅读(119) 评论(0) 推荐(0)

1