当前位置: 首页 > news >正文

c++图论

信奥图论入门知识体系

一、什么是图论?

简单比喻
图就像一张关系地图,用“点”表示事物,用“线”表示事物之间的关系。
比如:

  • 点可以是你和你的朋友们
  • 线表示你们之间是不是好朋友(连线就是好朋友,不连线就是还不认识)

二、图的基本组成部分(像搭积木一样简单)

1.顶点(Node/Vertex)

  • 也叫“点”,用圆圈表示
  • 例子:每个城市、每个同学、每个地铁站

2.边(Edge)

  • 点与点之间的连线
  • 例子:城市之间的公路、同学之间的友谊、地铁站之间的轨道

3.权重(Weight)(可选)

  • 给边加上“数字标签”
  • 例子:公路的长度、坐地铁需要的时间

三、图的三种常见类型(就像不同种类的网络)

1.无向图

  • 边没有方向,像双向街道
  • 例子:微信好友关系(互为好友)
A — B 表示 A 和 B 是朋友

2.有向图

  • 边有箭头,像单行道
  • 例子:微博关注(你关注他,但他不一定关注你)
A → B 表示 A 关注了 B

3.带权图

  • 边上标有数字
  • 例子:地图上的距离
A --5-- B 表示从 A 到 B 要走 5 公里

四、图论里的“好朋友”关系(重要概念)

1.邻居(邻接点)

  • 如果两个点直接有边相连,它们就是邻居
  • 例子:你的同桌就是你的“邻居同学”

2.路径

  • 从一个点到另一个点走过的路线
  • 例子:从家到学校的路线:家 → 公交站 → 学校

3.

  • 起点和终点是同一个点的路径
  • 例子:绕操场跑一圈回到起点

五、两种存储图的“记事本方法”(编程时会用到)

方法1:邻接矩阵(像课程表)

  • 画一个表格,行和列都是所有点
  • 如果点 i 和点 j 有边,就在表格(i,j)位置写 1(无向图要写两次)
  • 适合边比较多的图

例子(三个同学 A、B、C 的关系):

A B C A 0 1 1 ← A 和 B、C 都是朋友 B 1 0 0 ← B 只和 A 是朋友 C 1 0 0 ← C 只和 A 是朋友

方法2:邻接表(像通讯录)

  • 给每个点建一个“好朋友名单”
  • 只记录真正有边连接的点
  • 适合边比较少的图

例子

A的好友列表:B, C B的好友列表:A C的好友列表:A

六、三个经典图论问题(像闯关游戏)

关卡1:走迷宫问题(图的遍历)

任务:访问图中的每一个点,不能漏掉
两种走法

  1. 深度优先搜索(DFS):像走迷宫,一条路走到黑,走不通再回头
  2. 广度优先搜索(BFS):像水波纹扩散,一圈一圈往外走

现实例子

  • DFS:玩密室逃脱,先探索一条路到底
  • BFS:找人帮忙,先问所有直接朋友,再问朋友的朋友

关卡2:最短路径问题

任务:找到两点之间最短的路线

现实例子

  • 地图导航找最短路线
  • 传悄悄话,找传递次数最少的路径

简单算法:Dijkstra算法(像“贪心的小蚂蚁”)

步骤: 1. 从起点开始,标记到起点的距离为0 2. 每次选一个最近的点,更新它邻居的距离 3. 重复直到找到终点

关卡3:最小生成树问题

任务:用最少的边连接所有点,让总长度最小

现实例子

  • 给几个村庄修路,让所有村庄连通,且总公路长度最短
  • 用最少的网线连接所有电脑

简单算法:Kruskal算法(像“拼拼图”)

步骤: 1. 把所有边按长度从小到大排序 2. 从最短的边开始选,如果选了不会形成环,就加入 3. 直到选了 n-1 条边(n 是点数)

七、学习建议

1.先画图,再想算法

  • 把问题画成点线图
  • 在图上模拟算法步骤

2.从生活例子入手

  • 用朋友关系理解无向图
  • 用微博关注理解有向图
  • 用地图距离理解带权图

3.编程实践顺序

第1步:学习用数组存图(邻接矩阵) 第2步:实现 DFS/BFS 遍历 第3步:解决简单的最短路径问题 第4步:尝试最小生成树

4.推荐练习题目

  1. 数一数图中有多少个连通块(像数有几个小岛)
  2. 找两个点之间有没有路径
  3. 计算从起点到每个点的最短距离(边权都是1)
  4. 判断图中是否有环

5.常见困惑与解答

  • :为什么要有两种存图方法?
    :就像记笔记,有时候用表格清楚,有时候用列表方便

  • :DFS和BFS哪个更好?
    :要看任务!DFS适合找“有没有解”,BFS适合找“最短步数”


附:知识点思维导图

图论入门 ├── 基本概念(点、边、权) ├── 图的三兄弟 │ ├── 无向图(双向朋友) │ ├── 有向图(单向关注) │ └── 带权图(有距离) ├── 存储方法 │ ├── 邻接矩阵(课程表法) │ └── 邻接表(通讯录法) └── 三大问题 ├── 遍历问题(走迷宫) ├── 最短路径(找最近的路) └── 最小生成树(用最少的路连所有人)
http://www.jsqmd.com/news/539772/

相关文章:

  • OpenClaw+Qwen3.5-4B-Claude:自动化测试报告生成系统
  • LrcHelper:网易云音乐歌词下载与多设备适配工具完全指南
  • 华为AR2220上配置GRE over IPSec,让OSPF动态路由也能安全跑在公网上(含Wireshark抓包分析)
  • 在贵阳找合金钢现货怕被坑?2026贵州源能达钢材批发官方电话,一通电话解决难题 - 精选优质企业推荐榜
  • 生成式AI欺诈来袭,什么样的IP数据接口才能筑起防线?
  • 从FTP抄作业到代码玄学:我用「客户端-服务器」模型玩出的跨类共享骚操作
  • Deep-HMM 融合 Transformer:序列分类的动态隐状态建模新范式
  • 2026年AI产品经理终极指南:零基础到精通,一篇文章掌握全部!AI产品经理学习路线!
  • Cursor里Java项目突然不能跳转方法了?别慌,这7个排查步骤帮你搞定
  • Nuitka打包实战:高效调试与故障排除指南
  • 避坑指南:NucleiStudio新建工程时‘找不到CFG文件‘的5种解决方法
  • LeRobot框架实现SO-101双臂协作:从同步控制到智能决策的技术突破
  • 告别ROS卡顿:手把手教你用Dora OS搭建低延迟机器人开发环境(附性能对比测试)
  • 起重臂回转起重机-2000-kg
  • 嵌入式新手入门:用快马平台生成带详细注释的LED控制项目
  • Go Module 依赖版本冲突解决方案
  • 拒绝套路!智慧园区系统真的开源了,源码可查、可改、可商用
  • 快速搭建龙虾养殖管理看板:用快马平台一小时生成可视化监控原型
  • 数字遗产继承案:逝者的AI分身争夺战——软件测试从业者的技术应对指南
  • AI 模型推理 GPU 资源调度策略
  • AI时代当程序员?2026年转行IT的“新活法”
  • Go的runtime-metrics包:运行时指标的标准化收集
  • 一文搞懂 MAVROS 和 MAVLink 的关系:初学者快速入门
  • AI教材编写新利器!低查重实现高效创作,轻松搞定专业教材!
  • 【开题答辩全过程】以 基于web的图书借阅系统的设计与实现为例,包含答辩的问题和答案
  • 如何用OpenDroneMap免费将无人机照片转为3D模型?终极完整指南
  • 低成本搭建AI知识库:Qwen3-Embedding-4B量化版仅需3GB显存教程
  • Claude Code CLI 之 session管理(含Claude Code CLI删除对话session)
  • 零售行业数据集成的高效解决方案
  • OpenClaw Assistant:在 Windows 上一键搭好本地 AI 网关,从部署到 Gateway 少踩坑