图论
Mr.Dimple
这个作者很懒,什么都没留下…
展开
-
动态规划——多段图问题
多段图问题多段图问题是利用动态规划思想解决的经典问题之一,在日常生活中应用广泛。问题描述若存在一个有向加权图G,且G能分出起点和终点以及中间的n的阶段,求起点到终点的最短(长)距离。分析设计通过上图我们可以很容易知道,如果用穷举的方法是没有办法求解的,问题规模实在太大,我们需要使用其他更为高效的算法:动态规划。动态规划解决该问题的主要思想:n个阶段的大问题很难求解,可以将其进行划分成...原创 2019-08-01 11:04:55 · 11987 阅读 · 0 评论 -
动态规划——最短路径问题Floyd算法
Floyd算法Floyd算法是求加权图最短路径的经典算法之一,利用了动态规划的思想解决。算法描述最短路径问题:设有一加权图G,从G中某个顶点出发达到另一个顶点,所经过边的权值之和最小的路径,被称为最短路径。Floyd算法是解决加权图(图可以是有向也可以是无向,可以存在负权)中任意两点之间的最单路径的一种算法。基本思路:通过Floyd算法计算最短路径时,图一般采用二维数组,邻接矩阵的...原创 2019-08-01 19:20:59 · 5614 阅读 · 0 评论 -
动态规划——有向加权图最长路径问题
有向加权图(DAG)最长路径问题有向加权图最长路径问题是图论中一个重要的问题,可以通过动态规划的思想进行解决。问题描述给定一个有向加权无环图G,从G中找出无入度的顶点s,求从s出发到其他顶点的最长路径。下文源代码运行结果参照此图设计分析首先,对于一般的图来说,求最长路径不像求最短路径那样简单,最长路径没有最优子结构。实际上,最长路径属于NP-hard问题。其次,图不能存在环路,如...原创 2019-08-02 10:13:51 · 11944 阅读 · 2 评论 -
贪心算法——最短路径问题Dijkstra算法
Dijkstra算法求图的最短路径问题具有很强的现实意义,在实际生活的很多方面都有应用。同时也有很多种算法解决该问题,这里我们讨论Dijkstra算法。问题描述已知加权图G=(V,E)G=(V,E)G=(V,E),求G(结点和路径组成的)中任意结点之间的最短路径。分析设计解决最短路径问题最常见的有两种算法,Floyd算法和Dijkstra算法。Floyd算法详见博客https://bl...原创 2019-08-23 23:38:34 · 19081 阅读 · 1 评论 -
回溯法——图着色问题
图着色问题“四色问题”一直是数学方面一个重要且困难的问题,直到计算机的发明才得以侧面证明,如何求一个图的着色色数,可以通过回溯法来解决。问题描述已知一个图G和m种颜色,在只准使用这m种颜色对G的结点着色的情况下,是否能使图中任何相邻的两个结点都具有不同的颜色呢?这个问题称为m-着色判定问题。可对图G着色的最小正整数m,称为图G的色数。分析设计图的表示我们采用二维数组邻接矩阵的形式存储。颜...原创 2019-08-21 15:24:17 · 2669 阅读 · 0 评论 -
贪心算法——最小生成树Prim算法
最小生成树Prim算法最小生成树(MST)是图论当中一个重要的算法,在实际生活中具有广泛的应用。有多种算法可以解决最小生成树问题,这里讲解Prim算法。问题描述在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边,而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集且为无循环图,使得的 w(T) 最小,则此 T 为 G 的最小生成树。最小生...原创 2019-08-22 16:54:53 · 3654 阅读 · 0 评论