2015-10-22 23 views
0

我试图建立一个顶点的图,A,B,C & D.如果有重叠,图必须将一个边映射到特定的顶点,例如顶点A和顶点C重叠为A具有1→2,并且C具有1→4。在Java中存储顶点 - 映射边线

将存储这些顶点然后检查它们的值是否彼此重叠的有效方式是什么?

例子:

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

一般而言,由于提供了很少的信息和示例 - 听起来像您想要使用“HashSet”或“HashMap”。 –

+0

你能举出更多的例子吗? – throwit

回答

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 

您将结束与一个对称的非定向图。

+0

我稍后想向每个顶点添加额外的信息,这会改变什么吗?例如A:足球--B:网球等 – Josh123

+0

每次添加一个新约束时,都需要再次扫描整个顶点列表。如果您只是将元数据添加到不改变图形结构的顶点,则不会有任何改变。如果你能更多地解释你的用例,可能会更容易帮助你。 – tryx

+0

如何定义Map ?看起来它在Vertex之后缺少'>'是正确的?什么是约束?那只是一个变量或特定的对象? 我的用例 - 当找到所有边缘(整数之间的重叠)时,我将需要指定一个运动的顶点。每个相邻的顶点必须分配给不同的运动。因此,如果有重叠,你不能做同样的运动。 – Josh123