我正在寻找一种算法,将图形划分为最大尺寸为n的顶点组(每个顶点都是连接的,如果它是自己的图形),同时保持组的数量最小化。我需要这个算法将delaunay三角剖分划分为每个区域中具有相同顶点数的区域。如果有人对解决这个问题有更好的想法,请告诉我!
答案 0 :(得分:7)
您似乎正在寻找统一k-way graph partitioning problem的解决方案,其中,给定图G(V,E)
,目标是将顶点集V
划分为一系列k
不相交的子集V1, V2, ..., Vk
,使每个子集Vi
的大小约为|V|/k
。此外,通常需要“漂亮”分区,其中任何两个子集Vi
和Vj
之间的边权重之和最小。
首先,众所周知,这个问题是NP
- 完整,排除了有效精确算法的存在。从好的方面来说,已经开发了许多有效的启发式算法,它们在许多实际问题上都表现得非常好。
具体而言,基于迭代多级方法的方案在实践中非常成功。在这样的方法中,通过递增地合并相邻顶点以在层级的每个级别形成较小的“粗略”图来创建图的层次结构。当粗略图形变得足够小时形成初始分区,然后该分区从层次结构“映射”到原始图形上。分区的迭代细化通常作为此映射过程的一部分执行,通常会导致伪最佳分区。
此类算法的实现并非易事,但许多现有的包支持此类例程。具体而言,METIS包被广泛使用。