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%
如何写ai提示词让大模型根据主题生成视频脚本json,然后让Hyperframe渲染出mp4视频?
有哪些字体使用等宽编程代码展示?
如果让演唱会歌迷的上万手机屏幕和闪光灯一起被现场中控控制闪烁?
Midjourney为啥进军医疗领域了?
python如何跟踪足球比赛指定球员全场运动标注打聚光灯合成
如何将linux服务器的文件目录映射到windows电脑磁盘?
Docling 与 MarkItDown 两个库有啥不同?
豆包收费后国产其他ai软件也会跟进收费吗?
JPEG 与 HEIF图片格式区别?
centos7版本太旧无法安装python3.11,如何在docker中运行python3.11?


