【发布时间】:2021-08-23 08:29:09
【问题描述】:
我有我写的这个算法,但我真的不知道是否可以将它转换为迭代算法。我正在尝试以立方体形状的每个节点获取邻接节点。相邻节点必须满足两个条件:
- 这是一个灰色节点。
- 在
distance的半径范围内
def find_continumm(seed, node, row, gray, xyz, distance):
"""
seed: the nodes we want to find the adjacent nodes for.
node: the candidate nodes to be in the adjacency.
row: save the nodes that are adjacent.
gray: boolean array that tells if a node is a gray or not.
xyz: the 3 dim of the shape.
distance: the radius
"""
node_ravel = np.ravel_multi_index(node, xyz)
if node_ravel in row or ~gray[node_ravel] or math.dist(node, seed) > distance:
return
row.add(node_ravel)
if node[0] < xyz[0]:
node[0] = node[0] + 1
find_continumm(seed, node, row, gray, xyz, distance)
node[0] = node[0] - 1
if node[0] > 0:
node[0] = node[0] - 1
find_continumm(seed, node, row, gray, xyz, distance)
node[0] = node[0] + 1
if node[1] < xyz[1]:
node[1] = node[1] + 1
find_continumm(seed, node, row, gray, xyz, distance)
node[1] = node[1] - 1
if node[1] > 0:
node[1] = node[1] - 1
find_continumm(seed, node, row, gray, xyz, distance)
node[1] = node[1] + 1
if node[2] < xyz[2]:
node[2] = node[2] + 1
find_continumm(seed, node, row, gray, xyz, distance)
node[2] = node[2] - 1
if node[2] > 0:
node[2] = node[2] - 1
find_continumm(seed, node, row, gray, xyz, distance)
node[2] = node[2] + 1
【问题讨论】: