图论入门题单

图论简介:

图(Graph)

图可以被表示为 G={V, E},其中 V={v1, ... , vN}表示n个点,E= {e1, ... , eM}表示m条边。

常用的储存方式包括邻接表和邻接矩阵。

连通分量(Connected Component):各节点间至少存在一条边可以连通。

图的最短路入门:

P1144 最短路计数

B3647 【模板】Floyd 算法

P2910 [USACO08OPEN] Clear And Present Danger S

B3611 【模板】传递闭包

P5318 【深基18.例3】查找文献

 

拓扑排序入门:

B3644 【模板】拓扑排序 / 家谱树 

P3074 [USACO13FEB] Milk Scheduling S

 

 

 

 

 

最短路算法

Floyd算法:

与前两种算法不同,它是求解顶点之间两两最短距离。其基本思想是,如果节点i.k的距离加上k,j的距离小于i,j的距离,则更新i,j的距离。该思想与动态规划的思想类似。需要注意的是,在枚举的过程中,需要先枚举k,再枚举ij。Floyed算法时间复杂度为O(N3)。

可以理解为不断地消除中间节点k,把 i 和 j  经过中间节点的最短距离更新到 map[i][j]中,

相当于我们在i和j之间直接建立了一条可以用map[i][j]最短路径(把中间节点k消除了)

遍历n次就把所有的中间节点消除了,在任何两个节点 i,j 之间都建立了一条直连的最短路径map[i][j]

拓补排序:

拓扑排序是对一个有向图构造拓扑序列,解决工程是否能顺利进行的问题。构造时有 2 种结果:

  1. 此图全部顶点被输出:说明说明图中无「环」存在, 是 AOV 网
  2. 没有输出全部顶点:说明图中有「环」存在,不是 AOV 网

AOV(Activity On Vertex Network) :一种 有向 无回路 的图。

求解方法:每次删除一个入度边个数为 0 的点,并刷新其他点的r入度

    再找一个入度为0的点

    重复以上步骤,直到节点全部输出

 

posted @   浪矢-CL  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
历史上的今天:
2017-07-27 乒乓球
2017-07-27 电梯
2017-07-27 考试(()9*
2017-07-27 华容道 noip2013 70分搜索
2017-07-27 生日蛋糕
点击右上角即可分享
微信分享提示