圖的基本概念(一)

 圖的基本概念


1.什麼是圖
    圖是一種和樹相象的數據結構,通常有一個固定的形狀,這是由物理或抽象的問題來決定的。
2.鄰接
    如果兩個頂點被同一條邊連接,就稱這兩個頂點是鄰接的。

3.路徑
    路徑是從一個頂點到另一個頂點經過的邊的序列。

4.連通圖和非連通圖
    至少有一條路徑可以連接所有的頂點,那麼這個圖就是連通的,否則是非連通的。

5.有向圖和無向圖
    有向圖的邊是有方向的,如只能從A到B,不能從B到A。
    無向圖的邊是沒有方向的,可以從A到B,也可以從B到A。

6.帶權圖
    在有些圖中,邊被賦予了一個權值,權值是一個數字,它可以代表如兩個頂點的物理距離,或者是一個頂點到另一個頂點的時間等等.這樣的圖叫做帶權圖.

7.用程序來實現圖.

(1) 數組表示法




Vertex.java
 
package ch18; 
/** 
 * 頂點類 
 * @author gzw
 * 
 */
 
public class Vertex { 
    private char label; //表示A,B,C,D,E,F... ...等頂點
 
    public Vertex(char label) { 
        this.label = label; 
    } 



Graph.java
 
package ch18; 
/** 
 * 圖 
 * @author Administrator 
 * 
 */
 
public class Graph { 
    //頂點數組 
    private Vertex[] vertexList; 
    //鄰接矩陣 
    private int[][] adjMat; 
    //頂點的最大數目 
    private int maxSize; 
    //當前頂點 
    private int nVertex; 
 
    public Graph(int maxSize) { this.maxSize = maxSize; vertexList = new Vertex[maxSize];
        vertexList = new Vertex[maxSize]; 
        adjMat = new int[maxSize][maxSize]; 
        for(int i = 0; i < maxSize; i++) { 
            for(int j = 0; j < maxSize; j++) { 
                adjMat[i][j] = 0;  //初始條件:所有頂點都不相連(無邊)
            } 
        } 
        nVertex = 0
    } 
 
    /** 
     * 添加頂點 
     */
 
    public void addVertex(char label) { 
        vertexList[nVertex++] = new Vertex(label); 
    } 
 
    /** 
     * 添加邊 
     */
 
    public void addEdge(int start,int end) { 
        adjMat[start][end] = 1
        adjMat[end][start] = 1
    } 
}


TestGraph.java
 
package ch18; 
 
public class TestGraph { 
    public static void main(String[] args) { 
        /*Graph g = new Graph(); 
        g.addVertex('A'); 
        g.addVertex('B'); 
        g.addVertex('C');*/
  char[] vertexs = new char[]{'A','B','C'}; //初始化頂點 for(int i=0;i<vertex.length;i++){ g.addVertex(vertex[i]); } //初始化邊
        g.addEdge(01); 
        g.addEdge(02); 
        g.addEdge(12); 
    } 




  • 相關文章:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章