
简介关于图论与网络分析的电子版讲义结构清晰、讲解详实可作为运筹学、计算机科学、网络科学等相关课程的配套参考也适合想快速建立图论知识框架的初学者。内容以“哥尼斯堡七桥”等经典问题开篇逐步展开图的定义、分类无向图/有向图、简单图/多重图、表示方法细致讲解深度优先搜索DFS与广度优先搜索BFS两种遍历算法并结合“中国邮递员问题”等实际场景说明最小生成树与破圈法的应用期间配有示意图辅助理解。压缩包内仅含1个PDF文档大小354KB轻量便携支持在电脑或移动设备随时翻阅。目前已有2414人学习下载适合作为课堂笔记补充或考前集中复习资料对系统理解图的基本概念、网络分析思路以及计算机科学中的决策树、支持向量机等延伸应用都很有帮助。 我从一个很现实的需求开始聊。去年准备算法竞赛和图论相关面试时急需一本排版清晰、能随手划重点的《图论》教材于是“图论.pdf”这个词成了我搜索栏里的常驻嘉宾。真正上手才发现光是拿到一份能用的电子版只是第一步后面还连着一整套“电子书管理 PDF 处理 知识内化”的完整流程。这篇就结合我自己折腾下来的经验把从选 PDF 到最终把图论知识吃透的完整过程拆开讲讲顺便把过程中遇到的各种 PDF 工具坑也一并填了。1. 搭一个能用 90 天的“图论.pdf”学习环境1.1 先解决两个要命的选择题版本与来源先说版本。市面上流传的图论教材 PDF 大概分三类一是早期出版社扫描版页面泛黄、图论定理推导里的公式经常糊成一团二是 Latex 排版的彩色数字版图表清晰、能复制公式三是配合课件整理的浓缩笔记版。我的经验是千万别用扫描版作为唯一学习副本。图论这门课的核心是看“路径、连通性、网络流”这些抽象结构怎么用图形表达你把图都看糊了还谈什么理解。所以我最终把主力定为一份彩色数字版同时保留一本扫描版作为备用防止数字版在某些页缺图时无从对照。来源上我建议优先找高校公开课配套教材、作者个人主页或开源社区分享的版本这类文件通常排版规范、无水印干扰后期做批注和打印都省心。选好版本后我会先干一件事把整本书的目录页截图存下来然后横向对比手头的几份 PDF 页码和章节标题是否完整。曾经遇到过一份自称“完整”的 PDF结果第 4 章之后直接跳到了附录目录页却是全的。这种坑如果在开始没发现等到复习阶段才察觉就非常被动。1.2 按 CSP 与算法场景把书“拆开吃”拿到 PDF 后不要急着从头看到尾。图论是典型的模块化知识对应到算法竞赛CSP或日常开发面试真正频繁命中的就是那几块图的存储方式邻接矩阵/邻接表、搜索遍历DFS/BFS、最短路径Dijkstra、Bellman-Ford、Floyd、最小生成树Kruskal、Prim、最大流与匹配。我习惯先把原书的章节映射成这几个作战单元比如“第 2 章 树”主要服务最小生成树“第 5 章 有向图”与最短路强相关。映射完之后我会用 PDF 阅读器的“书签”功能按作战单元重新建立一套书签目录不沿用原书页码。这么做的好处极其明显之后第八次复习时我可以一键跳到“网络流”那一节而不是在一本 600 页的书里来回翻目录。顺带一提如果你用的是带 OCR 能力的阅读器务必开启文字识别这样书里的中文术语和英文术语搜索起来才能真正命中核心关键词复习时找定理效率高一个量级。2. 一套相当能打的 PDF 处理工具箱附过程电子版落到电脑里之后处理需求会接踵而来——压缩体积、抽取插图、做笔记后导出、偶尔打印。我整理了四个高频场景每个都有可复现的操作。2.1 用 Python 批量抽取 PDF 里的图论插图图论书里那些网络流示意图光看不练很难沉淀。我想把它们全部抽出来贴到自己的复习笔记里手动截图显然不现实。这里我推荐用 Python 的 PyMuPDFfitz库做批量抽取脚本逻辑简单主要是按页遍历并保存图片对象。下面是我实际用过的版本import fitz # PyMuPDF pdf_path graph_theory.pdf output_dir extracted_images doc fitz.open(pdf_path) count 0 for page_num in range(len(doc)): page doc[page_num] images page.get_images(fullTrue) for img in images: xref img[0] pix fitz.Pixmap(doc, xref) if pix.n - pix.alpha 4: # 过滤掉需要颜色转换的 CMYK 图片 pix.save(f{output_dir}/page{page_num1}_img{xref}.png) else: pix fitz.Pixmap(fitz.csRGB, pix) pix.save(f{output_dir}/page{page_num1}_img{xref}.png) pix None # 及时释放内存 count 1 doc.close() print(f提取完成共 {count} 张图片)实际运行时注意三点第一输出目录必须先建立否则会报错第二CMYK 色域图片如果不转换会存成黑图所以我加了一个判断第三大 PDF 跑完一轮时间长建议分段执行或者只针对特定页码范围运行。我当时跑了一本 300 页的书大概抽出来 1200 张图片其中约三分之一是装饰性插图真正能用于复习的定理配图大约占一半。整个脚本提取耗时约 4 分钟比人工截图快好几个数量级。2.2 大 PDF 的无损压缩与瘦身操作拿到一本 100MB 以上的扫描版教材想传到手机或平板阅读就很痛苦。压缩原则很简单如果是彩色数字版优先尝试线性化压缩如果是扫描版则要重点压缩嵌入的大图。对于数字版我推荐命令行工具 qpdf它做的是“整理重构”而非简单降质能够移除冗余对象qpdf --object-streamsgenerate --linearize input.pdf output.pdf令我惊讶的是这一条命令就能把我的扫描版 PDF 从 88MB 压到 61MB而且肉眼几乎看不出清晰度变化。对于扫描版Ghostscript 是更彻底的选择gs -sDEVICEpdfwrite -dCompatibilityLevel1.5 -dPDFSETTINGS/ebook \ -dNOPAUSE -dQUIET -dBATCH -sOutputFilecompressed.pdf input.pdf这里注意-dPDFSETTINGS/ebook会把图片分辨率压缩到接近 150dpi足够屏幕阅读但打印效果会打折扣。压缩之后务必抽查若干页确认公式角标没有被过度压糊否则就需要换用/prepress参数保留更高精度。我个人体感是做一轮压缩往往能把电子书体积控制到原来的 60% 左右那些“手机端无法打开”的情况自然也就消失了。2.3 拯救 Word/Excel 转 PDF 时的“未响应”很多前辈老师分享图论相关笔记时经常会发 Word 或 Excel 原稿大家拿到手都得先转成 PDF 存底。Windows 上最经典的坑就是编辑完点“另存为 PDF”时 Office 直接转圈未响应。我踩过之后摸索出一套稳定的替代路径如果是 Word先“另存为”一份 docx 格式副本然后打开该副本使用内置“文件 - 导出 - 创建 PDF/XPS”。若依然未响应改用打印方式快捷键 CtrlP在打印机列表中选“Microsoft Print to PDF”这种方式绕过了导出功能实测成功率要高得多。如果是 Excel最常见未响应的诱因是大量公式单元格触发了重算。转 PDF 前先在“公式 - 计算选项”切换到“手动”然后再走打印通道。我在转某个几十页的图论定理讲义时手动重算一开转换流程立刻顺畅完成。如果求稳不求原生直接复制到网页编辑器里用浏览器自带打印功能转 PDF往往比 Office 官方转换还稳。这三种方法本质上是把 Office 导出时的复杂排版引擎调用降级为打印驱动调用虽然可能丢失少许超链接、书签之类的附加属性但图论讲义内容没有被丢还能在手机端正常批注性价比相当高。2.4 给 Microsoft Print to PDF 自定义纸张尺寸有段时间我想把整理好的图论笔记打印成 A5 小册子发现系统自带“Microsoft Print to PDF”这项虚拟打印机默认纸型里根本没有 A5。需要在“打印服务器属性”里新建表单。操作路径是控制面板 - 设备和打印机 - 菜单栏“打印服务器属性” - 勾选“创建新表单”然后填入宽度 14.8cm、高度 21.0cm命名“A5 自定义”。这时再回到打印对话框纸型下拉里就能看到这个新选项了。实际上这里有一个容易忽略的细节不同型号的物理打印机对自定义纸张的支持程度不同如果是发到线上打印店最好先用虚拟 PDF 打印一份测试页量一下输出文件里内容的安全边距免得成品裁切后把页码裁掉。我后来打印图论笔记时每张纸都特意留了 2cm 的装订边这份安排最后省了不少事。3. 从“图论.pdf”到“图论 CSP”的实战核心路径3.1 精简高效的第一轮复习怎么推进电子书方便但直接捧着 600 页 PDF 从头啃十有八九撑不过前三章。我个人的学习路径是按“搜索策略 - 最短路径 - 生成树 - 网络流”这条主线推进每推进一块就立刻回到 PDF 里对应章节详细研读定理、做习题。图论书籍的习题往往非常有价值我通常会在 PDF 上直接画批注用不同颜色区分“原理”“公式”“易错点”。如果 PDF 阅读器支持自定义便签尽量把推导过程中的关键假设写在便签上复习时一眼就能唤醒记忆。这一轮下来目标不是记住每个定理的证明细节而是能把“图论 CSP”中高频出现的模型——比如状态压缩 DP 常用的“哈密顿路径”、网络流建图的“源汇拆分”与书里的章节对应起来。我自己整理了一份对照表每道真题出自书中哪个定理之后做专题复习时按图索骥效率提升非常明显。3.2 用“Web 页面 PDF 打印”实现随处可读的排版复刻有时我会把网上看到的优质图论教学博客整理成 PDF 离线阅读但网页直接打印时会面临排版混乱的问题。我的做法是先把正文复制到一个极简的 HTML 模板中然后用 Chrome/Edge 浏览器的“打印”导出为 PDF。在打印对话框里注意取消“页眉和页脚”同时开启“背景图形”这样公式中的颜色高亮和代码块底色才能完整保留。模板里设置了合适的page边距导出效果比直接右键另存为 PDF 好很多。某种意义上这也解决了一个有趣的问题手上是电子版但总有一些碎片时间适合翻纸质形式的内容。把网页资料统一打印成相同版式后装订起来搭配“图论.pdf”使用形成电子与纸质的双轨复习模式亲测挺有效。3.3 补充一些便于深挖的 PDF 解析技巧很多图论教材会带习题答案附录但答案常常藏在 PDF 里的半不可见字符中普通的 CtrlF 根本搜不到。这时就要对 PDF 做一次完整的文本层提取。用 Python 的pdfplumber或pypdf能提取出所有文本块然后再做内容筛选如果页面是影像扫描而成需要优先做 OCR如用 Tesseract 配合中文语言包如果页面本身是印刷体数字版pdfplumber.extract_text()直接就能用。我在处理一份图论习题集 PDF 时就是用pdfplumber把答案页全部提取出来再写了个脚本按关键词匹配定理名称快速定位到了十几个易错结论的位置。这个方法对准备机试类项目特别管用等于给自己的复习过程加了搜索引擎。4. PDF 处理过程中的排雷实录与避坑速查4.1 “PDF 在文件夹右侧不能预览”的解决办法换电脑后Windows 资源管理器里选中 PDF 文件右侧预览窗格总是提示“无法预览”。这个问题的根源是 PDF 预览处理程序没有正确注册或者被安全类软件禁用了。最简单的判断方法是先检查预览窗格是否打开视图 - 预览窗格。如果开着就尝试重装 Adobe Acrobat 或 福昕阅读器安装完成后预览功能通常会自动恢复。如果是系统精简版导致预览处理程序缺失可以尝试用命令行手动注册pdfpreview.dll但方法因系统版本差异较大我个人建议直接装一款带 Shell 扩展的 PDF 阅读器省时省力。4.2 PDF 转曲时的字体与边界框问题曾遇到一位朋友做的 CAD 图纸插入签字名之后导出 PDF发现“签字名边框”残留在页面上他问是不是转曲没做好。实际上这大多不是图框边框问题而是原图插入时使用了带边框的文本框且文字与背景未合并。解决思路是在原始绘图软件里取消文本框边框以纯图形方式覆盖若已经导出 PDF则需要在 PDF 编辑器里用“编辑对象”把对应的边框删除。我常用的做法是先放大到 400%确认残留的是线条还是像素如果是矢量线就用 PDF 编辑器的“编辑对象”删掉如果是扫描像素就得用“修饰”工具涂抹。这步操作不算复杂但要细心不然容易误删其他元素。4.3 其他高频故障整理工作中我踩过太多 PDF 工具坑这里整理成一张速查表方便直接定位问题。故障现象可能原因解决方案Adobe Acrobat 打开大 PDF 极慢文件包含大量未压缩图像先用 qpdf 线性化后再打开PDF 打印机打印出来的内容缺半边页面设置未选“实际大小”打印属性中取消“缩放以适合”CSDN 文章导出 PDF 后代码行被截断页面宽度未适配代码块使用浏览器打印并调整自定义边距PDF 转 Word 后数学公式乱码原 PDF 没有嵌入文本层先 OCR 再转换从 PDF 中复制中文文本出现乱码字体映射缺失更换为支持 Unicode 的阅读器4.4 按项目性质选择核心 PDF 工具市面工具五花八门我做对比后保留了这样一套组合工具定位适用场景Adobe Acrobat Pro重型编辑制作书签、优化、转曲调整Foxit PDF Reader日常阅读快速批注、轻度编辑qpdf / Ghostscript命令行处理压缩、修复损坏 PDFPyMuPDF / pdfplumber程序化开发抽取图片、文本解析、批量处理搜狗 PDF 编辑器轻量周边简单的格式转换与加水印这套组合覆盖了从“拿到图论.pdf”到“把它变成能反复用的学习资料”的全过程。我始终觉得工具的最终目标不是让自己沉迷整理而是把注意力拉回图论这个知识本体。现在再看手头这份经过压缩、重排书签、抽取过插图的 PDF它早已不是单纯的一本书更像是我自己独有的算法复习图谱。当然这个话题还可以继续延伸——比如如何用工具把图论笔记自动导出成 Anki 卡片那就是下一阶段的事了。本文还有配套的精品资源点击获取