如下純粹我的觀點,若有錯誤望指出算法
術語表:網絡
圖的應用:地圖、計算機網絡、電路、任務調度等;計算機網絡
4種最重要的圖模型:無向圖(簡單鏈接)、有向圖(鏈接有方向性)、加權圖(鏈接帶有權值)和加權有向圖(鏈接帶有方向又帶有權值)對象
無向圖字符串
定義:圖是由一組頂點和一組可以將兩個頂點相連的邊組成的class
度數:某個頂點的度數即爲依附於它的邊的總數數據類型
路徑:在圖中,路徑是由邊順序鏈接的一系列頂點。方法
簡單路徑:簡單路徑是一條沒有重複頂點的路徑。地圖
環:環是一條至少含有一條邊且起點和終點相同的路徑。鏈表
簡單環:簡單環是一條(除了起點和終點必須相同以外)不含有重複頂點和邊的環。路徑或者環的長度爲其中所包含的邊數。
連通圖:若是從任意一個頂點都存在一條路徑到達另外一個任意頂點,咱們稱這幅圖是連通圖。一
幅非連通的圖由若干連通的部分組成,它們都是其極大連通子圖。
圖的密度:圖的密度是指已經鏈接的頂點對佔全部可能被鏈接的頂點對的比例。
在稀疏圖中,被鏈接的頂點
對不多;而在稠密圖中,只有少部分頂點對之間沒有邊鏈接。通常來講,若是一幅圖中不一樣的邊的數
量只佔頂點總數V 的一小部分,那麼咱們就認爲這幅圖是稀疏的,不然則是稠密的
二分圖:二分圖是一種可以將全部結點分爲兩部分的圖,其中圖的每條邊所鏈接的兩個頂點都分別屬於不
同的部分
一種表示圖的數據類型的API 及其實現:
public class Graph 無向圖結構定義
Graph(int V) 建立一個含有V個頂點但不包含邊的無向圖
Graph (In in)從標準輸入流中讀取一幅圖
int V() 頂點數
int E() 邊數
void addEdge(int v,int w)向圖中增長一條邊 v-w
Iterable<Integer> adj(int v) 和v相鄰的全部頂點
String toString() 對象的字符串表示
圖的表示方法:單鏈表
一些查找圖和鑑別連通份量的經典算法: