【问题标题】:Finding maximum area k-gon given a set of points给定一组点找到最大面积k-gon
【发布时间】:2016-10-04 12:09:47
【问题描述】:

我正在尝试解决 topcoder 领域的一个练习问题:http://topcoder.bgcoder.com/print.php?id=417

根据我的理解,问题的目的是找到一个最大面积的 k 边形,给定一组点 D 和 k

令 D 的凸包 = C(D)

如果 n=3,我已经证明可以通过假设它的顶点是 C(D) 的子集来构造这样的三角形。 所以很容易想出一个 k=3 的解决方案:https://stackoverflow.com/a/1621913/4126652

但是,对于 n>3,我不知道该怎么做。

这是我的尝试:

让 |C(D)| = l 即凸包是一个 l 边形,

如果 n > l 我很确定面积最大的 k 边形将是凸包本身,即 C(D)

如果 n 3,我无法提出算法即使这是一个正确的假设也要解决。

谁能帮我解决这个问题,我的方法正确吗?你能帮我进一步吗?

【问题讨论】:

  • 是面积最大的k-gon
  • 如果 k
  • 其他网站所说的无关紧要,我们既不是咨询公司,也不是“给我的代码”大小。正如所问的那样,这个问题并没有显示出编程问题。如果您有不同的想法,请关注How to Ask 并提供minimal reproducible example 以及具体问题描述等。400 次代表您应该知道它是如何工作的。
  • 如果我理解正确,您想比蛮力更快地解决它吗?
  • @Anatoly 是的,他们已将其标记为动态编程,我只是没看到。

标签: algorithm geometry


【解决方案1】:

折腾了几个小时后,我想出了解决办法。

这是一个动态规划问题:

令 dp[m][o][r] 表示最大面积 r-gon,使得起始顶点为 m,结束顶点为 o(顶点按循环顺序排列)。

那么递归关系将是:

dp[m][o][r] = max(dp[m][n][r-1] + area(m,n,o)), {max over all n: m

其中 area(m,n,o) 是由顶点 m、n 和 o 组成的三角形的面积

【讨论】:

    猜你喜欢
    • 2019-07-24
    • 2013-07-30
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多