JavaScript图的基本构建

来源:互联网 发布:js责任链模式 编辑:程序博客网 时间:2024/06/05 20:23

引言

利用图,可以对生活中很多系统进行建模。比如交通流量,顶点表示道路交叉点,边表示街道,边的权值可以表示限速信息等。通过一定算法可得到最优路线巴拉巴拉······除此外还有很多很多系统可以通过图来建模,只要你敢想,just do it.
代码不会骗人,结果就是证据。
对以下图进行构建,目前暂不考虑权。要发展,首先得有图啊啊啊啊················

这里写图片描述


构建

 var g= new Graph(5);    g.addEdge(0,1);    g.addEdge(0,2);    g.addEdge(0,4);    g.addEdge(1,4);    g.addEdge(1,3);    g.addEdge(3,4);    g.showGraph();        /**         *  构建图类         *  parameters:vertices    顶点数         *            edges    边数         *            adj    存储相邻顶点的数组(邻接表数组,一个二维数组,如adj[1]表示存储顶点1的邻接表)         *  function:addEdge    添加相邻顶点         **/        function Graph(v) {            this.vertices = v;            this.edges = 0;            this.adj = [];            for (var i = 0; i < this.vertices; i++) {                this.adj[i] = [];                this.adj[i].push('');            }            this.addEdge = addEdge;            this.showGraph = showGraph;        }        /**         *  添加相邻顶点v,w         *  在adj[v](v顶点的邻接表里添加w)         *  相应的在adj[w](w顶点的邻接表里添加v)         *  两个顶点建立了连接关系,则全图将增加一条边         **/        function addEdge(v, w) {            this.adj[v].push(w);            this.adj[w].push(v);            this.edges++;        }        /**        *显示图        **/        function showGraph(){            var str=[];          for(var i = 0; i < this.vertices; i++){            str.push('\n'+i+'->');            for(var j = 0; j < this.vertices; j++){              if(this.adj[i][j]!=undefined){                str.push(this.adj[i][j]);              }            }          }          console.log(str.join());        }

这里写图片描述

0 0
原创粉丝点击