课程 283 / 365
78%
数据结构与算法直觉·判断·13 分钟
正文已完成

多父节点、双向关系与环需要图

用关系约束判断树何时失效,并识别有向、无向和循环图。

L283

图允许节点之间出现多条连接、多个方向和循环。真实关系一旦出现多父节点或环,就应使用图来表达。

这一课的结果

能判断一组关系是否超出树的表达能力,并选择合适的图关系类型。

核心概念

先把关键判断说清楚

01

多父节点打破树约束

一门课程可以同时依赖两个前置能力,一个组件也可能被多个页面使用。

02

方向表达依赖或流向

A 依赖 B 与 B 依赖 A 含义不同;关注、调用和数据流通常要用有向边。

03

环必须被显式治理

循环依赖可能合法也可能造成死锁;遍历时需要访问标记和停止条件。

案例拆解

学习路线不是单根目录

“Agent 评测”课程既依赖“工具调用”,也依赖“评测指标”,并且会被产品与工程两条路线引用。

  1. 01

    把课程作为节点,前置关系作为有向边。

  2. 02

    把路线引用作为另一类边,不强行复制同一课程节点。

  3. 03

    在发布前检测前置关系环,若 A 与 B 互为前置则要求课程作者修正。

案例结果

同一课程可拥有多个前置和多个使用路线,同时循环前置能被提前发现。

提交前练习

现在轮到你

审查一个看似层级的数据,判断它是否包含多父、双向或循环关系。

内容会自动保存在当前设备
查看参考答案与评分标准

参考答案

节点是软件包;边是A→B 表示 A 依赖 B;树破口是多个包可依赖同一库,一个包也有多个依赖;环处理是发布前拒绝直接或间接循环依赖并返回完整路径。

评分标准

  • 节点和边没有混淆
  • 明确指出树为何不足
  • 环处理含可执行规则

本课收口 · 学习证据

完成,不等于随手打一个勾。

确认阅读、保存练习,再用 30 秒检查和一句话总结留下真实学习证据。

0 / 3
02完成本课练习0 / 4 项必填内容已填写
03通过理解检查约 30 秒
哪种关系最明显需要图而不是普通树?
你现在更接近哪一种状态?
完成上面三项后,才能把本课记为已验证。

资料来源

继续核对与延伸阅读

本课内容最近更新于