我有一个凸多边形P,我想将它分成如下三部分:第一行l1将P分成两部分P1和P2,第二行l2将两部分中的一部分(比如P1)分成两部分零件P11和P12。我怎样才能获得三个部分P11,P12,P2的最大直径最小的对象?或者我如何获得近似结果?
首先,我想使用三个圆来覆盖多边形并最小化圆的最大直径,但我还不知道如何获得这样的圆。我已经对这个问题进行了很多研究,并且没有提出一个有效的算法。大部分研究都集中在如何划分点上。
有没有任何已知算法可以计算出来?非常感谢你的帮助!
答案 0 :(得分:0)
蛮力就足够了。
编写一个以凸多项式为输入的函数,依次尝试所有对角线并将多边形分成两部分。两个部分的直径很容易被发现为分裂对角线的长度或初始多边形的最长对角线的长度(如果这个最长的对角线属于所考虑的部分)。
您将在两步过程中使用此功能,分割初始多边形,然后分割第二部分。
作为优化,您将保留迄今为止获得的最短最大直径的痕迹;当您尝试新的分割时,尝试第一次分割的对角线长度不会超过当前最小分割量。