python积最大的分解,python - 递归尾部消除消除Python中的四叉树分解 - 堆栈内存溢出...

使用Python,是否有可能消除四叉树实现中的多个递归尾部调用(转换为迭代),该实现将点(X,Y)分配给子域(又称为叶节点)? 这不是一个伪代码:

def decompose(inX, inY, xmin, xmax, ymin, ymax, maxP):

#Paramters: Lists of X and Y coordinates, boundaries, max. #points per subdomain

if len(inX) <= maxP: #base case

--write out list of points and boundaries--

else:

xB = (xmin + xmax) / 2 #calculate new boundaries

yB = (ymin + ymax) / 2

for x, y in zip(inX, inY): #assign points to subdomains (a.k.a. children-nodes)

if x < xB:

if y < yB:

R1X.append(x), R1Y.append(y)

else:

R2X.append(x), R2Y.append(y)

else:

if y < yB:

R3X.append(x), R3Y.append(y)

else:

R4X.append(x), R4Y.append(y)

decompose(R1X, R1Y, xmin, xB, ymin, yB, maxP) #recursive tail calls (which I want to eliminate)

decompose(R2X, R2Y, xmin, xB, yB, ymax, maxP)

decompose(R3X, R3Y, xB, xmax, ymin, yB, maxP)

decompose(R4X, R4Y, xB, xmax, yB, ymax, maxP)

我知道消除尾部调用的方法,但是我看到的示例并未展示递归四叉树分解(多个独立的递归尾部调用)中固有的fork模式。 我的动机是编写代码,如果我在可能显示大量聚类的数百万个点上使用堆栈时,该代码不会耗尽堆栈,因此导致非常深的递归。 另外,我想包括时间维度并实现空间缓冲区,以便可以将点分配给多个子域(我需要进行进一步处理)。 由于大量的自定义, 现有的四叉树实现可能不适合。 如果您只是因为另一个新手问同样的老问题而感到无聊,那就继续并祝您愉快。感谢您的阅读。 否则,您可以将我引向可以帮助我解决问题的资源,也可以发布潜在的解决方案。 如果您愿意,我会很高兴。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值