Algorithm 如何创建随机路径?

Algorithm 如何创建随机路径?,algorithm,graphics,graph-algorithm,Algorithm,Graphics,Graph Algorithm,我正在寻找一种算法,可以生成类似于此图像中的内容: 我读过关于醉酒走路的算法,但它们似乎不太符合我的需要。我不确定我是否可以通过一个经过大量修改的醉酒步行算法来实现我想要的目标,或者我是否应该寻找其他算法来处理。因为你想避免自相交,所以很难正确地进行随机步行。你可以很容易地把自己画成一个角落。我建议从跨越该区域的单个线段开始,然后将该线段分割在中间的某个位置,并将中点移位成与线段的长度成比例的随机量。对两条新线段递归重复此过程。如果最终的中点导致两条新线段中的一条与现有线段相交,请尝试使用其他

我正在寻找一种算法,可以生成类似于此图像中的内容:


我读过关于醉酒走路的算法,但它们似乎不太符合我的需要。我不确定我是否可以通过一个经过大量修改的醉酒步行算法来实现我想要的目标,或者我是否应该寻找其他算法来处理。

因为你想避免自相交,所以很难正确地进行随机步行。你可以很容易地把自己画成一个角落。我建议从跨越该区域的单个线段开始,然后将该线段分割在中间的某个位置,并将中点移位成与线段的长度成比例的随机量。对两条新线段递归重复此过程。如果最终的中点导致两条新线段中的一条与现有线段相交,请尝试使用其他中点。当线段较短时停止递归(不管您如何定义)。

该图像中的路径似乎没有交叉。这对您的应用程序很重要吗?@TedHopp是的,路径不交叉很重要。您需要的是一种自我回避的Randow步行,通常缩写为SAW。谷歌搜索它,你会发现几种生成方法,因为这是一个在物理、化学和生物学领域研究得很好且非常重要的问题。ADN、聚合物和其他现象都与这类事情有关。别指望找到简单有效的算法……FWIW,那张图像看起来像一条变形的空间填充曲线。它可能仅仅是一个a的映射,就像at的扭曲映射一样吗?为什么不雇佣5岁的孩子呢?它可能更便宜,而且有一个真正的随机源。