这就是【2】中说的
dijkstra算法保证了已经出堆的状态不会再被严格意义上松弛, 但是非严格意义上被松弛还是有可能的....而正确的顺序应该是这样的
(2,0)先出堆,去非严格松弛(3,0),使得(3,0)的num值, 即num[3][0]变成2,然后(3,0)再去严格松弛(4,1),使得(4,1)的num值, 即 num[...(3,0)先出堆,去严格松弛(4,1),使得(4,1)的num值, 即num[4][1]变成1,然后(2,0)再去非严格松弛(3,0),使得(3,0)的num值, 即 num[3][0]变成2, 可是...其次, 在松弛其他弧的时候, 对于已经达到最短路的点不需要去松弛(即已经出过堆的点),例如上图中出堆的(3,2)不需要去松弛已经出堆的3,因为3已经达到最短路2了(如果存在还能真正意义上松弛(即真的能减小距离...特别地, 如果是正权(有向)图, 则所有的松弛都是严格意义上的松弛, 所以对于正权(有向)图,dijkstra算法保证了已经出堆的元素后续甚至不可能发生非严格意义上的松弛.