摘要: 带权图分为有向和无向,无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法;有向图的最短路径算法有dijkstra算法和floyd算法。 生成树的概念:联通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树 生成树是联通图的极小连通子图。所谓极小是指:若在树中任意增加一条边,则 将出现一个回路;若去掉一条边,将会使之编程非连通图。生成树各边的权 值总和称为生成素的权。权最小的生成树称为最小生成树,常用的算法有prime算法和kruskal算法。 最短路径问题旨在寻找图中两节点之间的最短路径,常用的算法有:floyd算法和dijkstra算法。 构造... 阅读全文
posted @ 2012-03-26 22:30 爱也玲珑 阅读(57040) 评论(5) 推荐(12) 编辑
摘要: 并查集:(union-find sets)是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。最完美的应用当属:实现Kruskal算法求最小生成树。并查集的精髓:1、make_set(x) 把每一个元素初始化为一个集合初始化后每一个元素的父亲节点是它本身,每一个元素的祖先节点也是它本身(也可以根据情况而变)。2、find_set(x) 查找一个元素所在的集合(有两种方法:朴素查找和采用路径压缩的方法查找,其中路径压缩有递归和非递归)查找一个元素所在的集合,其精髓是找到这个元素所在集合的祖先!这个才是并查集判断和合并的最终依据。判断两个元素是否 阅读全文
posted @ 2012-03-26 19:55 爱也玲珑 阅读(367) 评论(0) 推荐(0) 编辑
摘要: #include<iostream>using namespace std;struct node { int num; int val; struct node *next; };struct gpnode{ int data; struct node *link; };//由键盘输入生成图邻接表 struct gpnode *create_Link_GP(int n) //n是图中节点个数 { int seq, v; struct node *p; struct gpnode *gp = (struct gpnode *)mall... 阅读全文
posted @ 2012-03-26 11:21 爱也玲珑 阅读(614) 评论(0) 推荐(0) 编辑
摘要: STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用。下面,我们就浅谈某些常用的容器。这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点。STL中的常用容器包括:顺序性容器(vector、deque、list)、关联容器(map、set)、容器适配器(queue、stac)。1、顺序性容器(1)vector vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问。由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢。vector有多个构造函数,默认的构造函数是构造一个初始长度为0的内存空间,且分配的内存空间是以2. 阅读全文
posted @ 2012-03-26 09:54 爱也玲珑 阅读(358) 评论(0) 推荐(0) 编辑