繁体   English   中英

用于在Javascript中表示DAG的数据结构

[英]Data Structure to represent a DAG in Javascript

我有一个字符串,我需要使用javascript解析成图形(DAG)数据结构。 数据结构中包含我应该存储的一些属性,例如节点的id,名称以及如果链接存在于另一个节点,则给予该链接的标签。 所以,一个例子就是

Node1 (id: 1, name: 'first') --('link name')--> Node2 (id:....)

等等。 一旦创建了数据结构,除了读取它之外,我不需要再对它进行任何操作(稍后我将使用它来渲染d3的可视化)。 节点数量不会很多,因为其中一些节点是共享的。

我想象一个邻接列表,但我不确定如何在javascript中编码。 例如,我知道一个json对象可以有一个“field”:“value”结构,但我可以用Object:[相邻对象列表]吗?

你可以在json中使用列表(数组)。 例如,我可以将简单的有向图表示为

{
  "NodeA": {"name": "NodeA", "adjacentTo": ["NodeB", "NodeC"]},
  "NodeB": {"name": "NodeB", "adjacentTo": ["NodeC", "NodeD"]},
  "NodeC": {"name": "NodeC", "adjacentTo": ["NodeA"]},
  "NodeD": {"name": "NodeD", "adjacentTo": []}
}

这将是图表:

C
^^
| \
|  \
A -> B -> D

实际上不需要名称字段,但您可以将所需的任何属性与节点相关联。

JavaScript对象必须具有字符串键,但可以存储任何类型的值。 当然,id中的整个点是允许您用简单的类型表示复杂类型。

var adjacentTo = {};
adjacentTo[node1.id] = [node2, node3]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM