
图论
文章平均质量分 76
Grady_Ne
这个作者很懒,什么都没留下…
展开
-
边上权值为任意值的单源最短路径问题——Bellman--Ford算法
Dijkstra算法的局限性:不能处理权值为负值的情形,Dijkstra算法在利用顶点u的dist[ ]值递推各顶点的dist[ ]值时,前提是顶点u的dist[ ]值是当前最短路径长度最小的,如果图中所有边的权值都是正的,这样推导没有问题,但如果有负权值的边,这样推导就不正确。Bellman-Ford算法思想:dist[]算法说明:dist(1)[u]:从源点v0到终点u...原创 2017-02-04 16:21:14 · 1295 阅读 · 0 评论 -
并查集
并查集主要用来解决判断两个元素是否同属一个集合,以及把两个集合合并成一个集合的问题。具体实现:分为搜索和合并两个运算。为了方便并查集的描述与实现,通常把先后加入到一个集合中的元素表示成一个树结构,并用根节点的序号来代表这个集合。因此定义一个parent[n]的数组,parent[i]中存放的是结点i所在的树中结点i父亲结点的序号。约定:如果结点i的父结点是负数,则表示i就是所在集合的根节点...原创 2017-02-16 21:57:35 · 925 阅读 · 0 评论 -
所有顶点之间的最短路径——Floyd算法
Floyd算法原创 2017-02-05 22:58:15 · 2184 阅读 · 0 评论 -
Bell-Ford 算法的改进--SPFA算法
Bellman—Ford算法的时间复杂度比较高,原因在于Bellman—Ford算法要递推n次,每次递推,扫描所有的边,在递推n次的过程中很多判断是多余的,SPFA算法是Bellman—Ford算法的一种队列实现,减少了不必要的冗余判断。大致流程:用一个队列来进行维护。初始时将源点加入队列。每次从队列中取出一个顶点,并与所有与它相邻的顶点进行松弛,若某个相邻的顶点松弛成功,则将其入队。重复这样...原创 2017-02-05 21:30:06 · 1180 阅读 · 0 评论 -
图的存储表示——邻接矩阵
邻接矩阵存储图原创 2017-04-14 21:04:30 · 887 阅读 · 0 评论 -
广度优先搜索——BFS遍历
广度优先搜索(Breadth First Search , BFS)是一个分层搜索的过程,没有回退过程,是非递归的。原创 2017-02-12 20:53:44 · 654 阅读 · 0 评论 -
深度优先搜索——DFS遍历
深度优先搜索是一个递归过程,有回退过程。每个顶点的访问次序称为顶点的深度优先数。访问n个顶点时经过的n-1条边,这n-1条边将n个顶点连接成一棵树,称此图为原图的深度优先生成树,该树的根结点是深度优先搜索的起始顶点。例题1:骨头的诱惑题目描述:迷宫是一个N*M的长方形,迷宫有一个门,刚开始门是关着的,这个门会在第T秒钟开启,门只会开启很短的时间(少于一秒),因此小狗必须恰好在第T秒到达门的...原创 2017-02-06 20:18:21 · 966 阅读 · 0 评论 -
边上值非负的单源最短路径问题----Dijkstra算法
问题提出:给定一个带权的有向图(即有向网)G和源点v0,求v0到G中其他每个顶点的最短路径。限定各边上的权值大于0.算法实现:按路径长度递增的顺序,逐步产生最短路径的算法,即首先求出长度最短的一条最短路径,再参照它求出长度次短的一条最短路径,依次类推,直到从源点v0到其他各顶点的最短路径全部求出为止。dijkstra具体实现方法如下:1.设置两个顶点的集合T和S。(1).S...原创 2017-01-19 17:27:42 · 617 阅读 · 0 评论 -
Prim()算法例题
Prim()算法例题原创 2017-02-18 14:53:43 · 1406 阅读 · 0 评论 -
最小生成树——普里姆(Prim)算法
Prim算法的基本思想是以顶点为主导地位;从起始顶点出发,通过选择当前可用的最小权值的边把其他顶点加入到生成树中来。设连通无向网为G(V,E),在普里姆算法中,将顶点集合V分成两个子集T和T'.(1)T:当前生成树顶点集合。(2)T':不属于当前生成树的顶点集合具体实现过程如下:(1)从连通无向网中选择一个起始顶点u0,首先将它加入到集合T中;然后选择与u0关联的,具有最小权值的边(u...原创 2017-02-17 22:25:54 · 1222 阅读 · 0 评论 -
Kruskal算法例题
Kruskal算法简单例题原创 2017-02-16 23:16:17 · 1389 阅读 · 0 评论 -
活动网络——AOE网络
AOE网络 关键路径原创 2017-02-16 17:42:45 · 1316 阅读 · 0 评论 -
活动网络——AOV网络
AOV网络原创 2017-02-16 14:39:59 · 1278 阅读 · 0 评论 -
邻接表
邻接表存储图原创 2017-02-04 17:25:06 · 1299 阅读 · 0 评论 -
最小生成树——克鲁斯卡尔(Kruskal)算法
Kruskal算法的基本思想是以边为主导的地位,始终都是选择当前可用的最小权值的边。具体实现如下:(1)设一个有n个顶点的连通网络G(V,E),最初先构造一个只有n个顶点,没有边的非连通图T={V,Ø},图中每个顶点自成一个连通分量。(2)当在E中选择一条具有最小权值的边时,若该边的两个顶点落在不同的连通分量上,则将此边加入T中。否则,即这两条边落在同一连通分量上,则将此边舍弃(以后永不再...原创 2017-02-16 21:44:37 · 845 阅读 · 0 评论