图
文章平均质量分 78
随心而动随意而行
time waits no man
展开
-
图的创建(邻接表)
转换成链表特点:可以直接查找一个节点的所有出度,但是想要知道一个几点的入度必须遍历整个图的存储结构.#include using namespace std;typedef char VextexType;typedef int EdgeType;#define VexNum 5struct EdgeNode;struct Edge原创 2014-02-08 08:43:31 · 1133 阅读 · 0 评论 -
单源最短路径
Dijkstra算法: Dijkstra算法可以将所有顶点分成三个集合,源点集合{A},已经计算出最短路径的顶点集合U,和未计算出最短路径的顶点集合.1.初始状态时候,集合U为空,集合T等于V-{A},并初始化设置集合T中顶点的当前最短路径.2.选取集合T中路径长度最短的元素加入到集合U中.3.更新集合T中的元素对应的当前最短距离.此时集合T中的元素对应的路径,总是源原创 2014-02-08 08:57:13 · 698 阅读 · 0 评论 -
图的创建(十字链表)
十字链表方式存储图:十字链表的节点结构:节点+前驱节点链表+后继节点链表十字链表的边结构:头节点+尾节点+尾节点的前驱节点链表+头节点的后继节点链表. 对于如下图结构:转换为十字链表: 十字链表和链表存储图的比较:1.存储空间上十字链表比链表要多.2.从效率上,十字链表可以直接查询节点的前驱和后继节点.典型的以空间换时间原创 2014-02-08 08:48:44 · 4195 阅读 · 1 评论 -
图的广度和深度优先遍历
#include #include using namespace std;typedef char VextexType;typedef int EdgeType;#define VexNum 5struct EdgeNode;struct EdgeNode { VextexType HeadName; VextexType TailName; Edg原创 2014-02-08 08:50:59 · 717 阅读 · 0 评论 -
拓扑排序和关键路径
拓扑排序: 每次选择前驱节点为0的节点,然后删除以其为顶点的边,重复上述操作,直到删除所有节点为止或者所有节点都有前驱.若还有剩余节点,那么图存在环.关键路径(图中最长的路径):活动:图中的弧.事件:图中的顶点.由于活动时间长短可能不同,导致事件发生的时间可以不同,从v1到vi的最长路径长度是节点i的最早发生时间,不推迟整个工程完成的情况下,事件vi的最迟开始时原创 2014-02-08 08:59:51 · 1353 阅读 · 0 评论 -
图的最小生成树
连通分量:图的极大连通子图。最小生成树(minimumcost spanning tree即:MST): n个点,n-1条边,构成一个连通图,求其中代价最小的连通图。MST原理: 假设N={V,{E}}是一个连通图,设U是定点V的子集,设(a,b)是连通U和V-U的代价最小的边,其中a属于U,b属于V。那么定点集合V构成的最小生成树一定包含边(a,原创 2014-02-08 08:53:13 · 682 阅读 · 0 评论