主要是對圖算法作一總結.算法
最基本的圖算法思想是dfs和bfs,dfs組要是用於考察圖的結構時使用而bfs通常用於求解無權最短路徑問題.shell
拓撲排序依賴於dfs算法,拓撲排序能夠解決事件依賴關係,強連通分支問題以及單源最短路徑問題.閉包
歐拉回路能夠使用dfs解決.spa
漢密爾頓迴路的存在性能夠用拓撲排序解決.
排序
強連通分支問題的解法能夠使用拓撲排序的解法,也能使用tarjan,二者都會用到dfs.事件
最小生成樹問題能夠使用kruskal或者prim來解決.擴展
單源最短路徑問題能夠使用Bellman-ford或者dijkstra來解決,但dijkstra不能解決負權環問題,二者都依賴於路徑路徑鬆弛技術.無環路圖能夠使用拓撲排序對Bellman-ford解法提速.搜索
單源最短路徑問題也能夠擴展來解決差分式約束系統.
im
多源最短路徑能夠使用矩陣乘法或者Floyd-warshell來解決,二者都是動態規劃解法.技術
閉包傳遞問題的思想是若是隻考慮是否可到,那麼就能夠將路徑是否可達用0,1表示,經過與或運算來進行路徑是否可達的遞推。根本的解法仍是依賴於前面的算法.
此外,對於不一樣場景使用回溯來減小路徑搜索很重要.