algorithm - 尽可能将学生安排在尽量减少作弊的位置

标签 algorithm search optimization graph puzzle

给定一个大小为 m * n 的矩阵,将 k 个学生按这样的方式放置,使得考试作弊的可能性最小。

我的方法: 考虑一个 m * n 矩阵,将第一个学生放在 X 处,(X= 给定矩阵中的任何单元格)。对于下一个学生做一个 BFS,对于每个空单元格,计算它的距离 (R)。对于 R,我们可以从值 t=max(m, n) 开始,在 BFS 中遇到同一级别的每个下一个单元格时,我们添加 t 级别。如果 R 最小,则存储此单元格直到现在。最后将下一个学生放入具有最小 R 值的单元格中。对所有学生 (k) 重复此操作。

优化:如果我们到达的单元格的 R 大于我们之前的值,则忽略它。

我们如何优化它?
有没有更好的算法来做到这一点?
我的起始单元格 X 与最终答案有关吗?

例如,如果它是 5x5 垫子,我将第一个学生放在 0x0 处,或者如果我从 2x2 开始,对于广义 k 哪个更好? (显然对于 k=2,0x0 会更好!)

编辑 这里最小化作弊意味着为所有学生计算的 Rs 总和应该尽可能小。

最佳答案

所以基本上你想在一个 m 乘 n 的平面中打包 k 个圆?你为什么不简单地使用六角填料?也许检查https://en.wikipedia.org/wiki/Circle_packing及相关文章。

关于algorithm - 尽可能将学生安排在尽量减少作弊的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23283723/

相关文章:

php - 无重复且无 "classic"排序计算所有 n 大小的排列

algorithm - 确定时间复杂度

java - 唯一ID生成算法

c++ - 6 色图顶点着色算法

java - 黑白棋中的 Alpha Beta 剪枝问题

elasticsearch - 如何编写一个匹配然后过滤记录的 Elasticsearch 查询?

mysql - 一个好的电子商务搜索是如何工作的?

mysql - 没有适当索引的长时间运行的查询

c++ - 条件分支的模板和优化

javascript - 优化 jquery mobile 和 javascript