第7章 图
第7章 图覆盖31个正式目录坐标,用表示合同、真实操作计数与轨迹门交付顶点边表、表示对照、访问队列、松弛记录、前驱树与负权反例
学习目标
- 把图ADT、五类存储、DFS、BFS、MST、最短路、拓扑排序与关键路径落实为ADT、物理表示、前后置条件与可复查状态
- 只注入“向Dijkstra输入负权边,或把有向边当成邻接矩阵中的对称记录”,定位第7章 图操作轨迹的首个错误状态
- 交付顶点边表、表示对照、访问队列、松弛记录、前驱树与负权反例,分开出版社目录、第2章样章、当前参考与本站扩展
为什么从这个问题开始
第7章 图围绕“图表示、遍历、生成树、最短路与DAG调度怎样各自声明边与权重前提?”建立贯穿任务:在固定非负权图上逐顶点重放Dijkstra确定与松弛轨迹。第7章 图先冻结ADT、表示和输入,再执行操作并保存真实计数,最后用单故障和同输入恢复验收;只有守住“抽象边集与表示一致;已确定最短距离有非负权前提;遍历不重不漏可达顶点”并交付顶点边表、表示对照、访问队列、松弛记录、前驱树与负权反例,一张图或一个复杂度标签才可能升级为可复核证据。
原版、授权样章与当前参考边界
第7章 图以清华大学出版社详情页核对程杰、《大话数据结构[溢彩加强版]》、ISBN 9787302564713、2020年12月1日出版、C语言定位和全彩图表、动效课件定位。出版社页面在2026年7月30日显示印次1—9、最近印刷日期2026年3月24日;第7章 图把这当作当前书志状态,不把未来变化写死为原版内容。
第7章 图以出版社完整目录核对第1章至第9章、282个编号小节;加上9个章根,正式分母是291个坐标。旧清单只有73个聚合概念,既漏掉开场白、总结、结尾,也漏掉大量二级和三级小节;第7章 图现用完整坐标追踪,但不会复制目录页附带的生活类比摘句。
第7章 图可访问出版社第2章样章,因此总体来源级别记为authorized-sample。第7章 图只用样章局部核对算法定义、特性、设计要求、度量和复杂度;其余8章正文、全彩图、逐行代码与课件内容仍不视为已授权复制。第7章 图的中文讲解、算法轨迹、反例和交互均为本站独立重构,不是原书翻译或替代品。
第7章 图以NIST DADS、Open Data Structures和Princeton Algorithms核对当前术语、实现不变量与经典算法。第7章 图所有交互在浏览器内使用小规模确定性数据,不执行用户代码、不上传数据;操作计数来自实际循环和状态迁移,大O、动画终点或勾选数量都不会被包装成综合效率分。
本页独立事实来源
- 清华大学出版社图书详情:第7章 图用它核对程杰、ISBN 9787302564713、2020年12月1日出版、C语言定位、溢彩加强版和当前印次。
- 清华大学出版社完整目录:第7章 图用它核对第1章至第9章、282个编号小节及页码边界,不把目录中的叙事摘句复制成正文。
- NIST算法与数据结构词典:第7章 图用它核对ADT、数组、链表、栈、队列、树、图、查找、排序与复杂度术语。
- Open Data Structures开放教材:第7章 图用它核对列表、队列、哈希、搜索树、堆、图和B树的实现不变量、分析与开放许可。
- Princeton Algorithms官方课程站:第7章 图用它核对经典查找、排序、图算法和可执行样例的教学边界。
291正式坐标逐项深读
第7章 图
坐标 1/31:第7章 图;稳定证据键 DSVC-07-A。 第7章 图声明方向、权重、重边和负权前提,逐顶点保存访问、松弛、前驱与失败反例。 第7章 图在 DSVC-07-A 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.1 开场白
坐标 2/31:7·1 开场白;稳定证据键 DSVC-07-B。 第7章 图把“7·1 开场白”当作原版叙事坐标,不虚构其中故事;本站只交付本章预测、证据回顾或边界清单。 第7章 图在 DSVC-07-B 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.2 图的定义
坐标 3/31:7·2 图的定义;稳定证据键 DSVC-07-C。 第7章 图为这个坐标写对象域、操作签名、前置条件和后置条件,定义不依赖某个C结构体的偶然布局。 第7章 图在 DSVC-07-C 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.2.1 各种图的定义
坐标 4/31:7·2·1 各种图的定义;稳定证据键 DSVC-07-D。 第7章 图为这个坐标写对象域、操作签名、前置条件和后置条件,定义不依赖某个C结构体的偶然布局。 第7章 图在 DSVC-07-D 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.2.2 图的顶点与边间的关系
坐标 5/31:7·2·2 图的顶点与边间的关系;稳定证据键 DSVC-07-E。 第7章 图声明方向、权重、重边和负权前提,逐顶点保存访问、松弛、前驱与失败反例。 第7章 图在 DSVC-07-E 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.2.3 连通图的相关术语
坐标 6/31:7·2·3 连通图的相关术语;稳定证据键 DSVC-07-F。 第7章 图为这个坐标写对象域、操作签名、前置条件和后置条件,定义不依赖某个C结构体的偶然布局。 第7章 图在 DSVC-07-F 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.2.4 图的定义与术语总结
坐标 7/31:7·2·4 图的定义与术语总结;稳定证据键 DSVC-07-G。 第7章 图为这个坐标写对象域、操作签名、前置条件和后置条件,定义不依赖某个C结构体的偶然布局。 第7章 图在 DSVC-07-G 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.3 图的抽象数据类型
坐标 8/31:7·3 图的抽象数据类型;稳定证据键 DSVC-07-H。 第7章 图为这个坐标写对象域、操作签名、前置条件和后置条件,定义不依赖某个C结构体的偶然布局。 第7章 图在 DSVC-07-H 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.4 图的存储结构
坐标 9/31:7·4 图的存储结构;稳定证据键 DSVC-07-I。 第7章 图把逻辑元素映射到槽位或结点身份,逐项核对长度、可达性、边界与失败原子性。 第7章 图在 DSVC-07-I 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.4.1 邻接矩阵
坐标 10/31:7·4·1 邻接矩阵;稳定证据键 DSVC-07-J。 第7章 图把“7·4·1 邻接矩阵”落实为输入、表示、操作、输出、不变量和反例;序号10只用于证据追踪,不代表难度或效率。 第7章 图在 DSVC-07-J 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.4.2 邻接表
坐标 11/31:7·4·2 邻接表;稳定证据键 DSVC-07-K。 第7章 图把“7·4·2 邻接表”落实为输入、表示、操作、输出、不变量和反例;序号11只用于证据追踪,不代表难度或效率。 第7章 图在 DSVC-07-K 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.4.3 十字链表
坐标 12/31:7·4·3 十字链表;稳定证据键 DSVC-07-L。 第7章 图把逻辑元素映射到槽位或结点身份,逐项核对长度、可达性、边界与失败原子性。 第7章 图在 DSVC-07-L 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.4.4 邻接多重表
坐标 13/31:7·4·4 邻接多重表;稳定证据键 DSVC-07-M。 第7章 图把“7·4·4 邻接多重表”落实为输入、表示、操作、输出、不变量和反例;序号13只用于证据追踪,不代表难度或效率。 第7章 图在 DSVC-07-M 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.4.5 边集数组
坐标 14/31:7·4·5 边集数组;稳定证据键 DSVC-07-N。 第7章 图把逻辑元素映射到槽位或结点身份,逐项核对长度、可达性、边界与失败原子性。 第7章 图在 DSVC-07-N 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.5 图的遍历
坐标 15/31:7·5 图的遍历;稳定证据键 DSVC-07-O。 第7章 图以连通无环、父结点唯一和一次访问作为树操作不变量,并保存递归或显式栈轨迹。 第7章 图在 DSVC-07-O 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.5.1 深度优先遍历
坐标 16/31:7·5·1 深度优先遍历;稳定证据键 DSVC-07-P。 第7章 图以连通无环、父结点唯一和一次访问作为树操作不变量,并保存递归或显式栈轨迹。 第7章 图在 DSVC-07-P 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.5.2 广度优先遍历
坐标 17/31:7·5·2 广度优先遍历;稳定证据键 DSVC-07-Q。 第7章 图以连通无环、父结点唯一和一次访问作为树操作不变量,并保存递归或显式栈轨迹。 第7章 图在 DSVC-07-Q 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.6 最小生成树
坐标 18/31:7·6 最小生成树;稳定证据键 DSVC-07-R。 第7章 图以连通无环、父结点唯一和一次访问作为树操作不变量,并保存递归或显式栈轨迹。 第7章 图在 DSVC-07-R 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.6.1 普里姆(Prim)算法
坐标 19/31:7·6·1 普里姆(Prim)算法;稳定证据键 DSVC-07-S。 第7章 图声明方向、权重、重边和负权前提,逐顶点保存访问、松弛、前驱与失败反例。 第7章 图在 DSVC-07-S 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.6.2 克鲁斯卡尔(Kruskal)算法
坐标 20/31:7·6·2 克鲁斯卡尔(Kruskal)算法;稳定证据键 DSVC-07-T。 第7章 图声明方向、权重、重边和负权前提,逐顶点保存访问、松弛、前驱与失败反例。 第7章 图在 DSVC-07-T 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.7 最短路径
坐标 21/31:7·7 最短路径;稳定证据键 DSVC-07-U。 第7章 图声明方向、权重、重边和负权前提,逐顶点保存访问、松弛、前驱与失败反例。 第7章 图在 DSVC-07-U 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.7.1 迪杰斯特拉(Dijkstra)算法
坐标 22/31:7·7·1 迪杰斯特拉(Dijkstra)算法;稳定证据键 DSVC-07-V。 第7章 图声明方向、权重、重边和负权前提,逐顶点保存访问、松弛、前驱与失败反例。 第7章 图在 DSVC-07-V 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.7.2 弗洛伊德(Floyd)算法
坐标 23/31:7·7·2 弗洛伊德(Floyd)算法;稳定证据键 DSVC-07-W。 第7章 图声明方向、权重、重边和负权前提,逐顶点保存访问、松弛、前驱与失败反例。 第7章 图在 DSVC-07-W 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.8 拓扑排序
坐标 24/31:7·8 拓扑排序;稳定证据键 DSVC-07-X。 第7章 图声明方向、权重、重边和负权前提,逐顶点保存访问、松弛、前驱与失败反例。 第7章 图在 DSVC-07-X 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.8.1 拓扑排序介绍
坐标 25/31:7·8·1 拓扑排序介绍;稳定证据键 DSVC-07-Y。 第7章 图声明方向、权重、重边和负权前提,逐顶点保存访问、松弛、前驱与失败反例。 第7章 图在 DSVC-07-Y 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.8.2 拓扑排序算法
坐标 26/31:7·8·2 拓扑排序算法;稳定证据键 DSVC-07-Z。 第7章 图声明方向、权重、重边和负权前提,逐顶点保存访问、松弛、前驱与失败反例。 第7章 图在 DSVC-07-Z 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.9 关键路径
坐标 27/31:7·9 关键路径;稳定证据键 DSVC-07-AA。 第7章 图声明方向、权重、重边和负权前提,逐顶点保存访问、松弛、前驱与失败反例。 第7章 图在 DSVC-07-AA 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.9.1 关键路径算法的原理
坐标 28/31:7·9·1 关键路径算法的原理;稳定证据键 DSVC-07-AB。 第7章 图声明方向、权重、重边和负权前提,逐顶点保存访问、松弛、前驱与失败反例。 第7章 图在 DSVC-07-AB 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.9.2 关键路径算法
坐标 29/31:7·9·2 关键路径算法;稳定证据键 DSVC-07-AC。 第7章 图声明方向、权重、重边和负权前提,逐顶点保存访问、松弛、前驱与失败反例。 第7章 图在 DSVC-07-AC 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.10 总结回顾
坐标 30/31:7·10 总结回顾;稳定证据键 DSVC-07-AD。 第7章 图把“7·10 总结回顾”当作原版叙事坐标,不虚构其中故事;本站只交付本章预测、证据回顾或边界清单。 第7章 图在 DSVC-07-AD 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
7.11 结尾语
坐标 31/31:7·11 结尾语;稳定证据键 DSVC-07-AE。 第7章 图把“7·11 结尾语”当作原版叙事坐标,不虚构其中故事;本站只交付本章预测、证据回顾或边界清单。 第7章 图在 DSVC-07-AE 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
三个可操作结构与算法实验
第7章 图先预测:若只注入“向Dijkstra输入负权边,或把有向边当成邻接矩阵中的对称记录”,抽象合同、物理表示、前置条件、状态、不变量、输出或操作计数中的哪一项最先变化?第7章 图随后选择正式坐标与表示,调整小输入获得真实轨迹,再沿基线、故障和恢复逐项关闭发布门。
表示合同:连接ADT、物理存储与不变量
抽象对象—物理表示—不变量
第7章 图
先选正式坐标和来源轨,再比较同一抽象对象的存储关系与必须保持的性质。
坐标 1/31
第7章 图
出版社完整目录限定2020溢彩加强版的291个正式坐标;目录中的叙事句不等于算法证明。
- 存储合同
- 元素按下标映射到连续槽位;容量与逻辑长度分开记录。
- 关系映射
- 第 i 个逻辑元素由槽位 i 表示,随机访问依赖有效下标。
- 表示不变量
- 0 ≤ length ≤ capacity;有效区间之外不属于线性表。 本页另要求:抽象边集与表示一致;已确定最短距离有非负权前提;遍历不重不漏可达顶点
第7章 图的操作计数器真正执行顺序与折半查找、数组与链表插入模型、循环队列、KMP、树遍历、Dijkstra或排序循环。第7章 图的固定小图和小数组用于复算机制,不代表生产负载;缓存、分配器、语言实现、输入分布和硬件效应需要另做基准测试。
最小可重现实验协议
- 第7章 图先冻结元素身份、输入规模、逻辑关系、物理表示、容量、索引约定、比较器、图方向与权重以及成功条件。
- 第7章 图用小输入建立参考轨迹并保存顶点边表、表示对照、访问队列、松弛记录、前驱树与负权反例;输出、多重集、可达性或计数不稳定就停止,不用复杂度表解释实现。
- 第7章 图保持其余条件不变,只注入“向Dijkstra输入负权边,或把有向边当成邻接矩阵中的对称记录”,记录首个越界、错误边、错误候选区、错误输出或不变量破坏。
- 第7章 图撤销唯一故障,从干净结构以同一输入重放;结构、输出、操作计数和“抽象边集与表示一致;已确定最短距离有非负权前提;遍历不重不漏可达顶点”没有一起恢复时,结论标记失败或未知。
小结与上架门
第7章 图把图ADT、五类存储、DFS、BFS、MST、最短路、拓扑排序与关键路径连接成可复核状态链:完整目录给正式坐标,第2章样章限定局部正文,当前参考核对新陈述,ADT合同解释对象,物理表示承载状态,真实操作计数暴露成本,单故障定位首错,同输入恢复决定结论能否上架。第7章 图最终交付顶点边表、表示对照、访问队列、松弛记录、前驱树与负权反例,并同时报告授权、前提、成本模型、输入分布与未知项。
练习与答案
练习
问题 1:7.1 开场白
为第7章 图的证据键 DSVC-07-B 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 2:7.2 图的定义
为第7章 图的证据键 DSVC-07-C 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 3:7.3 图的抽象数据类型
为第7章 图的证据键 DSVC-07-H 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 4:7.4 图的存储结构
为第7章 图的证据键 DSVC-07-I 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 5:7.5 图的遍历
为第7章 图的证据键 DSVC-07-O 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 6:7.6 最小生成树
为第7章 图的证据键 DSVC-07-R 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 7:7.7 最短路径
为第7章 图的证据键 DSVC-07-U 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 8:7.8 拓扑排序
为第7章 图的证据键 DSVC-07-X 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 9:7.9 关键路径
为第7章 图的证据键 DSVC-07-AA 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 10:7.10 总结回顾
为第7章 图的证据键 DSVC-07-AD 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 11:7.11 结尾语
为第7章 图的证据键 DSVC-07-AE 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 12:为什么291个坐标不等于291段原书正文
第7章 图应怎样描述出版社完整目录、第2章样章和本站交互之间的授权与证据关系?
问题 13:什么时候不能发布“更快”或“正确”
第7章 图缺少哪些证据时只能报告局部观察?
六个裁决术语
第7章 图使用↡第7章 图中由值集合与操作语义定义且不绑定单一物理布局的合同、↡第7章 图中每次合法操作前后都必须成立的槽位、可达边、树序或图边性质、↡第7章 图中某操作被允许执行之前输入与状态必须满足的约束、↡第7章 图从真实轨迹统计的比较、读取、写入、搬移、改链或松弛次数、↡第7章 图的故障轨迹相对参考轨迹最早出现越界、不变量破坏或错误输出的位置、↡第7章 图撤销唯一故障并用原输入恢复结构、输出、不变量与计数的断言构成最小证据语言;第7章 图用它们指向真实对象、状态和轨迹,不生成成熟度分、难度分或综合效率分。
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 抽象数据类型
第7章 图中由值集合与操作语义定义且不绑定单一物理布局的合同。
- 表示不变量
第7章 图中每次合法操作前后都必须成立的槽位、可达边、树序或图边性质。
- 前置条件
第7章 图中某操作被允许执行之前输入与状态必须满足的约束。
- 操作计数
第7章 图从真实轨迹统计的比较、读取、写入、搬移、改链或松弛次数。
- 首个错误状态
第7章 图的故障轨迹相对参考轨迹最早出现越界、不变量破坏或错误输出的位置。
- 同输入恢复
第7章 图撤销唯一故障并用原输入恢复结构、输出、不变量与计数的断言。