图论 -- 拓扑排序

介绍

我们把做从准备食材,做菜到摆盘当作一个项目工程

当我们每次只能做一个活动,并且我们想要得出完成整个项目工程的顺序

并且这个顺序要确保我们能完成整个工程

图论 -- 拓扑排序_第1张图片

难道还有一个顺序是我们没法完成这个工程的?不是从左到右依次做就行了吗?

还真有,例如

准备食材,切番茄,打鸡蛋,炒鸡蛋,下番茄,混合翻炒,放调料,紫菜蛋花汤,摆盘

也可以按照这样的方式进行

准备食材,紫菜蛋花汤,切番茄,下番茄,打鸡蛋,炒鸡蛋,混合翻炒,放调料,摆盘

又或者这样的方式进行

准备食材,切番茄,下番茄,打鸡蛋,紫菜蛋花汤,炒鸡蛋,混合翻炒,放调料,摆盘

但是不能以这样的方式去进行

准备食材,切番茄,下番茄,混合翻炒,打鸡蛋,下鸡蛋,放调料,紫菜蛋花汤,摆盘

因为都还没有鸡蛋,哪来的混合翻炒

到这里,我们就能看出拓扑排序的作用了

就是保证我们的项目工程能够实现,具有实际意义

核心就一点:在每个活动开始时,保证它的所有前驱活动都已完成

例如,混合翻炒这个活动的所有前驱活动就是

准备食材,切番茄,下番茄,打鸡蛋,炒鸡蛋

但紫菜蛋花汤并不属于混合翻炒的前驱活动,而是属于摆盘的前驱活动

实现

定义

你可能感兴趣的:(数据结构和算法)