如何高效地生成一个大规模(约 300k 个顶点)的随机平面图(这里的“随机”是指均匀分布)?
如何高效地生成一个大规模(约 300k 个顶点)的随机平面图(这里的“随机”是指均匀分布)?
你看过Boltzmann采样吗?可以看一下Eric Fusy的论文《线性时间内平面图的均匀随机抽样》。他的主页上提供了论文和实现,据论文介绍,该实现可以在几秒钟内生成大小为100K的实例。
首先,可以尝试生成一个满足类似平面图的限制(例如,边数≤3*顶点数-6)的随机图,并使用Tarjan的平面性检测算法在O(n)时间内检查它是否为平面图。如果不是平面图,则再次生成。但是对于300K个顶点来说,不确定效率会有多高!而且也不确定它能否给出具有均匀概率的图形。
有一些关于生成平面图的文献,可以在这里找到一篇论文:Generating Labeled Planar Graphs,其运行时间为O(n^4),但可能并不值得一试。也许那里的参考文献可以帮助您找到一些有用的内容。
祝您好运!