Floyd-Warshall 算法概念

Floyd-Warshall 算法演示

请生成图或选择示例开始演示

控制面板

5
0.6
允许

动画控制

1.0x
点击 "生成随机图" 或 "加载示例图" 来初始化。然后使用控制按钮开始或单步执行算法。

图结构可视化

Floyd-Warshall 算法 C++ 核心实现
// V 是顶点数量, INF 是无穷大 void floydWarshall(vector<vector<int>>& dist) { int V = dist.size(); // k 是中间顶点 for (int k = 0; k < V; k++) { // i 是起始顶点 for (int i = 0; i < V; i++) { // j 是结束顶点 for (int j = 0; j < V; j++) { // 如果 dist[i][k] 或 dist[k][j] 是无穷大, 跳过 if (dist[i][k] != INF && dist[k][j] != INF) { // 松弛操作: 尝试通过 k 更新 i 到 j 的距离 if (dist[i][k] + dist[k][j] < dist[i][j]) { dist[i][j] = dist[i][k] + dist[k][j]; } } } } } }

距离矩阵 (初始状态 D-1)

↓ S \\ T →