在Java中存储顶点 - 映射边

时间:2015-10-22 06:17:53

标签: java performance graph storage

我正在尝试构建一个带顶点的图形,A,B,C& D.如果存在重叠,则图必须将边缘映射到特定顶点。例如,顶点A和C重叠,因为A具有1 - > 2,C具有1 - > 4。

存储这些顶点然后检查它们的值是否相互重叠的有效方法是什么?

示例:

A 1 2 3 4  
B 9 10 12 13  
C 1 4 2 3   
D 15 16 17 18 

1 个答案:

答案 0 :(得分:0)

这取决于这些图表预计会发生变化的频率。如果它只是一次关闭,将顶点约束存储在Map<Vertex, Set<Constraint>中,计算交叉点然后将最终图形存储为邻接列表或矩阵就可以了。

你会做类似

的事情
For each vertex v:
   For each other vertex u
    if constraints(u) intersect constraints(v)
        add edge between u and v

您将得到一个对称的无向图。