Loading

qbxt图论Day1笔记

听 zhx 学长讲最短路,顺便理了遍知识点,算是真正理解了最短路的原理了吧,毕竟以前是自学的,很多地方没有理解^ ^
感谢 zhx 学长

基环外向树,基环内向树

基环内向树是所有点的出度全为1,基环外向树是所有点的入度全为1,看根在哪儿??

1 ➡️2 ➡️ 3 ➡️ 4 :两者都可以

树:无向,联通,无环

如果去掉无向:一个联通的DAG

如果去掉联通:森林

仙人掌图

  • 边仙人掌:每条边最多连一个环上

  • 点仙人掌:每个点最多在一个环上

​ 点仙人掌图一定是边仙人掌图

​ 怎么处理?

​ 环形DP+树形DP

二分图

所有的点集分成两部分,一部分为白点,一部分为黑点,只能白点和黑点连边

二分图:把树的深度按照奇偶分类,就为二分图

发现只要不是奇环都是二分图

最短路径

  • 单源最短路径问题,求一个点到所有点的最短路

  • 多源最短路问题,求多个点到其他各个点的最短路

  • 最短路径中的三角不等式

    \(dis[i][j] + dis[j][k] >= dis[i][k]\)

    只有 \(j\)\(i\)\(k\) 的最短路上的时候才能取等号

  • 松弛操作

    通过一条边来更新最短路的操作,所有最短路的算法都需要用到

​ 若 \(dis[i][j] + dis[j][k] < dis[i][k]\) 所以 \(dis[i][k] = dis[i][j] + dis[j][k]\)

Floyd

多源最短路的算法,求任意两个点的最短路

时间复杂度:\(O(n^3)\) 最多处理 \(n*n <= 200-500\)

求任意 \(dis[i][j]\) 的距离

Dijkstra(正边权)

单元最短路算法,求一个点到其他点的单源最短路

贪心的思想,保证边权 >= 0

初始化:除了起点,其他都正无穷

维护左右两边点的集合,左边代表还没有求出最短路的点,右边为已经求出最短路的点,把左边的点挨着向右放;

因为每条边都是大于等于 \(0\) 的,所以当用一个点更新其他点的权值的时候,找到达距离最小的点(目标点),到这个点的最短路就被求出来了,就可以把这个点放在右边点的集合了

(因为到其他延伸的点的距离都比到这个点的距离都大,因为边权又都是正的,所以到其他延伸的点后再到这个点的距离一定比直接从这个点到目标点距离大)

复杂度: \(O(n^2 + m)\)

优化:发现每次所选的都是最小的边,所以就可以把所有点连的边从小到大排个序,用堆优化就好了

时间复杂度\(m+n*log*n\)

边权小于0??

Bellman — Ford

从一个点经过另一个点,最多经过 \(n-1\) 条边,直接拿 \(n-1\) 条边做松弛操作,所有的两点间的最短距离就会都被松弛出来

时间复杂度

\(O(n*m)\)

SPFA(负边权)

维护一个队列,放可能改变其他点最短路的点,用队列中的点更新其他点,如果队列中还有点其他的点就有可能被改变,借助队列中的点做松弛操作;

如果队列中的点更新了其他的点,那么被更新的点就有可能更新其他的点,所以这个点就直接放到队列中,因为它有可能更新其他的点;

复杂度

最坏:\(O(n*m)\)

有必要用队列?没必要

如果用堆的话:遍历的话时间复杂度就会变成指数级别

负环判定:如果一个点的入队次数大于 \(n\) 次那就有负环

差分约束

知识点参考图论刷题差分约束专题

几道栗题

\(1-N\) 经过一条边的最短路

N <= 100;t <= \(10^9\)

solution

Dp

状态:\(f[i][j]\) 走了 \(i\) 步走到 \(j\) 点的最短路,

转移;

\[f[i+1][k] = min\lbrace f[i+1][k],f[i][j] + d \rbrace \]

  • \(i => i+1\)
  • 转移系数

满足上面条件可以用矩阵乘法

\(N*N\) 的矩阵,每次可以将每一行或者某一列乘以一个数(可以是小数)

问是否使得所有的数字[l,r]之间

solution

差分约束

每一行或者某一列,表示出来,它们运算完之后要保证在区间之内;

对于

\[l \leq a_{i,j} * c_j * c_i\leq r \]

发现他们都是乘法,和差分约束的式子差很多,所以就要对他进行整理

对它除以 \(c_j\) 发现式子就成了

\[l\leq a_{i,j} * \frac{c_i}{c_j}\leq r \]

对它取 \(log\)

\[log~a_{i,j} + log~ c_i - log~c_j \]

发现它就和差分约束的式子很像了 = =

posted @ 2021-02-07 12:08  Dita  阅读(79)  评论(1编辑  收藏  举报