一些简单图论问题

0. 前置

  1. 图论基础内容
  2. 最短路
  3. 最小生成树,次小生成树
  4. 邻接矩阵存图,边表存图
  5. 差分约束
  6. 矩阵乘法,矩阵快速幂
  7. 二分图匹配
  8. 最小割定理
  9. 最大独立子集和最大团的转化
  10. 有向图强连通分量
  11. 边双连通分量
  12. 点双连通分量
  13. 缩点
  14. 2-SAT

1. 一类基于矩阵乘法的问题

我们记 Ax,y 表示矩阵 A 的第 x 行第 y 列的元素 .

先说一下此处邻接矩阵的定义(设邻接矩阵为 G):

  • 无权图邻接矩阵:若 ij 有边,则 Gi,j=1,否则 Gi,j=0 .
  • 有权图邻接矩阵:若 ij 有一条边权为 w 的边,则 Gi,j=w,否则 Gi,j= .

1. Problem 1

一个 n 个点 m 条边的无权图,求 ab 经过 t 条边的路径数量 .

先考虑一张图的邻接矩阵 G,若 t=1,那么 Ga,b 即为答案 .

考虑 G2,根据矩阵乘法的定义:

Ga,b2=i=1nGa,iGi,b

因为 G 的每个元素要么为 0,要么为 1,从而,当且仅当 aiib 都有边时,Ga,iGi,b 才等于 1 .

不难发现,当 t=2 时,答案恰好为 Ga,b2 .

我们再考虑 G3

Ga,b3=i=1nGa,iGi,b2=i=1nGa,i(j=1nGi,jGj,b)=i=1nj=1nGa,iGi,jGj,b

类似的,当且仅当 aiijjb 都有边时,Ga,iGi,jGj,b 才等于 1 .

不难发现,当 t=3 时,答案恰好为 Ga,b3 .

一般的,是否有答案为 Ga,bk

答案是肯定的,分析类似 .

重边自环问题不大 .

2. Problem 2

一个 n 个点 m 条边的图,求 ab 经过 t 条边的最短路 .

这个问题和 Problem 1 非常相似,先考虑一个 dp 方法 .

dpi,j 表示通过 i 条边到达 j 的方案数,则:

dpi,j=mini=1k(dpi1,k+Gk,j)

其中 G 是图的邻接矩阵 .

直接暴力 dp 肯定是得不到满分的,我们对 Problem 1 设计一个类似的 dp 算法(状态类似):

Dpi,j=i=1kDpi1,kGk,j

发现它们两个非常的相似,所以考虑定义一种新的「矩阵乘法」运算,我们定义两个矩阵 AB 之间的「新矩阵乘法」为:

(AB)i,j=mink=1b(Ai,j+Bk,j)

其中 Aa×b 的矩阵,Bb×c 的矩阵,ABa×c 的矩阵 .

不难验证 运算有结合律:

((AB)C)i,j=minl=1c(mink=1b(Ai,k+Bk,l)+Cl,j)=mink=1bminl=1c(Ai,k+Bk,l+Cl,j)=mink=1b(Ai,k+minl=1c(Bk,l+Cl,j))=(A(BC))i,j

上矩阵快速幂,时间复杂度 O(n3logt) .

类似题目

  • 给定一张 n 个点 m 条边的图,求边数恰好为 k 的路径上最大边最小是多少 .
    定义:

AB=mini=1nmaxAi,kBk,j

  • 给定一张 n 个点 m 条边的图,求边数恰好为 k 的路径上最大边最小是多少 .
    同理
  • 给定一张 n 个点 m 条边的图,求边数不超过 k 的路径上最大边最小是多少 .
    对每个点 u 都连一条 uu 边权为 即可 .
  • 给定一张 n 个点 m 条边的图,求边数在 [k1,k2] 的路径上最大边最小是多少 .
    设原矩阵为 G,每个点 u 都连一条 uu 边权为 之后的矩阵是 G .
    观察矩阵乘法 的定义,可以发现答案就是 G0k1Gk2k1 .

2. 一类二分图匹配问题

1. Problem 1

问能否通过交换方格图的某些行列,使得对角线上的数全部是 1 .

把每个格子和其对应对角线点连边跑二分图匹配即可 .

2. Problem 2

n×m 的方格图,若干地方有障碍,问最多能放多少个物体,使得这些物体彼此之间不能互相看见(物体有视力,物体的视线会被障碍挡住)

把不能看到的点连边,然后跑二分图匹配

3. Problem 3

nn 女,给出哪些对可以跳舞,每次开始播放歌曲,某些对就会跳舞,跳舞之后,每个男如果存在一个没有跳舞的女且能够跳舞,他就会找该女更换舞伴
现在希望:至少有一对人跳舞 并且跳舞后没有人愿意改变舞伴
输出任意一种方案

当全部匹配或者一人匹配失败时答案就出来了 .

杂题

posted @   yspm  阅读(182)  评论(2编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
😅​
点击右上角即可分享
微信分享提示