生成强连通,均匀分布的随机二元图

时间:2015-04-14 15:32:42

标签: algorithm random directed-graph motzkin-numbers

所以我一直在构建一个程序,使用蒙特卡罗模拟来找到进化图论的属性。其中一个关键功能是能够生成均匀分布的随机图,以便我们可以确定图的广义属性。对于连接无向图的情况,我已经实现了this回答中概述的解决方案。

然而对于有向图,生成从Wilson算法得到的单向均匀生成树并不能确保图形是强连通的,并且似乎添加了额外的边来进行跨越树双向会在您生成的图形中引入偏差。

我觉得我可能会遗漏一些明显/误解的东西,但基本上我的要求是,有人可以向我推荐一个高级方案,它允许我生成强连接,均匀分布的随机图形吗?

2 个答案:

答案 0 :(得分:3)

我能想到的最简单的解决方案是随机生成均匀分布的有向图并拒绝任何没有强连接的有向图。这将保持均匀分布并保证您想要的财产。这可能不是非常有效,但你肯定知道你是否进行了一些测试。

答案 1 :(得分:2)

  

有人可以向我推荐一个允许我生成强连通,均匀分布的随机图的高级方案吗?

我在为测试数据生成表达式树时遇到了类似的问题。我发现,如果你发现如何计算独特的树木,那么问题就变得容易了。我的意思是,我发现对于具有N个内部节点的完整二叉树,基于N的唯一树的数量是Catalan Numbers。然后,对于具有N个总节点的一元分支的二叉树,基于N的唯一树的数量是Motzkin Numbers

然后我找到了The On-Line Encyclopedia of Integer Sequences®。因此,如果您知道一个值N,它可以唯一地标识图形,并且您知道该N的唯一图形的相应计数,并将这些计数放入OEIS搜索中,您应该返回一个可以帮助您进行搜索的页面。例如Catalan Numbers表示完整二叉树,Motzkin Numbers表示常规二进制树。在此过程中,我发现生成它们的关键之一是recurrence relation

或者您可以在搜索中使用关键字,但这可能不会受到严重影响。我只使用数字序列而不是通过关键字找到了Motzkin数字。

以下是strongly connected digraph

的OEIS查询

现在,如果您知道给定N的计数,并且您要么生成给定N的所有图形,要么可以在值和图形之间具有一对一的对应关系,那么您只需生成随机整数并获取/生成相应的图形。如果我理解你的问题,这应该解决它。

我对这个问题的OEIS序列的最佳猜测是:

具有n个未标记节点的非循环有向图的数量。 A003087

其中引用了Uniform random generation of large acyclic digraphs

TL; DR

对于某些相关历史记录,请参阅我的问题:Algorithm improvement for enumerating binary trees