图算法的核心是:searching the graph。因为可以借此获得graph structure的信息。
一,如何表示一个图?
G=(V,E)
1. adjacency-list(用的多,有向无向都可以用):an array,Adj, of |V| lists, each list contains all adjacent vertices of Vi;
也表示了图的edges,无向图总数等于2|E|, 有向图总数=|E|。
advantage: 空间省,O(V+E),sparse的图
disadvantage: 判断edge (u,v)是否存在,只能去Adj[u]里面查找v.
2. adjacency-matrix(特殊要求下使用): A
对无向图来说,A=A^T.如果需要,可以只存对角线的上一半。
advantage: 可以快速知道edge(u,v)是否存在。对unweighted图来说,o