【发布时间】:2015-08-31 08:18:21
【问题描述】:
基本上,我想随机移动一个 300 x 250 的区域。然而,在点 18750 和 9300 有一些感兴趣的区域(你可以通过做
y = 0
while(num > x):
num = num - x
y += 1
你会得到坐标)。无论如何,所以如果起点是(0,0),我希望能够在该区域内随机移动,但在两个给定点的一般区域内移动。也许一个有更强的拉力,因此即使节点遍历导致更弱的节点,它也会在足够的时间后到达拉力更强的节点。
到目前为止,我有这个是为了创建我的图表并创建我的顶点和边。它给了我一个 300x250 的空间,每个节点垂直和水平连接。 `
from igraph import *
g = Graph()
x = 300
y = 250
g.add_vertices(x*y)
li = []
for i in range(x-1):
for j in range(y):
li.append((i+j*x, i+1+j*x))
for i in range(x):
for j in range(y-1):
li.append((i+j*x, i+x+j*x))
g.add_edges(li)
gravity_points = [18750, 9300]
final_point = 24900
` 我该怎么办?我想让移动节点必须在每个静止节点上做出选择,但它在任何方向上移动的概率完全取决于重力点的权重。所以它可能有 10% 的机会向左走,有 10% 的机会向右走,有 50% 的机会向下走,还有 30% 的机会向上走。类似的东西。概率不必随着接近度而改变,而是随着重力点所在的方向而改变。
欢迎任何帮助!提前谢谢你。
【问题讨论】:
-
“方向”是什么意思?你的意思是,好像这些点在平面上?那么每次你朝着正确的方向移动时,你会减少曼哈顿距离吗?您是在问如何进行移动(即如何表示移动节点并更改其 x 和 y),还是在问如何对选择进行加权?
-
当我说“方向”时,我的意思差不多。南北西东。想象一下它在您所说的飞机上,并且每个正确的方向都会减少距离。我对@strubbly 的要求是我如何权衡选择并根据我拥有的图表做出决定,或者如果您有其他建议,我也很乐意接受!
-
老实说,我真的不知道你在哪个部分遇到了麻烦。您有四个选择,并且您想根据加权概率进行选择。如果你知道权重,这可以在 Python 中使用随机函数轻松完成。尽管您没有指定要使用的方案,但设置权重应该很简单。可以通过比较移动节点和重力点的 x 和 y 坐标来了解应该加权的方向。还需要什么?
-
我想我很难想出一种遍历它的方法。让旅行节点在旅行每个节点后做出“加权随机”决策。 @strubbly
标签: python random graph traversal weighted