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%


