使用CGAL解决LP可行性问题

时间:2014-05-20 11:25:01

标签: algorithm linear-programming cgal

我们可以使用CGAL解决下面提到的形式的线性规划可行性问题(如果没有,请建议替代方案):

v.x_a > c

v.x_b = c

其中vx_ax_bc分别是向量,向量,向量和标量。我想找到一组(v,c)xx_ax_b的元素)的元组x,它可以满足这个不等式。

我见过documentation,但允许的格式为Ax(relation operator)b,其中relation operator可以是&gt; =,&lt; =或=,其中A和{ {1}}已知且b未知但我的要求相反,即我有x但我想确定是否存在满足不等式的元组x。< / p>

上下文 我正在尝试实现一个3D网格生成器,我需要测试边缘(连接两个3D顶点)是否为Delaunay。 Delaunay边定义为:边是Delaunay,如果存在其端点的圆周,其中不包含任何其他顶点。

我的问题是基于here

所描述的方法

1 个答案:

答案 0 :(得分:2)

根据David Eppstein在链接问题中描述的结构,ij是固定的,我们还有v.xi = v.xj = c的额外限制。所以问题就变成了:

  

找到一个向量v != 0,以便所有k和v.xk >= v.xiv.xi = v.xj

这可以转换为

  

找到一个向量v != 0,以便所有k (xk - xi).v >= 0(xi - xj).v >= 0

-(xi - xj).v >= 0

通过将A定义为包含所有k,xk - xixi - xj的行xj - xi的矩阵,我们得到

  

找到v != 0

的向量Av >= 0

具有您需要的形式。您可以通过强制非零组件强制执行v != 0。对于每个组件i,并尝试添加条件vi >= 1vi <= -1并检查生成的系统的可解决性。由于平面的法向量可以任意缩放,因此可以解决任何结果程序是否可解的问题(如果2dd的维度,则有v