var a = {id:'a'}, b = {id:'b'}, c = {id:'c'}, d = {id:'d'}, e = {id:'e'}, f = {id:'f'}, g = {id:'g'}, h = {id:'h'}, i = {id:'i'}; var edges = [ [a,b,2], [a,d,1], [b,c,3], [b,e,2], [c,f,1], [d,e,1], [d,g,2], [e,f,1], [f,i,4], [g,h,1], [h,i,2]];上面二个数组描述了点分布与点点之间的连线距离,请问js如何实现寻找最短的路径?
网友回复
可以参考这个代码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script type="text/javascript"> // function Vertex(label){ // this.label=label; // } function Graph(v){//图类 this.vertices=v;//结点数 this.edges=0;//边数 this.adj=[];//数组存放顶点数量 this.edgeTo=[];//存放从一个顶点到下一个顶点的所有边 for(var i=0;i<this.vertices;i++){ this.adj[i]=[];//子数组存储相邻顶点 } this.addEdge=addEdge;//添加边 this.showGraph=showGraph;//显示图 this.dfs=dfs;//深度优先搜索 this.bfs=bfs;//广度优先搜索 this.pathTo=pathTo; this.hashPathTo=hashPathTo; this.marked=[];//标识位数组 for(var i=0;i<this.vertices;i++){//给所有结点添加未访问过的标识位 this.marked[i]=false; } } function addEdge(v,w){//添加边 this.adj[v].push(w);//将w添加到v的相邻顶点列表 this.adj[w].push(v);//将v添加到w的相邻顶点列表 this.edges++;//边数加一 } function showGraph(){//显示图 for(var i=0;i<this.vertices;i++){ document.write(i+"->"); for(var j=0;j<this.vertices;j++){ if(this.adj[i][j]!=undefined){//显示和该结点相...
点击查看剩余70%