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%
python如何调用openai的api实现知识讲解类动画讲解视频的合成?
html如何直接调用openai的api实现海报可视化设计及文本描述生成可编辑海报?
f12前端调试如何找出按钮点击事件触发的那段代码进行调试?
abcjs如何将曲谱播放后导出mid和wav格式音频下载?
python如何将曲子文本生成音乐mp3或wav、mid文件
python中mp3、wav音乐如何转成mid格式?
js在HTML中如何将曲谱生成音乐在线播放并下载本地?
python如何实现在windows上通过键盘来模拟鼠标操作?
python如何给win10电脑增加文件或文件夹右键自定义菜单?
python如何将音乐mp3文件解析获取曲调数据?