我想对以下所有帖子表示歉意。选择了错误的论坛将其最初发布在此。但是,不是将其完全浪费掉,而是将问题改写为真正的“理论计算机科学”问题。
问题:创建一个算法,该算法在2D平面中采用一组n个有序点,这些点形成一个可能是也可能不是凹面的简单多边形A的轮廓,并创建一个具有m个点的新多边形B,从而:
- A中的所有点都包含在B中
- 3 <= m <n
- B是所有B中集合中面积最小的多边形
- B必须是简单的多边形(即没有自相交)。
- 该算法的输入是面A和“ m”。
- B中的段与A中的段可以重合。
一些示例输入和预期输出:
- 如果A为正方形且m为3,则B为包含A的最小表面积的三角形。
- 如果A为六边形且m为4,则B将为具有A的最小表面积的四边形。
祝所有尝试此问题的人都好运。我可以向您保证,这将是非常困难的,尤其是现在解决方案必须是最佳的。
1
@Joe:不正确:如果A是一个正方形,那么Thirian要求包含A的最小面积三角形。另一方面,如果A是一个三角形(),那么实际上没有有效的解决方案。
—
Jeffε
我想在我的第一条评论中加上17。为什么是20?
—
杰夫斯
FFT难道不是“复杂”的低门槛吗?
—
Sasho Nikolov
我不认为如果您(例如)设置m = 3,问题根本就不会改变是完全不对的。问题是,您可能需要以m为单位的时间指数,如果m固定为某个数字,就可以了,但如果m是输入的一部分,则不正确。
—
Suresh Venkat 2012年
“每个人都知道问题出在哪里”是不正确的。我们之所以问是因为未指定的选择会有所作为。
—
Suresh Venkat 2012年