spfa基于bellman-ford算法,是bf算法的优化版本,基于bfs。原bf算法中需要对图中的所有边进行迭代,显然,有一些边是不需要迭代的,可它还是会进入循环并判别一次。spfa通过队列,将需要进行迭代的点存储起来,只对队列里的点进行判定,从而大幅度见减少无用循环。
堆优化dijkstra算法说到底还是dijkstra,以当前状态下的最优解为基础,去寻找原最优解对应的新最优解(所以你会看到continue)。堆只是将里当前状态点最近的还未被判别的点排序,并输出最可能是最有解的点(最近的)。