- 博客(9)
- 收藏
- 关注
原创 拓扑排序——判断有向图是否存在回路
头文件"AdjGraph.h"#include#define VISITED 1#define UNVISITED 0#define EXIST 1#define INEXIST 0using namespace std;class AdjGraph{public: int **edge; int *mark; int *indegree; int vertexNum,
2013-12-15 18:53:03 2104
原创 最短路径——Floyd
头文件"AdjGraph.h"#include#include#define INFINITY 0x3f3f3f3fusing namespace std;class AdjGraph{public: int **edge;//边的权 int **path;//path[v][u]的值表示从v到u的最短路径中,中间编号不大于vertexNum的u的前驱顶点编号 int ver
2013-12-08 16:43:25 462
原创 最短路径——Dijkstra
头文件"AdjGraph.h"#include#define INFINITY 0x3f3f3f3f#define VISITED 1#define UNVISITED 0using namespace std;class AdjGraph{public: int **edge;//邻接矩阵,值为每条边的权值 int *mark;//记录顶点是否加入V-U int *D;/
2013-12-08 10:36:00 662
转载 Prim算法与Dijkstra算法的区别
在图论中,Prim算法是计算最小生成树的算法,而Dijkstra算法是计算最短路径的算法。二者看起来比较类似,因为假设全部顶点的集合是V,已经被挑选出来的点的集合是U,那么二者都是从集合V-U中不断的挑选权值最低的点加入U,那么二者是否等价呢?也就是说是否Dijkstra也可以计算出最小生成树而Prim也可以计算出从第一个顶点v0到其他点的最短路径呢?答案是否定的,否则就不必有两个算法了。
2013-12-07 21:14:24 1213
原创 最小生成树——Kruskal
头文件"Graph.h"#include#includeusing namespace std;class Edge{public: int start; int end; int weight;};//sort() 第三个参数 从小到大排序bool cmp(const Edge & a,const Edge & b){ return a.weight<b.weight
2013-12-07 20:21:48 540
原创 最小生成树——Prim
头文件"AdjGraph.h"#include#define VISITED 1#define UNVISITED 0#define INFINITY 1000using namespace std;class AdjGraph{public: int **edge;//边,值为权值 int *low;//最小权值 int *mark;//记录结点是否被标记 int ve
2013-12-07 14:14:21 422
原创 霍夫曼编码应用--文本转换
头文件"Compressor.h"#include#include"HuffmanTree.h"#include#include#includeusing namespace std;class Compressor{public: HuffmanTree * tree; string *str;//存放每个字符对应的huffman码 int cnt[128];//每个字
2013-12-04 09:35:24 768
原创 图的邻接矩阵表示(DFS,BFS)
头文件"Graph.h"#include#include#define UNVISITED 0#define VISITED 1#define INEXIST 0#define EXIST 1using namespace std;templateclass AdjGraph{public: T *vertex;//顶点表 int **edge;//边表 int *m
2013-12-04 09:29:09 961
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人