当前位置: 首页 > 知识库问答 >
问题:

生成边均匀分布的随机图

乜业
2023-03-14

我试图找到一种有效的算法来生成一个给定节点数的简单连通图。类似于:

Input:
    N - size of generated graph
Output:
    simple connected graph G(v,e) with N vertices and S edges, The number of edges should be uniform distribution.

共有3个答案

欧阳衡
2023-03-14

一种非常常见的随机图生成html" target="_blank">算法(在许多学术著作中使用)基于RMat方法,或Kronecker图形式的泛化。这是一个简单的迭代过程,使用很少的参数,易于扩展。

这里有一个非常好的解释(包括为什么它比其他方法更好)-http://www.graphanalysis.org/SIAM-PP08/Leskovic.pdf

在许多图形基准测试套件中都实现了这两个版本,例如。

>

  • 带有rMat生成器的子目录的BFS基准-http://www.cs.cmu.edu/~pbbs/benchmarks/breadthFirstSearch.tar

    Kronecker图形生成器(包括c和matlab代码)——http://www.graph500.org/sites/default/files/files/graph500-2.1.4.tar.bz2

  • 韦业
    2023-03-14

    这可能有点令人惊讶,但如果你(随机)选择log(n)边(其中n-最大边数),那么你几乎可以确定你的图形是连接的(一个参考)。如果边的数量远低于log(n),则几乎可以确定图形已断开连接。

    如何生成图形:

    GenerateGraph(N,S):
        if (log(N)/N) > S) return null // or you can take another action
        V <- {0,...,N-1}
        E <- {}
        possible_edges <- {{v,u}: v,u in V} // all possible edges
        while (size(E) < S):
            e <- get_random_edge(possible_edges)
            E.add(e)
            possible_edges.remove(e)
        G=(V,E)
        if (G is connected)
            return G
        else
            return GenerateGraph(N,S)
    

    如果你需要更多的指导,请告诉我。(顺便说一句。现在我正在处理完全相同的问题!如果你需要生成一些更复杂的图形,请告诉我:-))

    南门棋
    2023-03-14

    您可能希望首先创建一个最小生成树以确保连通性。之后,随机生成两个节点(尚未连接)并连接它们。重复以上步骤,直到你有足够的边缘。

    对于最小生成树,最简单的方法是从一个随机节点作为树开始。对于每个剩余的节点(随机排序),将其连接到树中的任何节点。您选择树中的节点(要连接到)的方式定义了边/节点的分布。

     类似资料:
    • 问题内容: 我知道如果我使用Java的Random生成器,并使用nextInt生成数字,则数字将均匀分布。但是,如果我使用2个Random实例,并使用两个Random类生成数字,会发生什么。数字是否会均匀分布? 问题答案: 每个实例生成的数字将均匀分布,因此,如果将两个实例生成的随机数序列组合在一起,则它们也应均匀分布。 请注意,即使结果分布是均匀的,您也可能要注意种子,以避免两个生成器的输出之间

    • 问题内容: 我试图识别/创建一个函数(在Java中),该函数给我一个非均匀的分布式数字序列。如果我有一个函数说它将给我一个从到的随机数。 该函数最适合任何给定的函数,下面仅是我想要的示例。 但是,如果我们说函数将返回来自分布式的s nonuni。 我想例如说 约占所有案件的20%。 大约是所有情况的50%。 约占所有案件的20%。 大约是所有情况的10。 总之somting,给我一个数字,如正态分

    • 问题内容: 您能告诉我任何生成非均匀随机数的方法吗? 我正在使用Java,但是代码示例可以随心所欲。 一种方法是通过将两个统一的随机数加在一起(即滚动2个骰子)来创建歪斜分布。 问题答案: 您想要什么分布的偏差? 这是一种始终有效的技术,但并不总是最有效的。累积扰动函数P(x)给出值低于x的时间的分数。因此,在x的最小可能值处P(x)= 0,在x的最大可能值处P(x)= 1。每个分布都有一个唯一的

    • 本文向大家介绍python随机数分布random均匀分布实例,包括了python随机数分布random均匀分布实例的使用技巧和注意事项,需要的朋友参考一下 因为概率问题,所以需要测试一下python的随机数分布。到底是平均(均匀)分布,还是正态(高斯)分布。 测试代码如下: 测试结果: 结果说明: 平均(均匀)分布。 以上这篇python随机数分布random均匀分布实例就是小编分享给大家的全部内

    • 0.1-0.2:********** 0.2-0.3:******** 0.3-0.4:********* 0.5-0.6:********* 0.6-0.7:********* 0.7-0.8:********* 0.4-0.5:********* 0.5-0.6:********* 0.6-0.7:********* 0.1-0.2:********* 0.2-0.3:********* 0.

    • 本文向大家介绍Python随机生成均匀分布在三角形内或者任意多边形内的点,包括了Python随机生成均匀分布在三角形内或者任意多边形内的点的使用技巧和注意事项,需要的朋友参考一下 Python有一随机函数可以产生[0,1)区间内的随机数,基于此函数生成随机分布在任意三角形内的点 由数学知识得知: 几何体的向量表达形式 直线: 线段: 推广到高维 三维平面: 三角形: 注释,v这个向量表示的是在图形