【发布时间】:2014-08-06 22:17:56
【问题描述】:
问题
我在平面上有一组位置(实际上它们是 KML 文件中的 pin),我想将此图划分为子图。连接性非常好 - 与所有现实世界的道路网络一样 - 所以我假设如果两个位置靠近,它们就会有某种连接。生成的子图集应遵守以下约束:
- 每个节点都必须被一个子图覆盖
- 每个节点都应该正好在 1 个子图中
- 子图中的每个节点都应该彼此靠近(L2 范数距离)
- 每个子图应至少包含 5 个位置
- 子图的数量应该最少
现在位置的数量不超过 100 个,所以我考虑过暴力破解所有可能性,但这显然不会很好地扩展。
我考虑过使用一些 k-Nearest-Neighbors 算法(例如使用 QuickGraph),但我不知道从哪里开始以及如何扩展/缩小方法。也许可以将这个问题映射到另一个可以通过一些数值过程轻松解决的问题(例如Simplex)......
也许有人对这类优化问题有经验并愿意帮我找到解决方案?我没有 Mathematica/Matlab 之类的访问权限……但有足够的 .NET 编程技能和hmm Excel :-)
非常感谢!
【问题讨论】:
标签: graph graph-algorithm nearest-neighbor