【发布时间】:2012-03-29 07:45:48
【问题描述】:
我最近实现了 Dijkstra 的算法来练习 Java。我现在正在考虑如何构建随机测试图(具有单向边)。
目前,我使用一种幼稚的方法。节点在 2d 空间中的随机位置创建(其中 x 和 y 是介于 0 和某个 MAX_SPACE 常数之间的无符号整数)。边是随机创建的以连接节点,因此每个节点的出度至少为 1(最多为 MAX_DEGREE)。不强制执行入度。然后我搜索集合中第一个和最后一个节点之间的路径,该路径可能连接也可能不连接。
在更现实的情况下,节点连接的概率与它们在二维空间中的接近程度成正比。使用该属性构建随机测试图的好策略是什么?
注意事项
我将主要使用它来构建可以手动绘制和验证的图形,但要考虑缩放到更大的图形。
应该轻松修改策略以支持以下常量(可能还有其他常量——如果您想到任何有趣的常量,请告诉我):
- MIN_NODES、MAX_NODES:图表的大小范围
- 连接性:平均出度
- PROXIMITY:优先考虑连接近端节点的权重
【问题讨论】:
-
@MadChuckle:这两个看起来都很有希望。谢谢!
-
@amit:是的,因为集群是许多现实情况的特征。但我不希望任何答案包含所有特性。
标签: algorithm graph graph-algorithm dijkstra