答案 0 :(得分:0)
提示:
我将按以下方式解决此问题:
以四边形研究问题,并建立一条规则,该规则将点在边缘上的位置与将面积减半的线段的长度相关,或更普遍地分为两个指定部分。
找到给出最短行的条件。
一般化到普通多边形边缘上的一个点。
我相当确定,对于在边缘上移动的点,最小配置以有限的数量出现,并且通过扫描所有边缘,您可以枚举所有候选并找到最短的候选。
答案 1 :(得分:0)
每条将区域分成两半的线都将通过一个称为“中心”的点:https://en.wikipedia.org/wiki/Centroid
此外,尽管形心重心,但每一条线都会将区域一分为二。
因此,第一步是找到质心。然后,当您在多边形上移动一个点时,只需要从该点到质心画一条线即可在另一侧找到该点。您将遍历所有将区域分成两半的线段。您的任务是找到这些细分中最短的细分。
对于具有N个顶点的多边形,当穿过质心的线的角度发生变化时,它会扫出N个不同的领结形区域,在该区域中,线的多边形边都不会改变。当穿过质心的线在任意一端碰到多边形顶点时,区域就会改变。
针对此问题的有效算法将找到每个区域中最短的片段,然后从中选择最小值。它可以是接触多边形顶点的区域的一端(易于测量),也可以位于中间的某个位置。
当最小距离在该区域的中间某个位置时,可以通过三元搜索(https://en.wikipedia.org/wiki/Ternary_search)找到它,或者可以使用微积分。我将质心作为原点,将区域两侧的多边形边缘转换为极坐标,然后翻转180度,将它们加在一起,然后找到使半径最小的角度。
以这种方式工作的算法可以为O(N)时间中最短的等分线得到准确的答案。