【发布时间】:2025-11-21 20:15:02
【问题描述】:
我在获取 NetLogo 模型的补丁环境(彩色区域)中的集群大小列表(补丁数量)时遇到了时间问题。对于像 50 x 50、100 x 100 甚至 150 x 150 的小网格值(NetLogo 中的世界大小),BFS 的标准 DFS 变得有效,但随着顺序的增加,这些程序变得不可行。我的任务是计算相同的结果,但网格至少有 10000 x 10000 或更高。
我用 Hoshen-Kopelman 算法尝试了 Union-Find,但我实际的 NetLogo 实现花费了大约 5 小时来获得 500 x 500 阶的补丁网格。
有没有人知道任何算法来计算或标记至少 1000 x 1000 个补丁的世界的集群?
如果我不使用补丁和 Netlogo,我可以改用 C/C++ 或其他编程语言吗?
有什么建议吗?
提前致谢, 美好的一天
【问题讨论】:
-
我们可以看看您的 NetLogo 代码吗?我认为您不需要任何算法,您应该可以使用 NetLogo 原语来做到这一点,但我不清楚您在这个问题中所说的集群是什么意思。
-
感谢@JenB 的评论,是的,我想,我最后一次尝试是从link 中的模型创建一个模型(这正是我需要的两种颜色和大补丁世界),它基本上在其 4 个邻居中使用递归和广度搜索。不幸的是,我仍然对巨大的世界(至少 1000000 个补丁)感到复杂,因为模型需要检测大型集群,然后递归过程通知“递归太深”,感谢您的信息。问候
标签: c++ c algorithm data-structures netlogo