【发布时间】:2017-04-07 20:02:00
【问题描述】:
我正在尝试使用分治法创建算法但使用迭代算法(即无递归)。
我对如何处理循环感到困惑。
我需要将我的问题分解为更小的子问题,直到我遇到基本情况。我认为这仍然是正确的,但是我不确定如何(不使用递归)使用较小的子问题来解决更大的问题。
例如,我正在尝试提出一种算法来找到最接近的点对(在一维空间中 - 尽管我打算自己将其推广到更高维度)。如果我有一个函数 nearest_pair(L),其中 L 是 ℝ 中的整数坐标列表,我怎么能想出一个分而治之的迭代算法来解决这个问题?
(不失一般性,我使用的是 Python)
【问题讨论】:
-
您不(不能?)使用递归有什么特别的原因吗?
-
我必须为课堂上的作业设计一个迭代算法。我确实知道递归的解决方案(使用 D&C),我相信我可以将其转换为迭代代码,并利用 D&C 方法在 O(nlogn) 时间而不是 O(n^2) 时间的事实。
-
这就是我所担心的。特别是在课堂作业的上下文中,在展示您已经尝试过的代码之前,您不会在这里获得帮助,即使我理解您的问题更多是关于一般编程而不是特定语言。唉,你将不得不在某些时候编码,这会影响具体的答案......虽然似乎有人确实回复了!你似乎很幸运!
-
好吧,我不是在寻找解决这个特定问题的方法。我正在寻找一般的“如何处理迭代 D&C 算法”。一个例子是更具体地针对我正在学习的内容(但不是我想要解决的内容)。
标签: python algorithm computer-science