图的javascript实现
图的概念
图:关于图的概念就大概说一下基本的,图分成有向和无向。图由若干顶点构成,顶点相连成边,边由顶点对组成,(假设有v1,v2两顶点,(v1,v2)即为一条边)每个顶点有权重,对于图的概念可以自行Google,本文着重对图的实现,上两张“图”的例子:
有向图:
无向图:
图的存储
使用邻接表:
以顶点值为下标,构建数组,元素为与该顶点相连的顶点值,下面例子就是用邻接表存储。假设有顶点v1、v2、v3,且有边(v1, v2)、(v1, v3)、(v2, v3)1
2
3
4var edges = [];
edges[v1] = [v2, v3];
edges[v2] = [v1, v3];
edges[v3] = [v1, v2];使用邻接矩阵:
临界矩阵,简单说是个二维数组,假设有顶点v1、v2,并且v1、v2有边相连,则用邻接矩阵表示为:1
2
3
4var edges = [];
edges[v1][v2] = 1;
// 若无边相连则为
edges[v1][v2] = 0;
图的javascript实现
下面以上文中的无向图为例
1 | function Graph() { |
PS:图当然是没有那么简单的啦,想了解图自己去看书吧