【发布时间】:2017-10-03 18:48:20
【问题描述】:
对于我目前参与的一个小组项目,我们必须模拟以下内容: 取一个边长为 n 的正方形。在正方形上均匀分布一定数量的单位圆盘。找到所需的磁盘数量,直到有一个从正方形的左侧延伸到右侧的磁盘的连通分量。然后找到所需的磁盘数量,直到正方形完全被磁盘填满。
没有明确说明,但我们假设这是在 Matlab 中完成的,因为我们在本课程的其他部分使用它。对于第一个问题,找到从左到右的路径,我编写了两种可行的方法。一个使用邻接表和 Matlab 中的图形工具来查找连接的节点。这种方法足够快,但是对于我们需要做的事情来说占用了太多的内存。另一种方法使用递归搜索算法,不存储邻接信息,但速度太慢。
当我们需要正方形的大小为 n=1000 和 n=10 000 时,问题就出现了。我们预测这将需要数千万圈或更多圈,我们根本看不到我们应该如何处理这个问题,因为任何邻接列表或矩阵都会大得离谱,而且不使用似乎需要大量的时间。感谢您的任何想法和想法,谢谢
【问题讨论】:
-
A) 找到不需要那么多内存的不同算法。 B) 获得更多内存。
-
这是一个概率问题,没有“磁盘数量”可以解决,对吧?您能否更清楚地定义数学问题(例如“完全填充”)?如果你能提供一个玩具例子会更好。
-
@user2999345 是的,它非常具有概率性 - 这个项目是概率和统计课程的一部分 :) 已经在下面得到了答案,但无论如何感谢!如果您有兴趣,我们应该对每个 n 进行大量模拟,以找到所需的预期磁盘数量,并稍微分析数据
标签: algorithm matlab continuum large-data