从随机边集生成图

时间:2016-03-11 03:18:56

标签: graph

我有一些边缘数组,如下所示:

edges = [e1 e2 e3...en]

我现在通过测试彼此相对的两条边来生成一组节点

nodes = []
for edge1 in edges:
    for edge2 in edges:
        if edge1 == edge2 continue
        nodes.append[create_node(edge1, edge2)]

我需要做的是现在创建一个连接节点边缘的图形。像这样:

Graph Example

然而,在这种情况下,我只有一组边,你可以看到,我创建了一组节点,我知道两个父边的每一个。如您所见,每条边都可以是两个节点的一部分。

我不确定如何解决这个问题

1 个答案:

答案 0 :(得分:0)

假设节点具有以下结构

class Node{
  String name;
  List<Node> friendNodes = new ArrayList();
}
  1. 实例化<node name: Node>的地图,名称为nodeMap。现在保持空白。

  2. 迭代边列表。对于边e1,节点是n1和n2。

    • 检查nodeMap中是否存在节点n1和n2。如果没有加入 nodeMap;

    • 如果指向edge,则从n1到n2,然后将n2添加到节点n1的friendNodes;

    • 如果edge是无向的,则将n2添加到节点n1的friendNodes并添加节点n2的n1 friendNodes。