是什么松弛
在《算法四》中,对松弛的解释是:relax the edge,看起来比较抽象,不过如果我们从生活中的实例去理解,就简单多了:
试想一根绳索,当你握着绳索的两头使劲用力拉伸时,绳子紧绷,长度会变长;而当你减小用力时,绳子松弛,长度会变短。当你没有用任何力时,此时绳子的长度最短。
这里当用力减小时,绳子收到的拉力减小,进而长度变短的过程,就是“松弛的过程”
体现在图论中,就是对于任意边 a->b,所谓的松弛操作就是通过 dist[b]=min(dist[b], dist[a]+g[a][b]) 来更新最短路的过程。
通过松弛操作,绳子变短,即起点到终点的距离逐渐趋近于最短路。
所以说,图论中常说的松弛操作就是一个“比喻”说法。它将最短路和绳子做类比。很有意思