[英]Weighted Directed Graph Representation in JavaScript
在 javascript 中表示加权有向图的最佳方法是什么(用于基本操作 dfs、bfs 等)? 我尝试了几种方法,想知道是否有更多的共识。
我的第一种方法是将每个键 map 连接到一组连接。 连接具有“其他”键和表示权重的值。
interface Connection {
key: string;
value: number;
}
export default class Graph {
size: number = 0;
adj: Map<string, Array<Connection>> = new Map();
constructor(size: number) {
this.size = size;
}
另一种方法可以让连接存储一个从到和这样的权重。 我认为这有点多余,因为键是 from 键:
interface Connection {
from: string;
to: string;
weight: number;
}
export default class Graph {
size: number = 0;
adj: Map<string, Array<Connection>> = new Map();
constructor(size: number) {
this.size = size;
}
最后我在想我可以用地图设置这样的东西:
interface Metadata {
weight: number;
metadata2: string;
...
}
export default class Graph {
size: number = 0;
adj: Map<string, Map<string, Metadata>> = new Map();
constructor(size: number) {
this.size = size;
}
我的目标实际上只是创建一些灵活的东西,以便我可以对其进行不同的图形操作和算法。 使用带有元数据的两个地图而不是使用连接的想法有什么缺点吗? 我只是想听听别人的意见,而不是我自己的意见。 我已经能够使用连接的想法成功地实现我尝试过的所有内容,但最近又考虑使用两个级别的地图用于往返节点。 这有什么缺点吗? 有人有更好的方法吗? 如果没有元数据,我可以很容易地表示边缘,但是加上权重,我很好奇人们是如何在 js 中表示这个的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.