【问题标题】:Generating a large undirected weighted graph生成大型无向加权图
【发布时间】:2013-10-22 06:00:52
【问题描述】:

要生成一个 JAVA 中具有 5K 个顶点和 D 密度的随机大连通无向图。但是在随机 V1 和随机 V2 之间生成一条边需要很多时间。 我尝试从所有可能的边缘列表中消除一个创建的边缘,然后从剩余的边缘中选择一个随机的边缘,但这又需要很多时间。

您认为以随机方式为巨大的连通图生成边的快速方法是什么?

【问题讨论】:

    标签: java graph weighted


    【解决方案1】:

    您有 N = 5k 个顶点。您需要 M = 边数。它是固定的还是随机的?如果是随机的,它是一个介于 1 和 N*N 之间的数字。只需从随机数生成器创建一个随机数。

    然后看看生成 M 对随机数,每个 0

    【讨论】:

    • 我需要不断生成边,直到达到 D 密度并且图形以随机方式连接。但是在两个随机顶点(V1 = Random(图的大小)和 V2 = Random(图的大小))之间生成一条边需要很长时间。有什么办法可以改进随机函数?
    • 如果它是纯粹随机生成的,那么它可能需要非常非常长的时间。您可以尝试在每个顶点上进行多次传递并为随机顶点创建一条边,如果它已经有一定数量的边连接到该顶点,则选择另一个。这有望生成一个连通图,但它可能会创建子树。
    • javamex.com/tutorials/random_numbers/generators_overview.shtmlstackoverflow.com/questions/2523492/… 或者您可以生成 10 个 1-100 对的随机数组,并为接下来的 10 个顶点使用随机数组
    【解决方案2】:

    我能想到的最简单的解决方案(可能是作弊)是遍历每个顶点并创建一条从自身到列表中下一个顶点的边。这将满足它被连接的标准,然后您可以生成随机边,直到满足所需的密度,方法是生成一个介于 0 和边的起点和终点的顶点列表长度之间的随机数并创建它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-28
      相关资源
      最近更新 更多