1. 概念
拓扑排序是是一种针对有向无环图进行的排序方法。它将图中所有顶点排成一个线性序列,使得对于图中的每一条有向边(u, v),顶点u在序列中都出现在顶点v之前。
适用范围:
- 拓扑排序只适用于有向无环图。
结果非唯一:
- 对于同一个图,可能存在多个合法的拓扑排序序列。
不存在拓扑排序的情况:
- 如果图中含有环,则无法进行拓扑排序,因为环内的节点无法确定先后。
2. 思路1(基于队列):
初始化:
找到所有入度为0的节点,并将它们加入到队列。
迭代过程:
从队列中取出一个节点并输出;对于该节点指向的所有邻接节点,减少它们的入度值。如果某个邻接节点的入度变为0,则将其入队。
结束条件:
队列为空时停止。如果输出的节点数量等于图中总节点数,则拓扑排序成功;否则说明图中有环。
3. Java代码实现
@Test
public void test() {
Vertex v1 = new Vertex("网页基础");
Vertex v2 = new Vertex("JAVA基础");
Vertex v3 = new Vertex("数据库");
Vertex v4 = new Vertex("JAVA WEB");
Vertex v5 = new Vertex("Spring框架");
Vertex v6 = new Vertex("微服务框架");
Vertex v7 = new Vertex("实战项目");
// JDK版本太低,用不了of方法
v1.edges = new ArrayList<>();
v1.edges.add(new Edge(v4));
v2.edg

最低0.47元/天 解锁文章
3177

被折叠的 条评论
为什么被折叠?



