摘要: 注:资料主要参考算法导论二叉树常被用作二叉查找树和二叉堆。二叉查找树是一种很特殊的二叉树,弄懂了二叉查找树,再研究二叉树也就很容易了。二叉排序树(Binary Sort Tree)又称二叉查找树。它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树无论是树还是图,我们经常需要遍历所有的结点。对于二叉树,一般都使用先序遍历、中序遍历和后序遍历这三种方式。由于二叉查找树的特性,先序跟后序没有太多的意义。INORDER-TREE-WALK ( 阅读全文
posted @ 2012-01-05 15:13 SadGeminids 阅读(827) 评论(0) 推荐(0) 编辑
摘要: 在图的应用中,有一个很重要的需求:我们需要知道从某一个点开始,到其他所有点的最短路径。这其中,Dijkstra算法是典型的最短路径算法。它的关键思想是以起始点为中心,向外一层层扩散,直到扩展到终点为止。Dijkstra算法能够得出最短路径的最优解,不过它需要遍历计算的节点相当多,所以效率不高。首先,用最通俗的语言解释。假定有3个顶点,A、B、C,如图:要求A到其余各点的最短路径。很明显,A到C比A到B更短。有疑惑的是从A->B的最短距离,要么是直接A->B的边,要么是A经过C到B的边更短。我们首先找到最短的边(A->C),然后在此基础上扩展,于其余边去对比找到最小值。顶点再进 阅读全文
posted @ 2011-12-29 22:12 SadGeminids 阅读(6314) 评论(0) 推荐(1) 编辑
摘要: 很抱歉,换电脑后,原文件找不到了。现在的文件已经被我改得面目全非了。所以只好从新浪博客拷贝过来,格式惨不忍睹,让我蛋疼。但我实在是懒得去调整,将就一下吧。这次发图的另一种实现,基于十字链表的c++实现。就像上一章说的,十字链表是综合了邻接表和逆邻接表的构成,所以,代码需要修改的地方并不是很多。重要的是,修改算法的实现以提高效率。代码中有两种搜索顶点的实现方式。一种是最原始的,另一种是排序后使用2分搜索。数据量巨大的时候,使用后一种能节省大量的时间。整个过程中有几个比较需要注意的地方:1.析构函数中,顶点释放时,开始错误地先删邻接表,后删逆邻接表。程序运行完毕,调用到析构函数的时候崩掉,才反.. 阅读全文
posted @ 2011-12-23 12:13 SadGeminids 阅读(1259) 评论(0) 推荐(0) 编辑
摘要: 开始是一些关于图的基础知识,后面一部分是对于上一贴有向图基于邻接表的C++实现效率的分析。有向图: 在数学上,一个图(Graph)是表示物件与物件之间的关系的方法,是图论的基本研究对象。一个图看起来是由一些小圆点(称为顶点或结点)和连结这些圆点的直线或曲线(称为边)组成的。如果给图的每条边规定一个方向,那么得到的图称为有向图,其边也称为有向边。在有向图中,与一个节点相关联的边有出边和入边之分,而与一个有向边关联的两个点也有始点和终点之分。相反,边没有方向的图称为无向图。图又有各种变体,包括简单图/多重图;有向图/无向图等,但大体上有以下两种定义方式。二元组的定义 图G是一个二元组(V,E),. 阅读全文
posted @ 2011-11-09 19:39 SadGeminids 阅读(1591) 评论(0) 推荐(0) 编辑
摘要: 最近按BOSS要求做一个有向图,基于邻接表的实现。大部分代码还是参考网上的,然后自己修改了一些细节。参考原帖地址:http://www.cppblog.com/saha/articles/121696.html 先说优缺点吧:优点是基本功能都有了,而且还有Dijkstra算法求最短路径,使用的模板,适合各种数据;缺点是并不像他所说的那样适合大数据的图,另外就是要求一个顶点的逆邻接表(即所有以该顶点为弧头的边)时比较麻烦。 我做过测试,加入10W条边需要20+ minutes,这是个让人无法忍受的时间。大家可以自己试一下,找找到底是哪里花费了大量时间。 下一个博文分析算法效率低劣的原因... 阅读全文
posted @ 2011-11-02 20:50 SadGeminids 阅读(2349) 评论(0) 推荐(0) 编辑
摘要: 工作一年多了,不想再浑浑噩噩地度日子。对于未来的迷茫以及恐惧让我不得不面对现实,我必须去改变些什么了。 不能再像以前那样,天天玩游戏,宅着过周末。这一年的工作,其实能力提升得并不多,更多的还是思想上的转变。 现在,是该努力提升自己职业能力的时候了。近期目标是年底前好好研究数据结构和算法。 把握自己的命运! 阅读全文
posted @ 2011-11-01 22:52 SadGeminids 阅读(129) 评论(0) 推荐(0) 编辑