为了数据交换的目的,我正在研究可能被认为是 XML 格式的有限深度图的表示形式。问题点是如何引用边缘标签中的节点。我看到的两种策略是 a) 使用唯一标识符或 b) 使用路径。
唯一 ID:
<graph id="g0">
<node id="n0"/>
<node id="n1"/>
<edge from="n1" to="n0"/>
</graph>
<graph id="g1">
<node id="n2"/>
</graph>
<edge from="n2" to="n1"/>
路径:
<graph id="0">
<node id="0"/>
<node id="1"/>
<node id="2"/>
<edge from="1" to="0"/>
<edge from="2" to="1"/>
</graph>
<graph id="1">
<node id="0"/>
</graph>
<edge from="1:0" to="0:2"/>
这类事情的标准程序是什么?从我收集到的信息来看,唯一标识符方法似乎更为普遍。我的问题是当图表变得非常大时,有:
- 一个非常大的哈希表的必要性,该哈希表将对象映射到它们的 ID,以便从 XML 文件读取/写入边缘。
- 文件本身比使用路径编写的文件大,因为如果边缘在图形内部,则不能省略冗余路径组件。
想法?
更新 1:
请注意,它不是一个平面图。它的一个或多个图形相互连接。它们每个都有本地索引的元素,但是将它们全部展平并跟踪它们的边缘有点麻烦。
更新 1.1:注意到 GraphML 中的子图,它们实际上使用了复杂的键,从而可以将本地节点 id 与全局节点分开。
更新 2:
是的,显然这不是格式良好的 XML,缺少标记和各种模式声明。