图
Terry_dong
我只是个搬运工
展开
-
数据结构图之四(最短路径--弗洛伊德算法)
【1】为什么需要弗洛伊德算法? 带权图中单个源点到所有顶点的最短路径问题可以用《迪杰斯特拉算法》求解。 那如果要求图中每一个顶点与其它顶点之间的最短路径呢?类似可以想到的方法为: 每次以一个顶点为源点,重复执行地杰斯特拉算法算法n次。 这样,理论上我们便可以求得每一个顶点与其它顶点的最短路径,总的执行时间为O(n3)。 好吧!为了实现这个中需求,可以采用另外一种求解算原创 2017-04-17 16:57:05 · 1257 阅读 · 1 评论 -
数据结构图之六(关键路径)
【1】关键路径 在我的经验意识深处,“关键”二字一般都是指临界点。 凡事万物都遵循一个度的问题,那么存在度就会自然有临界点。 关键路径也正是研究这个临界点的问题。 在学习关键路径前,先了解一个AOV网和AOE网的概念: 用顶点表示活动,用弧表示活动间的优先关系的有向图: 称为顶点表示活动的网(Activity On Vertex Network),简称为原创 2017-04-17 17:08:20 · 4473 阅读 · 0 评论 -
数据结构图之五(拓扑排序)
【1】拓扑排序 在一个表示工程的有向图中,有顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们称为AOV网。 AOV网中的弧表示活动之间存在的某种制约关系。 所谓拓扑排序,其实就是对一个有向图构造拓扑序列的过程。 【2】拓扑排序算法 对AOV网进行拓扑排序的基本思路: 从AOV网中选择一个入度为0的顶点输出; 然后删除此顶点,并原创 2017-04-17 17:14:38 · 784 阅读 · 0 评论 -
数据结构图之三(最小生成树--克鲁斯卡尔算法)
【1】克鲁斯卡尔算法 普里姆算法是以某顶点为起点,逐步找各顶点上最小权值的边来构建最小生成树。 克鲁斯卡尔算法是直接以边为目标去构建。 因为权值是在边上,直接去找最小权值的边来构建生成树也是很自然的想法,只不过构建时要考虑是否会形成环路而已。 此时我们用到了图的存储结构中的边集数组结构。 以下是边集数组结构的定义代码: 本算法所用同普里姆算法的实例,我们原创 2017-04-17 16:16:49 · 823 阅读 · 1 评论 -
数据结构图之二(最小生成树--普里姆算法)
【1】什么是最小生成树? 对于连通的带权图(连通网)G,其生成树也是带权的。 生成树T各边的权值总和称为该树的权。 权最小的生成树称为G的最小生成树(Minimum SpannirngTree)。简记为MST。 注意:最小是指权值最小 一个连通图的生成树是一个极小的连通子图,它包含全部的顶点,但只有足以构成一棵树的n-1条边。 求最小生成树有两种算法:普里姆算法原创 2017-04-17 16:11:59 · 10956 阅读 · 3 评论 -
数据结构图之一(基本概念,存储结构,两种遍历)
【1】图的基本概念 (1)图是由顶点集合以及顶点间的关系集合组成的一种数据结构。 Graph = (V,E) V是顶点的又穷非空集合;E是顶点之间关系的有穷集合,也叫边集合。 (2)有向图:顶点对是有序的;无向图:顶点对是无序的。 (3)无向边:若顶点Vi到Vj之间的边没有方向,则称这条边为无向边,用无序偶对(Vi,Vj)来表示。 如果图中任意两个顶点时间的原创 2017-04-17 16:07:16 · 1025 阅读 · 0 评论 -
数据结构图之四(最短路径--迪杰斯特拉算法)
【1】最短路径 最短路径?别乱想哈,其实就是字面意思,一个带边值的图中从某一个顶点到另外一个顶点的最短路径。 官方定义:对于内网图而言,最短路径是指两顶点之间经过的边上权值之和最小的路径。 并且我们称路径上的第一个顶点为源点,最后一个顶点为终点。 由于非内网图没有边上的权值,所谓的最短路径其实是指两顶点之间经过的边数最少的路径。 别废话了!整点实际的哈,你能很快计算出原创 2017-04-17 16:36:05 · 1051 阅读 · 1 评论