图论
文章平均质量分 50
风刮来的代码
这个作者很懒,什么都没留下…
展开
-
简单算法-bellman最短路
一、什么是bellman-ford算法? 上篇讲到了Floyd算法,它是多源最短路径算法。这里讲的bellman 则是单源最短路径算法。该算法优化了Floyd那样广撒网的形式,一定程度上减小了时间复杂度。能够计算更大图,但缺点是一次只能计算一个结点到各结点对距离。二、算法思维 先初始化单源点到其他结点的距离为INF(无穷大),比如我们想要到达一个地方,但我们并不知道有多远,但我们知道去下个地点的距离,我们是不是可以询问下个地点的人去我们要去的地点的距离,也许他也不知道,但他...原创 2021-10-04 09:34:12 · 246 阅读 · 0 评论 -
简单算法-Floyd
一、什么是Floyd算法? Floyd算法是一个图论中求最短路径的算法,和后面讲到的Bellman-Ford和SPFA不同的是它可以一次性求出所有结点对的最短路径,并且算法简单明了。但缺点是算法复杂度太大,一旦图的规模过大计算时间就会大大增加,在做题时也会出现超时的现象。二、如何实现Floyd算法 我们知道两个点的相连,有时是直接相连,有时是通过中间结点相连。此算法抓住这个特性,通过三轮循环:第一轮循环此次寻找的中间结点k、第二轮循环初始结点i、第三轮循环结尾结点j。用e...原创 2021-10-03 10:42:18 · 129 阅读 · 0 评论 -
简单算法-有向图的强连通分量
一、什么是有向图的强连通分量? 和无向图的点双连通分量相似(但这里可以一个点可以经过多次),在一个极大连通分量中,任意两个结点u,v ,有u 到 v的路径,也有v 到 u 的路径,也就是在有向边的条件下,在该极大连通分量中任意两个结点还能互通,那么这个极大连通分量就是有向图的强连通分量。比如:2、3、4点属于一个强连通分量,因为他们是可以互通的,而1与其他结点,1与其他结点都不能互通,就独立属于一个强连通分量。二、算法思维本算法依然与求割点的算法相似,...原创 2021-09-13 20:57:23 · 1400 阅读 · 0 评论 -
简单算法-点双连通分量(无向图)
一、什么是点双连通分量? 在一个图的一个任意分量中,任意两个点的相连都存在至少两条点不重复的路径。是不是很难理解?其实也可以这样理解:把这个分量从该图中分离出来,如果该分量中没有割点,那么该分量就是一个点连通分量。比如:如果把1,2,3结点及他们的边分离出来,就成了一个三角,在这个分量中是不存在割点的。二、算法思维 现在我们知道点双连通分量个割点有关,所以代码的整体结构也和割点的差不多。我们在求割点时,已经完成了对一次极大点双连通分量的访问。所以我们只需要把我们...原创 2021-09-11 11:00:39 · 1310 阅读 · 0 评论 -
简单算法-割点和割边
一、什么是割点和割边?1、割点:当在一个连通的图中,去除某个点,使得该图不再连通,而被去除的点就是该图的割点。2、割边(桥):如割点一样,在一个连通的图中,去除某条边,使得该图不再连通,而被去除的条边就是该图的割边,也称桥。二、如何判断是否为割点和割边?首先,...原创 2021-09-07 17:03:19 · 5801 阅读 · 0 评论 -
简单算法-欧拉路的基本概念
一、什么是欧拉路和欧拉回路?1、欧拉路:从一点出发,遍历整个图且每条边只走一次。2、欧拉回路:起点和终点是同一个点的欧拉路。二、在图中怎么判断欧拉路和欧拉回路?a、无向连通图 欧拉路:整个图中有且只有两个奇点。 (奇点:度为奇数的点。) 欧拉回路:整个图中都是偶点。b、有向连通图 欧拉路:除了其他 入度 + 出度 == 0的点以外,有两个点不同,其中一个点的入度 ==另外一个 点的出度。...原创 2021-09-05 10:37:51 · 601 阅读 · 1 评论