图的分类大全

图的分类大全

一、按边的方向分

1. 无向图(Undirected Graph)

  • 边没有方向,(u, v)(v, u) 是同一条边

  • 例:社交网络中的"好友关系"

    A --- B --- C
    | |
    D --------------- E

2. 有向图(Directed Graph / Digraph)

  • 边有方向,u → vv → u 是不同的边

  • 例:网页链接、任务依赖

    A → B → C
    ↓ ↑
    D ------------------→

3. 混合图(Mixed Graph)

  • 同时包含有向边和无向边(较少见)

二、按边的权重分

1. 无权图(Unweighted Graph)

  • 边只表示连接关系,没有权重

2. 带权图(Weighted Graph)

  • 每条边有一个权值(距离、费用、时间等)

    A ---5--- B ---3--- C
    | |
    8 2
    | |
    D ------------4------------ E


三、按连通性分

1. 连通图(Connected Graph)【无向图】

  • 任意两个节点之间都存在路径

  • 整张图是"一整块"

    A --- B --- C
    |
    D
    ✅ 任意两点可达

2. 非连通图(Disconnected Graph)

  • 存在至少两个节点之间没有路径

  • 图由多个连通分量组成

    A --- B C --- D
    (两个独立部分)

3. 强连通图(Strongly Connected Graph)【有向图】

  • 任意两点 u、v,既能从 u 到达 v,也能从 v 到达 u

    A → B
    ↑ ↓
    C ← D
    ✅ 形成环,任意两点互达

4. 弱连通图(Weakly Connected Graph)【有向图】

  • 忽略边的方向后,变成连通图

  • 但有方向时,不能保证互达

    A → B → C
    (忽略方向后连通,但 C 无法到达 A)

5. 连通分量 / 强连通分量(SCC)

概念 适用 说明
连通分量 无向图 最大连通子图
强连通分量(SCC) 有向图 内部任意两点互达的最大子图

四、按结构特征分

1. 完全图(Complete Graph)

  • 任意两个节点之间都有边

  • n 个节点有 n(n-1)/2 条边(无向)

    复制代码
      A
     /|\
    B---+---C
     \|/
      D

    K₄:4个节点,6条边

2. 稀疏图 vs 稠密图

类型 边数 常用存储
稀疏图 远小于 V² 邻接表
稠密图 接近 V² 邻接矩阵

3. 二部图 / 二分图(Bipartite Graph)

  • 节点可分为两个集合,所有边只在两集合之间

  • 例:用户与商品的购买关系

    用户集合 商品集合
    U1 ------------ P1
    U1 ------------ P2
    U2 ------------ P2
    U3 ------------ P3

4. 树(Tree)

  • 连通 + 无环的无向图
  • n 个节点,恰好 n-1 条边

5. 森林(Forest)

  • 多棵树的集合(无环无向图)

6. 有向无环图(DAG)

  • 有向 + 无环

  • 拓扑排序的基础,用于任务调度、依赖管理

    A → B → D
    ↓ ↑
    C ---------------------

7. 平面图(Planar Graph)

  • 可以画在平面上且边不交叉的图
  • 例:地图的行政区域划分

五、按特殊用途分

1. 欧拉图(Eulerian Graph)

  • 存在欧拉回路(经过每条边恰好一次并回到起点)
  • 条件:所有节点的度数为偶数

2. 哈密顿图(Hamiltonian Graph)

  • 存在哈密顿回路(经过每个节点恰好一次并回到起点)
  • 例:旅行商问题(TSP)

3. 网络流图(Flow Network)

  • 有向带权图,边有容量限制
  • 用于最大流、最小割问题

六、总览思维导图

复制代码
图
├── 按方向
│   ├── 无向图
│   ├── 有向图
│   └── 混合图
├── 按权重
│   ├── 无权图
│   └── 带权图
├── 按连通性
│   ├── 连通图(无向)
│   ├── 非连通图
│   ├── 强连通图(有向)
│   └── 弱连通图(有向)
├── 按结构
│   ├── 完全图
│   ├── 二分图
│   ├── 树 / 森林
│   ├── DAG(有向无环图)
│   └── 平面图
└── 按特殊性质
    ├── 欧拉图
    ├── 哈密顿图
    └── 网络流图

常见图算法对应关系

问题 适用图类型 算法
最短路径 带权有向/无向图 Dijkstra、Bellman-Ford、Floyd
最小生成树 带权无向连通图 Kruskal、Prim
拓扑排序 DAG Kahn、DFS
连通性检测 无向图 BFS/DFS、并查集
强连通分量 有向图 Tarjan、Kosaraju
最大流 网络流图 Ford-Fulkerson、Dinic
二分图匹配 二分图 匈牙利算法
相关推荐
七夜zippoe2 天前
API设计规范:RESTful API设计与OpenAPI(Swagger)完整指南
后端·restful·设计规范
yinghuoAI20263 天前
电商视觉进入“无人区”:萤火AI如何用三把“手术刀”重构设计 workflow
设计模式·新媒体运营·产品运营·流量运营·用户运营·内容运营·设计规范
电子科技圈9 天前
SmartDV展示汽车IP解决方案以赋能智驾创芯并加速规模化普及
嵌入式硬件·设计模式·硬件架构·软件工程·软件构建·设计规范
xiangw@GZ13 天前
CapSense底层逻辑:硬件设计规范
单片机·嵌入式硬件·设计规范
stevenzqzq16 天前
MVI架构3--实战示例:我的收藏页面
设计规范·compose·mvi架构
ChoSeitaku17 天前
Git实战|协作开发|分支设计规范|Git实践
git·设计规范
stevenzqzq19 天前
Compose 调用层参数设计规范(基于默认值复用原则)
设计规范·compose
stevenzqzq19 天前
Compose 三层结构设计规范1(基于Slot API)
设计规范·compose
bug攻城狮20 天前
SpringBoot 脚手架搭建指南:从零构建企业级开发框架
java·spring boot·后端·架构·系统架构·设计规范
Watermelo61721 天前
【前端实战】构建 Vue 全局错误处理体系,实现业务与错误的清晰解耦
前端·javascript·vue.js·信息可视化·性能优化·前端框架·设计规范