algorithm - 为什么 Floyd Warshall 算法只需要 O(n^2) 空间?
问题描述
我正在研究 Floyd Warshall 算法并且有一个问题。为什么这个算法只需要 O(v^2) 空间?
天真地,我知道它在 O(v^3) 中工作得很好,但是当我看到 O(v^2) 的伪代码时,我很好奇它是如何工作的。
D ← W;
for k ← 1 to n do
for i ← 1 to n do
for j ← 1 to n do
dij ← min(d_ij, d_ik + d_kj);
return D;
在这里,我们比较了 d_ij 和 d_ik + d_kj,但是由于没有上标,在 (for i) 和 (for j) 迭代期间,d_ik 或 d_kj 可能已经更新为第 k 个上标。Floyd Warshal 总是比较第 k-1 个超级脚本的加法,但这种算法有时不会。这怎么可能是真的?
解决方案
推荐阅读
- google-sheets - 如何使用 SPLIT 功能在 google sheet SPLITs 之前和之后删除任何内容
- python - ImportError:没有名为 grequests “VS 2019 Windows”的模块
- file - Gnuplot 试图从文件“警告:跳过没有有效点的数据文件,x 范围无效”中绘制数据
- c++ - 堆栈溢出(参数:0x0000000000000001、0x0000001046003F68)。细绳
- javascript - 如何填充具有无限嵌套子级的文档?
- r - R闪亮如何使列名垂直?
- flutter - Flutter 从 API 本地服务器获取数据
- html - 将度量指定为 100% 时的 Div 高度问题
- python - Parrallel .predict pytorch 模型在多处理时无限期挂起
- c++ - PEM_read_ECPrivateKey 导致分段错误:11