图
图是一种复杂的非线性结构,它由边(边Edge)和点(顶点Vertex)组成。一条边连接的两个点称为相邻顶点。
G = (V, E)
图分为:
有向图
无向图
本文探讨的是无向图
图的表示
图的表示一般有以下两种:
邻接矩阵:使用二维数组来表示点与点之间是否有边,如 arr[i][j] = 1表示节点 i 与节点 j 之间有边,arr[i][j] = 0表示节点 i 与节点 j 之间没有边
邻接表:邻接表是图的一种链式储存结构,这种结构类似树的子链表,对于图中的每一个顶点Vi,把所有邻接于Vi的顶点Vj链成一个单链表,这个单链表就是顶点Vi的邻接表,单链表一般由数组或字典结构表示。
创建图
下面声明图类,Vertex 用数组结构表示,Edge 用 map结构表示
functionGraph() {this.vertices = [] //顶点集合
this.edges = new Map() //边集合
}
Graph.prototype.addVertex= function(v) { //添加顶点方法
this.vertices.push(v)this.edges.set(v, [])
}
Graph.prototype.addEdge= function(v, w) { //添加边方法
let vEdge = this.edges.get(v)
vEdge.push(w)
let wEdge= this.edges.get(w)