图 —— 此处省略一万字不满

图的存储方式

https://www.cnblogs.com/ssyfj/p/9475148.html

邻接矩阵
图的邻接矩阵存储方式是用两个数组来表示图。
一个一维数组存储图中顶点信息;
一个二维数组(称为邻接矩阵)存储图中的边或弧的信息;
邻接表
图中顶点用一个一维数组。
图中每个顶点与该顶点的所有邻接点构成一个线性表;
第一个结点存放有关顶点的信息,其余结点存放有关边的信息。
有向图的一种存储方法:十字链表

图的邻接表和逆邻接表结合在一起的东西,比较方便在查找一个结点的出度和入度。

顶点表:存储顶点数据和该顶点入边表的第一个结点,以及该顶点出边表的第一个结点;
边表:存储弧的起点下标、终点下标、终点相同的下一条边、起点相同的下一条边。
邻接多重表是对无向图的存储结构的优化
边表设置了定个顶点的下标,并且有两个指针分别指向该边的两个顶点

图的遍历

https://blog.csdn.net/yue_2018/article/details/89060556

深度优先遍历

假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。

深度优先搜索是一个递归的过程。首先,选定一个出发点后进行遍历,如果有邻接的未被访问过的节点则继续前进。若不能继续前进,则回退一步再前进,若回退一步仍然不能前进,则连续回退至可以前进的位置为止。重复此过程,直到所有与选定点相通的所有顶点都被遍历。

深度优先搜索是递归过程,带有回退操作,因此需要使用栈存储访问的路径信息。当访问到的当前顶点没有可以前进的邻接顶点时,需要进行出栈操作,将当前位置回退至出栈元素位置。

广度优先遍历

广度优先搜索思想:从图中某顶点v出发,在访问了v之后依次访问v的各个未曾访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使得先被访问的顶点的邻接点先于后被访问的顶点的邻接点被访问,直至图中所有已被访问的顶点的邻接点都被访问到。如果此时图中尚有顶点未被访问,则需要另选一个未曾被访问过的顶点作为新的起始点,重复上述过程,直至图中所有顶点都被访问到为止。

广度优先搜索类似于树的层次遍历,是按照一种由近及远的方式访问图的顶点。在进行广度优先搜索时需要使用队列存储顶点信息。

图的应用

最小生成树

普里姆算法

确定一个顶点,把它当成一棵树,然后从与这棵树相接的边中找出最短的边,加入生成树,以此类推!

克鲁斯卡尔算法

每次找出侯选边中权值最小的边,就将该边加入生成树中,不能有环!

最短路径

https://www.jianshu.com/p/92e46d990d17

迪杰斯特拉算法

他的算法思想是按路径长度递增的次序一步一步并入来求取,是贪心算法的一个应用,用来解决单源点到其余顶点的最短路径问题。

S为已知求得的最短路径的终点集合

初始时S中只有顶点V0。然后从nodes集合中遍历找出从V0出发到各节点路径最短的节点,并将该节点并入S中(即修改该节点的visited属性为true),此时就找到了一个顶点的最短路径。然后,我们看看新加入的顶点是否可以到达其他顶点,并且看看通过该顶点到达其他点的路径长度是否比从V0直接到达更短,如果是,则修改这些顶点的权值

弗洛依德算法

Floyd算法是一个经典的动态规划算法。是解决任意两点间的最短路径(称为多源最短路径问题)的一种算法,可以正确处理有向图或负权的最短路径问题。(动态规划算法是通过拆分问题规模,并定义问题状态与状态的关系,使得问题能够以递推(分治)的方式去解决,最终合并各个拆分的小问题的解为整个问题的解。

从任意节点i到任意节点j的最短路径不外乎2种可能:

1)直接从节点i到节点j,
2)从节点i经过若干个节点k到节点j。

所以,我们假设arcs(i,j)为节点i到节点j的最短路径的距离,对于每一个节点k,我们检查arcs(i,k) + arcs(k,j) < arcs(i,j)是否成立,如果成立,证明从节点i到节点k再到节点j的路径比节点i直接到节点j的路径短,我们便设置arcs(i,j) = arcs(i,k) + arcs(k,j),这样一来,当我们遍历完所有节点k,arcs(i,j)中记录的便是节点i到节点j的最短路径的距离。

拓扑排序

https://www.cnblogs.com/bigsai/p/11489260.html

关键路径

https://blog.csdn.net/fu_jian_ping/article/details/88962697

原文地址:https://www.cnblogs.com/tanghm/p/12890327.html