【问题标题】:Generating a graph from a random set of edges从一组随机边生成图
【发布时间】:2016-03-11 03:18:56
【问题描述】:

我有一个随机顺序的边数组,如下所示

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

但是,在这种情况下,如您所见,我只有一组边,并且我创建了一组节点,其中我知道两个父边中的每一个。如您所见,每条边都可以是两个节点的一部分。

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

【问题讨论】:

  • 您想对图表做什么?有些问题可以用你拥有的任何数据来解决
  • 我希望用图表来测量盒子的大小。通过图表,我还知道边缘之间的角度。有了图表,点变得有序
  • 检查geeksforgeeks.org/…中的图形结构是如何维护的,如果添加上面创建的节点集,则可以轻松遍历边和节点集

标签: graph


【解决方案1】:

假设节点具有以下结构

class Node{
  String name;
  List<Node> friendNodes = new ArrayList();
}
  1. 实例化一个&lt;node name: Node&gt;的Map,命名为nodeMap。暂时保持空白。

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

    • 检查节点 n1 和 n2 是否存在于 nodeMap 中。如果没有添加到 节点地图;

    • 如果边是有向的,假设从n1到n2,然后将n2添加到节点n1的friendNodes中;

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

【讨论】:

    猜你喜欢
    • 2017-10-17
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多