我正在尝试构建一个带顶点的图形,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
答案 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
您将得到一个对称的无向图。