图论————最短路,最小生成树。
最短路:
Dijkstra:每次拓展当前未拓展的最近点 X,因为 X 不可能被再次更新,适用于正权图,适用于单源最短路问题。
它是以起点为中心,向外层层扩展。把遍历过的边放在一个集合里,每次扩展到集合中每个点的路程最短的点,把这个点放入集合,更新集合外其他点到该点的距离。
Floyd O(N 3 ):多源最短路。(经典的动态dp算法,我潜意识里认为它是搜索的)。
Spfa O(K*E):可以处理负边的情况的単源最短路。
它用了一个队列表示待优化的点,每次取出队首优化它的联通点,如果被他优化的点不在队中就入队等待优化。
为什么可以处理负边那?(当然这也不算是处理负边,最多算是判断负边)只需要记录每个点入队的次数,如果有点入队超过N次,则存在负边。
Bellman-Ford:不说也罢。
最短路:
http://www.cnblogs.com/b这个博客写的很好。