Check, if inequality induces a facet

Questions and problems about using polymake go here.
markus.s
Posts: 3
Joined: 25 Feb 2013, 18:18

Check, if inequality induces a facet

Postby markus.s » 17 Jun 2013, 10:33

Is there a built-in way/function to check, if some inequality induces a facet of a given polytope? (without printing all facets)

Right now, I print out the dimension of my given polytope (which I have as lp-file), then I add the inequality, which I want to check, as equality to the lp-file and print out the new dimension, thus I wonder if there is a more elegant solution possible.
(http://forum.polymake.org/viewtopic.php?f=8&t=317 seems to offer a way, but I am not to sure what to write instead of "INEQUALITIES=>cube(3)->FACETS/$H1" in my case)

Thanks!

Markus

schroeter
Developer
Posts: 2
Joined: 11 Apr 2012, 09:52

Re: Check, if inequality induces a facet

Postby schroeter » 19 Jun 2013, 12:10

Is there a built-in way/function to check, if some inequality induces a facet of a given polytope?
No, there is no function like 'IS_FACET' in polymake.

If your polytope has full-dimension the best way is to check whether your inequality is in 'FACETS' or not. You can do this in a perl-script with an easy loop.

If you want to stick on your idea, first of all you must be sure that your inequality induces a face, that means solving a linear program in direction normal to your inequality with respect to your polytope $p.
The second step is to check the dimension of your face. You can construct a new polytope with an extra equation (in the example below 1 = 2*x + 3*y + 4*z) with

Code: Select all

$eq=new Vector(-1,2,3,4); $p_new=new Polytope(INEQUALITIES=>$p->FACETS,EQUATIONS=>$p->AFFINE_HULL/$eq);
and ask for the dimension.

User avatar
joswig
Main Author
Posts: 282
Joined: 24 Dec 2010, 11:10

Re: Check, if inequality induces a facet

Postby joswig » 21 Jun 2013, 09:23

If a given inequality is a facet of the feasible region can be decided by a linear program. This is dual to deciding whether one point from a set of points is a vertex of the convex hull. That latter problem is equivalent to deciding whether or not there is a hyperplane which separates that one point from all the other. This can be computed by the function separating_hyperplane.


Return to “Helpdesk”