【问题标题】:A Linear Program for Detecting Extreme Points of a Convex Hull凸包极值点检测的线性规划
【发布时间】:2017-03-28 09:54:44
【问题描述】:

我们如何制定一个线性规划来告诉我们任意点 x[ j ] ∈ X,其中 X = {x1, ... ,xn} ⊂ Rn 是否是 X 的凸包的极值点,即是conv(X)吗?

根据这个线性规划的解,我们应该能够断言'是,x[ j ] 是一个极值点',或者'不是'。

嗯,我的想法是这样的:

{min: 0} s.t. x[ j ] = Σi ( a[ i ] * x[ i ] ); i ∈ {1, ... ,k}, ∀ j ∈ {1, ... ,k}

如果存在这样的a[i],则表示x[j]是其他x的线性组合,这似乎违反了极值点的定义。

但是,我相信这张 LP 并没有涵盖整个背景。即,如果我们选择一个 x[j],它位于 conv(X) 内部(不在边缘上)并且不是其他的线性组合。然后该模型将导致错误的结果。在我看来,上述模型会很好 iff 选定的 x [ j ] 位于 conv(X) 的边缘。

谢谢。

【问题讨论】:

  • 您应该包含您尝试过的内容。网上有很多关于 Convex Hull 例程的示例。这看起来像是不假思索地复制粘贴家庭作业。
  • @Matt,请查看我尝试过的编辑。我已经研究和思考了几个小时。在这里问,是我最后的努力,而不是第一次。

标签: linear-programming convex-hull convex


【解决方案1】:

你很接近。一个点属于convex hull of a finite set of points 当且仅当它可以写成这些点的凸组合。此外,只有当没有其他两个点可以写成它们的凸组合时,一个点才是极值点。

令兴趣点为 x_k。然后,下面的线性程序将完成这项工作:

其中 x_{ik} 是您要检查的点(点 k)的 i-th 坐标。请注意,该点应该是我们在等式右侧包含的点之一(即,该问题将始终有至少一个解决方案是 lambda_k = 1,而所有其他 lambdas 将等于 0。

如果该点是极值点,那么您将得到的唯一解是 lambda_k=1,其他 lambdas = 0。否则,将弹出不同的解(具有更小的 lambda_k)。

(请注意,在您的问题描述中,点数和维度均为n),因此相应的索引(j 和 i)从1 运行到n

我希望这会有所帮助!

【讨论】:

  • 非常感谢。帮了大忙。
猜你喜欢
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多