-
图论是一个非常大的话题
-
图论是数学的一个分支,研究事物之间的关系,顶点表示事物,边表示两个食物的关系
-
图有一组顶点和一组边,可以是有向的,也可以是无向的
-
图的术语
- 顶点:图中的一个节点
- 边:顶点和顶点的连线
- 相邻节点:由一条边连接的节点
- 度:是一个顶点的相邻节点的数量
- 简单路径:要求不包含重复的顶点
- 回路:第一个顶点和最后一个顶点相同的路径称为回路
- 无向图:边是有方向的
- 有向图:边是无方向的
- 无权图:边没有携带权重
- 带权图:边有一定的权重
-
图的表示法:
-
邻接矩阵:二维数组
-
邻接表:顶点与相邻顶点列表组成,用数组/链表和字典都可以
-
-
图结构的封装
//用邻接表封装
function Graph(){
//属性
this.vertexes = []; //顶点
this.edges = new Dictionay(); //边
//方法
//1.添加顶点
Graph.prototype.addVertex = function(v){
this.vertexes.push(v);
this.edges.set(v,[]);
}
//2.添加边
Graph.prototype.addEdge = function(v1,v2){
this.edges.get(v1).push(v2);
this.edges.get(v2).push(v1)
}
//3.toString方法
Graph.prototype.toString = function(){
var resultString = "";
for(var i = 0; i<this.vertexes.length;i++){
resultSring += this.vertexes[i] + "->"
var vEdges = this.edges.get(this.vertexes[i]);
for(var j = 0;j<vEdges.length;j++){
resultString += vEdges[j] + ''
}
return resultString;
}
}
}