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自动帮你接管操作电脑的mcp服务?
mcp为啥用Streamable HTTP 替代 HTTP + SSE?
scratchjr有没有开源的前端html网页版本源代码?
多模态大模型能否根据ui交互视频来来模仿写出前端交互动画效果ui代码?
如何用阿里云oss+函数计算fc+事件总线EventBridge+消息队列+数据库+redis缓存打造一个高并发弹性系统?
阿里云函数计算 FC如何在海外节点搭建一个代理网络?
ai studio中gemini build的代码如何发布到github pages等免费网页托管上 ?
如何在cursor、qoder、trae中使用Claude Skills功能?
有没有不用u盘就能重装系统的开源工具?
python如何固定摄像头实时计算停车场停车位剩余数量?


