DFS 版本通过函数调用隐式地使用一 个栈,而 BFS 版本使用 4. prev 数组。 性能比较 两个版本的时间复杂度均为 O(V? E)。DFS 的优点是思路清晰、代码 量少,但是性能不如 BFS。我测试了两种算法的性能。对于稀疏图, BFS 版本明显快于 DFS 版本;而对于稠密图两者则不相上下。在完 全随 机数据 9000 个顶 点 4,0000 条边 时前者领先后 者大约 97.6% , 9000 个顶点 100,0000 条边时前者领先后者 8.6%, 而达到 500,0000 条边时 BFS 仅领先 0.85%。 补充定义和定理: 最大匹配数:最大匹配的匹配边的数目 最小点覆盖数:选取最少的点,使任意一条边至少有一个端点被选择 最大独立数:选取最多的点,使任意所选两点均不相连 最小路径覆盖数:对于一个 DAG(有向无环图),选取最少条路径, 使得每个顶点属于且仅属于一条路径。路径长可以为 0(即单个点)。 定理 1:最大匹配数 = 最小点覆盖数(这是 Konig 定理) 定理 2:最大匹配数 = 最大独立数 定理 3:最小路径覆盖数 = 顶点数 - 最大匹配数