+
95
-

js如何实现寻找最短的路径?

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如何实现寻找最短的路径?

网友回复

+
15
-

可以参考这个代码

<!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%

我知道答案,我要回答