![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图
图及其相关算法
丨惊蛰丨
这个作者很懒,什么都没留下…
展开
-
图的最短路径:Dijkstra算法与Floyd算法(Java实现)
对于网图(边有权值的图),最短路径指的是两顶点之间经过的边上权值之和最小的路径Dijkstra算法是贪心算法的一种实现,按路径长度递增的次序产生最短路径的算法基本思想将起始顶点A记录为已访问,并找到它最小权值的邻接边和对应的邻接顶点B,此时,这两个顶点间的最短路径就是这条邻接边对于下一个顶点C,判断起始顶点A与其之间的边是否比A-B-C更短,哪个更短哪个就是A到C之间的最短路径对于下一个顶点D,判断A-D、A-B-D、A-B-C-D哪个更短,哪个更短哪个就是A到D之间的最短路径重复上述操作,原创 2020-07-08 21:10:17 · 802 阅读 · 1 评论 -
图的最小生成树:Prim算法与Kruskal算法(Java实现)
最小生成树:构造连通网的最小代价生成树有Prim和Kruskal两种算法Prim算法基本思想确定一个顶点集合U和一个边集合TE,确定初始顶点并放入U中,寻找其邻接边中的最小值边,并将这条边放入TE,将连着的另一个顶点也放入U中将U中的顶点看作一个整体(看作一个顶点),寻找这个整体邻接边中的最小值边,并将这条边放入TE,将连着的另一个顶点也放入U中重复上述过程,直到U中存在该图中所有的顶点,TE就是最小生成树的各个边算法实现邻接矩阵的实现 //Prim void prim(Grap.原创 2020-07-07 20:52:47 · 665 阅读 · 1 评论 -
图的数据结构:邻接矩阵(Java实现)
图G(V,E)是由顶点的有穷非空集合和顶点之间的边的集合组成,V是图中顶点的集合,E是边的集合图最常用的两种数据结构是邻接矩阵和邻接表邻接矩阵结构用两个数组表示图,一个一维数组存储顶点信息,一个二维数组存储边的信息class Graph <T>{ public ArrayList<T> vertexes; //储存顶点 public int[][] edges; //邻接矩阵 private int numOfVertexes; .原创 2020-07-02 18:31:01 · 584 阅读 · 0 评论 -
图的遍历:深度优先遍历/搜索(DFS)与广度优先遍历/搜索(BFS)(Java实现)
深度优先遍历/搜索(DFS)基本思想对于连通图:从初始访问顶点开始,先访问第一个邻接顶点,再以这个邻接顶点为新的初始顶点,访问它的第一个邻接顶点对于非连通图:对图的连通分量分别进行深度优先遍历这种方式是优先纵向深入这是一个递归的过程算法实现邻接矩阵的实现 boolean[] isVisited ; void dfs(Graph<?> G) { //开始时所有顶点均未访问 isVisited = new boolean[G.getNumOfVertexes原创 2020-07-04 10:29:01 · 210 阅读 · 1 评论 -
图:深度优先遍历/搜索(DFS)(Java实现)
基本思想对于连通图:从初始访问顶点开始,先访问第一个邻接顶点,再以这个邻接顶点为新的初始顶点,访问它的第一个邻接顶点对于非连通图:对图的连通分量分别进行深度优先遍历这种方式是优先纵向深入这是一个递归的过程算法实现static boolean[] isVisited ; public static void dfs(Graph<?> G) { //开始时所有顶点均未访问 isVisited = new boolean[G.getNumOfVertexes()]原创 2020-07-02 11:21:28 · 210 阅读 · 0 评论