正如标题所说..在java中存储连接图的最有效方法是什么?
例如,假设我有多个位置以各种方式相互连接,我必须遍历图表以查看它是否已连接..任何帮助/评论都会有所帮助,谢谢!
答案 0 :(得分:5)
一个经常使用的表示是由图中所有节点索引的矩阵(二维数组),如果存在从节点M[i,j] == true
到i
的有向边,则j
。主题的变体是存储两个节点之间边缘的长度/权重(缺失边缘可以用值-1表示)。
答案 1 :(得分:1)
使用没有对称性的adjacency matrix,从而表示方向而不是简单的邻接。
答案 2 :(得分:1)
使用incidence或adjacency矩阵可以解决问题。
如果您使用邻接矩阵,如果您有很多节点,sparse matrix可能会有效使用。 Colt提供了稀疏矩阵实现。信息取自this SO post。
另外,我之前已成功使用过JUNG,所以你可能想看看它们是如何实现有向图的。
答案 3 :(得分:0)
为了查找效率 - 使用布尔矩阵(如果存在连接节点的弧,则为true,否则为false)。对于内存效率,将一个对象属性定义为其指向的(动态)对象列表。请注意,后者仅在图表中有大量节点时才有用。
答案 4 :(得分:0)
我错过了什么吗?数据已经是一个图表,只是序列化它。对于问题,因为矩阵的书面谈话是完全不成熟的。