← 中文资源

简体中文版本

图 DFS 拓扑排序(Python)

用三色标记的深度优先搜索对有向无环图做拓扑排序并检测环。

阅读英文原文

功能说明

图 DFS 拓扑排序是一个面向data-integrity场景的python代码示例。用三色标记的深度优先搜索对有向无环图做拓扑排序并检测环。该示例展示了如何在实际项目中运用这一技术,代码结构清晰,便于理解和复用。

关键实现

该示例使用python语言实现,核心逻辑封装在函数中。代码遵循语言惯用风格,处理了边界情况,并考虑了性能与可读性的平衡。tags 标签包括:dfs、topological-sort、graph,方便在平台上检索同类示例。

使用注意

使用本示例时需要注意输入约束和边界条件。该示例为代码片段(isSnippet),可直接嵌入到项目中使用。建议在实际应用前,根据业务需求调整参数和错误处理* 建议在实际应用前,根据业务需求调整参数和错误处理策略。relatedExamples 中列出了相关的其他示例,可供参考学习。

验证方式

可通过编写单元测试验证该示例的正确性。测试应覆盖正常输入、边界值和异常情况。确保在目标运行环境中测试代码的兼容性和性能表现。updatedDate 为 2026-10-25,已通过审核并发布。

代码示例

def topological_sort(graph):
    WHITE, GRAY, BLACK = 0, 1, 2
    color = {n: WHITE for n in graph}
    result = []

    def dfs(node):
        if color[node] == GRAY:
            raise ValueError(f"cycle at {node}")
        if color[node] == BLACK:
            return
        color[node] = GRAY
        for neighbor in graph.get(node, []):
            dfs(neighbor)
        color[node] = BLACK
        result.append(node)

    for n in graph:
        if color[n] == WHITE:
            dfs(n)
    return result[::-1]