生成用于随机测试图算法的输入?


19

在测试算法时,一种常见的方法是随机测试:根据某种分布(通常是均匀的)生成大量输入,对它们运行算法并验证正确性。给定算法签名,现代测试框架可以自动生成输入,但有一些限制。

如果输入是数字,列表或字符串,则直接生成此类输入。树比较难,但仍然很容易(使用随机的无上下文语法或类似方法)。

如何有效地生成随机图?通常,随机地均匀地选择图形不是您想要的:它们应该是连接的,平面的,无循环的或具有任何其他属性。由于潜在的大量不良图集,拒绝采样似乎次优。

有哪些有用的发行版可以查看?在这里有用意味着

  • 这些图很可能很好地测试了算法
  • 它们可以有效地产生。

我知道有很多用于随机图的模型,因此我希望能从中获得一些最了解图的模型的见解。

如果“某些算法”过于笼统,请使用最短路径查找算法作为测试中的具体算法类别。用于测试的图应该是连通的并且相当密集(具有很高的概率,或者至少在预期中)。对于测试,最佳解决方案是围绕最短路径创建随机图,以便我们知道所需的结果(而不必采用其他算法)。


这个问题是那个问题引起的。
拉斐尔

Answers:


15

具有小世界拓扑的随机图

在具有小世界拓扑的图中,节点高度聚集,但它们之间的路径长度很小。由于本地决策会迅速在全球范围内传播,因此这样的拓扑会使搜索问题变得非常困难。换句话说,快捷方式可能会误导启发式方法。进一步表明,许多不同的搜索问题具有较小的世界拓扑。

pp=0p=10<p<1p=0p=1

nknkln(n)1kln(n)

瓦特和斯特罗加兹(Watts and Strogatz)的模型颇受欢迎,但确实存在某些缺点。Walsh [2]研究了使用该模型生成的图形中的随机化和重新启动策略的影响。Virtanen [3]也发表了一篇论文,该论文涵盖了由于需要对复杂系统进行逼真的建模而激发出的其他模型。

随机简单平面图

nngngn1n91,2,8,64,1023,32071,1823707,16394784820402420291gn

gngn7/2γnn!,
gγg0.42609γ27.22687

nxnx

有关轻量级的介绍,请参见Fusy演示文稿


[1] DJ Watts和SH Strogatz。“小世界”网络的集体动力。Nature,393:440-442,1998

[2] 托比·沃尔什(Toby Walsh)。在小世界中搜索。第16届国际人工智能联合会议论文集(IJCAI-99-Vol2),第1172-1177页,1999年

[3] Satu Virtanen。非均匀随机图模型的属性。赫尔辛基工业大学A77研究报告,理论计算机科学实验室,2003年

[4] O.Giménez和M. Noy。平面图的渐近枚举和极限定律,arXiv math.CO/0501269。扩展的摘要已出现在“离散数学和理论计算机科学”杂志(2005),第147-156页中

[5] E. Fusy。平面图的二次和线性时间生成,离散数学和理论计算机科学AD(2005),125-138

[6] P. Duchon,P。Flajolet,G。Louchard和G. Schaeffer。玻尔兹曼采样器用于随机生成组合结构。组合,概率与计算,13(4-5):577-625,2004


3
+1(00)提及Boltzmann采样,恕我直言,这是功能最强大的自动随机生成演算!!
杰里米
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.