我玩矮人要塞游戏。对我来说主要的挑战是有效地设计堡垒的布局。这意味着,每个行业的流动都应该尽可能密集,以尽量减少旅行距离。
食品工业就是一个例子。每个灰色椭圆代表一个建筑物。每个白色矩形代表建筑物的产品。
我的目标是找到一种算法,它将建筑物分布在 2D 网格上,使得这些建筑物之间的距离在它们如何连接的意义上是最小的。这意味着fishery
andloom
可以相距很远,但loom
andfarmer's
应该尽可能近。
目前我已经考虑使用一些现成的软件来模拟布局,但是一些算法提示就可以了。
目前我正在考虑一些力导向算法,但我不确定离散网格的要求。
问题的形式化:是否有在离散坐标中工作的 Force Draw Graph 算法?
更新:我在 AS3 中找到了Force draw 算法的实现(网络也包含 JS 版本)。我将尝试将其转换为离散版本。但我怀疑它会起作用......
UPDATE2:在评论中要求进行一些进一步的限制。它们在这里:每栋建筑都占据虚拟网格上的单个单元格。建筑物可以在相邻的单元格上。建筑物不能堆叠/重叠。(PS:在游戏中,每个建筑物都有定义的大小,通常是 3x3,但我想让这个问题更笼统,以允许更多的方法)。