如何随机生成有界的高度生成树?


9

对于我正在从事的项目,我应该生成具有有限高度的随机生成树。

基本上,我执行以下操作:1)生成生成树2)检查可行性,如果可行,请保留它。

1)从最小生成树(Prim或Kruskal的树)开始,我添加一个不存在的边,这创建了一个循环,我检测到此循环并删除了该循环的边之一,这给了我新的生成树,然后我继续通过添加新边来生成树...

2)假设有一个特殊的顶点。对于每个顶点,从到的路径的长度应小于,其中是给定的参数。vcente[RvvVcente[Rδδ

有什么更好的(聪明的)方法吗?

PS我忘了指定另一个约束(我的错误):顶点的度也应定界。


我不确定我是否正确。在第一步中,您是否只是随机地删除了边缘,或者(可能)减小了树的高度?
萨莎

我随机添加和删除边缘。
阿曼(Arman)2010年

您能代替随机生成树的最短路径吗?它简化了事情
Yaroslav Bulatov 2010年

您有什么费用吗?您是否正在寻找具有高度和最低成本的生成树?正如@pboothe所写,您可以使用BFS就是这样。唯一的问题是BFS使用过多的内存。如果您在乎成本,可以尝试在Wikipedia中尝试使用欧式最小生成树算法(en.wikipedia.org/wiki/Euclidean_minimum_spanning_tree)。它的运行时间为,空间为。δØñ日志ñØñ
Marcos Villagra

所以您的问题有三个有界数量:树的高度,每个顶点的度数和与v_center的距离,对吗?只是有界度约束本身使问题难以解决,但我想您正在寻找一种可能快速产生解决方案的方法,而不是精确的算法。
Jagadish 2010年

Answers:


7

几年前,我正在研究有深度的生成树,它们真的很有趣。我的一些同事提出了出色的消息传递算法,但是我找不到他们可用的任何代码。我们在这里以物理学风格将其写成:http : //iopscience.iop.org/1742-5468/2009/12/P12010/。他们告诉我,它也可以在度界内使用,尽管这并未纳入论文范围。

您提出的方法,我称为Markov Chain Monte Carlo,通常是消息传递方法的竞争者。如果您有兴趣从给定图的一组边界度,边界深度生成树中随机抽取近似均匀的样本,建议您改变使用“软”边界的方法。即,不是拒绝使树违反深度限制的边交换,而是接受它,但是比不违反边界的交换的概率低。如果您有一个控制该概率降低多少的参数,则可以使违反配置的约束越来越少,直到获得几乎统一随机的可行解决方案。

最大的问题是您需要运行多长时间。由于度数最大为2的生成树是哈密顿路径,因此您应该期望任何泛型绑定在图的大小上都是指数的。但是也许您感兴趣的图在某种程度上很特别。



3

如果您的问题是从集合统一采样生成树,其中是最高为的所有所有生成树的集合,对于某些输入,则您的策略有效(即,对随机生成树进行采样并检查是否最高是)。小号小号HHH

但是,我不确定您描述的算法是否会生成随机生成树。我建议改为查看标准算法。有两种算法:Wilson算法和Aldous-Broder算法。你可以在这里看看。有一种更新的(近似)算法,但是它很复杂。

同样,可能有一种方法可以直接生成具有上限的生成树。但是我从未听说过这样的算法。


1

使用广度优先搜索!从图中的每个顶点进行BFS,选择结果树的最小高度。BFS总是以最小的跳数找到从根到其他所有顶点的路径。


你绝对是对的。我们开始使用BFS,但由于顶点的度约束而无法使用。我忘了提到这个约束(我的错误):生成的树中的顶点的度也应该是有界的。您对当前问题的回答是正确的,但我想我应该编辑我的问题。
阿曼2010年

那么,您的问题几乎肯定是通过减少度约束生成树来减少NPC-en.wikipedia.org/wiki/Degree-constrained_spanning_tree
Peter Boothe 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.