图相关
baother0
这个作者很懒,什么都没留下…
展开
-
关键路径
#include "stdio.h"#include "string.h"#define VERTEX_NUMBER (30+3) //顶点的最大数量int matrix[VERTEX_NUMBER][VERTEX_NUMBER];//邻接矩阵int indegree[VERTEX_NUMBER];//各个顶点的入度int stack[VERTEX_NUMBER];//栈in原创 2013-08-08 21:28:24 · 731 阅读 · 0 评论 -
有向图或者无向图是否存在环
//判断有向图中是否存在环#include "stdio.h"#include "string.h"#define VERTEX_NUM 30//用来记录深度优先生成树的生成过程int tree[VERTEX_NUM];int matrix[VERTEX_NUM][VERTEX_NUM];int visited[VERTEX_NUM];int has_circle (int n原创 2013-07-25 18:48:37 · 1231 阅读 · 0 评论 -
关节点(atriculation point)算法
//求关节点(atriculation point)算法/** *某个顶点A时关节点必须满足下列条件之一 *1:A的是深度优先生成树的根,并且A子树的个数大于等于2。 *2:A不是深度优先生成树的根和叶子节点,并且A的子树根以及子树根的儿孙都没有指向A祖先的回边(回边就是在图中但不在生成树中的边)。 *//* *算法思想 *1:在深度优先遍历过程中,记录下每棵顶点访问的次序,在单原创 2013-06-20 23:01:07 · 2247 阅读 · 0 评论 -
Topological Sort
#include "stdio.h" #include "string.h"#define VERTEX_NUM 30int matrix[VERTEX_NUM][VERTEX_NUM];//邻接矩阵int indegree[VERTEX_NUM];//记录每个顶点的入度int topological_sort (int n) {//n顶点的个数 int stack[VERTEX_N原创 2013-07-28 01:24:32 · 863 阅读 · 0 评论 -
深度优先遍历
//深度优先遍历(depth_first_search)#include "stdio.h"#include "string.h"#include "stdlib.h"#define MAX_VERTEX_NUM 20//最大的顶点数 //边结点typedef struct Edge { struct Edge *next;//指向下一个边的指针 int in原创 2013-06-12 20:54:31 · 879 阅读 · 0 评论 -
无向图的连通分量和生成树
//名词解释://一个连通图(对于无向图)的生成树是一个极小的连通子图,它含有途中所有的顶点,但只有足以构成一个树的n-1条边。//下面的程序为通过DFS深度优先遍历一个非连通图(会生成>1的生成树,用孩子兄弟链作为生成森林的存储结构)。#include "stdio.h"#include "string.h"#include "stdlib.h"#define MAX_VER原创 2013-06-12 21:12:47 · 3956 阅读 · 1 评论 -
最小生成树----Prim算法
prim算法是利用最小生产树的MST性质来一点一点的构造最小生成树的。假设N={V,{E}}是一个带权值的无向图(即为一个网),U是顶点集V的一个非空子集, 若(u,v)是一个具有最小权值的边,其中u属于U,v属于V-U,则必然存在一个包含(u,v)边的最小生成树。关于MST的证明:点击打开链接prim算法分析:(使用邻接矩阵来存储网)1:要知道T1顶点集合连接到T2原创 2013-06-14 15:49:31 · 1011 阅读 · 0 评论 -
Kruskal算法
下面例子使用的图。/* *克鲁斯卡尔算法 *步骤 1:给所有的边按照权值从小到大排列。 2:情况1:u和v在同一个连通分量中,那么加入(u,v)之后就会形成环了,因此不能选择。 情况2:u和v不同一个连通分量中,那个加入一定是最优的。 原因是:用反证法 如果不加这条边能得到一个最优解T,则T + (u,v)一定有且只有一个环,而且环中至少有一条边 (u',v')的权值大于或者原创 2013-06-15 00:35:57 · 843 阅读 · 0 评论 -
Sorting It All Out
Sorting It All Out DescriptionAn ascending sorted sequence of distinct values is one in which some form of a less-than operator is used to order the elements from smallest to largest. For example原创 2013-07-28 10:47:00 · 755 阅读 · 0 评论 -
Dijkstra(迪杰斯特拉)算法
//Dijkstra(迪杰斯特拉)/** *求某个顶点到其它各顶点的最短路径 *按照路径长度递增的次序产生最短路径的算法,可以看成是一种特殊的广度优先遍历。 *//** *步骤:1:初始化使用邻接矩阵matrix来表示有向图,如果不存在,则置其matrix[i][j]为INF,在计算机中可以使用最大值代替。S为已经找到的最短路径终点的集合,它的初始状态为空集。从v0到其余各原创 2013-09-26 21:53:55 · 911 阅读 · 0 评论