图的基本概念(一)

来源:互联网 发布:铃声编辑软件 编辑:程序博客网 时间:2024/04/26 15:31
 图的基本概念


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); 
    } 




    相关文章: