Java 生成大型无向加权图

Java 生成大型无向加权图,java,graph,weighted,Java,Graph,Weighted,将在JAVA中生成一个具有5K个顶点和D密度的随机大连通无向图。但是在随机V1和随机V2之间生成边需要花费很多时间。 我尝试从所有可能的边列表中删除一条已创建的边,然后从其余的边中随机选择一条,但这同样需要很多时间 您认为以随机方式为大型连通图生成边的快速方法是什么?您有N=5k个顶点。需要M=边数。它是固定的还是随机的?如果是随机数,它是一个介于1和N*N之间的数字。只需从随机化器创建一个随机数 然后一看,生成M对随机数,每对0我能想到的最简单的解决方案(可能是欺骗),就是循环遍历每个顶点,并

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


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

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


然后一看,生成M对随机数,每对0我能想到的最简单的解决方案(可能是欺骗),就是循环遍历每个顶点,并创建一条从自身到列表中下一个顶点的边。这将符合it连接的标准,然后,通过为边的起点和终点生成一个介于0和顶点列表长度之间的随机数并创建它,可以生成随机边,直到达到所需的密度。

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