随笔分类 -  数据结构

摘要:图的遍历 定义 遍历(Traversing Graph):从图中某点出发访问各顶点,每个顶点仅被访问一次(有且仅有一次)。 深度优先遍历(Depth First Search):也称深度优先搜索,简称DFS。从图中某个顶点v出发做深度优先搜索,访问顶点v,然后从v的未被访问的邻接顶点出发做深度优先搜 阅读全文
posted @ 2021-06-19 19:30 kokiafan 阅读(569) 评论(0) 推荐(0)
摘要:引入 拓扑排序主要是为解决一个工程能否顺序进行的问题,但有时还需要解决工程完成需要的最短时间问题。这时仅仅是拓扑排序是不够的。 通过拓扑排序,可以有效地分析出一个有向图是否存在环;若不存在,那它的拓扑排序是什么?另一方面,利用求关键路径的算法,可以得到完成工程的最短工期及关键活动有哪些。(摘自《大话 阅读全文
posted @ 2021-06-12 16:12 kokiafan 阅读(3550) 评论(0) 推荐(1)
摘要:引入 把完成一件事情或一个项目当成一个工程来对待,又将其分为若干个“活动”的子工程。例如:“炒一盘肉”这个工程,可以按照先后步骤画出以下这么一张图。 把上面这张图看成是一个表示工程的有向图,用顶点(Vertex)表示活动(Activity),用弧(Edge)表示活动(Activity)之间的优先关系 阅读全文
posted @ 2021-06-05 21:33 kokiafan 阅读(426) 评论(0) 推荐(1)
摘要:引入 狄杰斯特拉(Dijstra)算法解决的问题是:从图G中的某个指定顶点vk开始到其余各个顶点的最短路径,其中图G有n个顶点,k∈[0, n-1]。若还需要求某个顶点vx开始到其余各个顶点的最短路径(其中x≠k),则还需要再跑一次Dijstra算法。若用户需要图G中每个顶点到其余顶点最短路径呢?则 阅读全文
posted @ 2021-05-27 16:52 kokiafan 阅读(2112) 评论(0) 推荐(0)
摘要:概览 求连通网的最小生成树的两种经典算法: ①普里姆(Prim)算法。 ②克鲁斯卡尔(Kruskal)算法。 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图(即“带权连通图”)里搜索最小生成树。该算法的结果是一棵树。 该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(Vojtěch J 阅读全文
posted @ 2021-05-23 09:38 kokiafan 阅读(2525) 评论(0) 推荐(0)
摘要:概览 相比于普里姆算法(Prim算法),克鲁斯卡尔算法直接以边为目标去构建最小生成树。从按权值由小到大排好序的边集合中逐个寻找权值最小的边来构建最小生成树,只要构建时,不会形成环路即可保证当边集合中的边都被尝试了过后所形成的树为最小生成树。 定义 假设G=(V, )是连通网(即带权连通图),则令最小 阅读全文
posted @ 2021-05-22 21:16 kokiafan 阅读(1239) 评论(0) 推荐(2)
摘要:引入 从A点到B点的最短路径是什么?求最短路径的两种算法:Dijkstra算法和Floyd算法。 网图:带权图。 非网图最短路径:两顶点间经过的边数最少的路径。(非网图也可被理解为各边权值为1的网图。) 网图最短路径:两顶点间经过的边上权值之和最少的路径。路径上第一个顶点是源点,最后的顶点是终点。 阅读全文
posted @ 2021-05-22 12:19 kokiafan 阅读(1172) 评论(1) 推荐(0)
摘要:概览 相比于普里姆算法(Prim算法),克鲁斯卡尔算法直接以边为目标去构建最小生成树。从按权值由小到大排好序的边集合{E}中逐个寻找权值最小的边来构建最小生成树,只要构建时,不会形成环路即可保证当边集合{E}中的边都被尝试了过后所形成的树为最小生成树。 定义 假设G=(V, {E})是连通网(即带权 阅读全文
posted @ 2021-05-17 16:23 kokiafan 阅读(1001) 评论(0) 推荐(0)
摘要:算法代码 C#代码 using System; using System.Linq; namespace Kruskal { class Program { static void Main(string[] args) { Edge[] edges = new Edge[] { new Edge( 阅读全文
posted @ 2021-05-17 16:21 kokiafan 阅读(471) 评论(0) 推荐(0)
摘要:算法代码 C#代码 using System; namespace Prim { class Program { static void Main(string[] args) { int numberOfVertexes = 9, infinity = int.MaxValue; int[][] 阅读全文
posted @ 2021-05-16 14:57 kokiafan 阅读(484) 评论(0) 推荐(0)
摘要:概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图(带权图)里搜索最小生成树。即此算法搜索到的边(Edge)子集所构成的树中,不但包括了连通图里的所有顶点(Vertex)且其所有边的权值之和最小。(注:N个顶点的图中,其最小生成树的边为N-1条,且各边之和最小。树的每一个节点(除根节 阅读全文
posted @ 2021-05-15 20:57 kokiafan 阅读(2107) 评论(0) 推荐(0)