Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
tutorial:caratheodory [2010/08/10 10:39] – joswig | tutorial:caratheodory [2017/06/13 11:27] – added some formatting to enable automated tests oroehrig | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== A Counter-example to an integer | + | ===== A Counter-example to an integer |
+ | |||
+ | ==== The construction | ||
This tutorial describes the construction of a specific rational cone in six dimensions which is due to: | This tutorial describes the construction of a specific rational cone in six dimensions which is due to: | ||
Line 6: | Line 8: | ||
The rows of this matrix describe a cone //C//: | The rows of this matrix describe a cone //C//: | ||
< | < | ||
- | polytope > $M=new | + | polytope > $M = new Matrix< |
- | Matrix< | + | polytope (2)> |
+ | polytope (3)> | ||
+ | polytope (4)> | ||
+ | polytope (5)> | ||
+ | polytope (6)> | ||
+ | polytope (7)> | ||
+ | polytope (8)> | ||
+ | polytope (9)> | ||
+ | polytope (10)> | ||
polytope > $C=new Polytope< | polytope > $C=new Polytope< | ||
</ | </ | ||
Line 34: | Line 44: | ||
The following loop iterates over all invertible 6x6 submatrices of //M// and computes the unique representation of //x// as a linear combination of the rows of the submatrix. | The following loop iterates over all invertible 6x6 submatrices of //M// and computes the unique representation of //x// as a linear combination of the rows of the submatrix. | ||
< | < | ||
- | foreach (all_subsets_of_k(6, | + | > foreach (all_subsets_of_k(6, |
- | $B=$M-> | + | > $B = $M-> |
- | if (det($B)) { | + | > if (det($B)) { |
- | print lin_solve(transpose($B), | + | > print lin_solve(transpose($B), |
- | } | + | > } |
- | } | + | > } |
</ | </ | ||
This means that //x// cannot be represented as a non-negative linear combination of any six of the given generators of //C//. | This means that //x// cannot be represented as a non-negative linear combination of any six of the given generators of //C//. | ||
+ | ==== Analyzing the combinatorics ==== | ||
+ | |||
+ | The following is taken from | ||
+ | * Michael Joswig, Benjamin Müller, and Andreas Paffenholz: '' | ||
+ | |||
+ | < | ||
+ | polytope > print $C-> | ||
+ | polytope > print rows_labeled($C-> | ||
+ | </ | ||
+ | |||
+ | There are two disjoint facets covering all the vertices. Beware the numbering of facets depends on the convex hull algorithm employed. | ||
+ | < | ||
+ | polytope > print $C-> | ||
+ | polytope > print $C-> | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | polytope > print rows_labeled($M); | ||
+ | </ | ||
+ | |||
+ | Here is another polytope which is somewhat similar but not quite the same. | ||
+ | < | ||
+ | polytope > $cross5=cross(5); | ||
+ | polytope > print isomorphic($C, | ||
+ | polytope > print isomorphic($C-> | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | polytope > print $cross5-> | ||
+ | </ | ||
+ | Look at two facets of the five-dimensional cross polytope and their positions in the dual graph. | ||
+ | < | ||
+ | polytope > print $cross5-> | ||
+ | polytope > print $cross5-> | ||
+ | polytope > print rows_labeled($cross5-> | ||
+ | </ | ||
+ | |||
+ | Now we construct a new graph by manipulating the dual graph of the cross polytope by contracting a perfect matching. | ||
+ | < | ||
+ | polytope > $g=new props:: | ||
+ | polytope > $g-> | ||
+ | polytope > $g-> | ||
+ | polytope > $g-> | ||
+ | polytope > $g-> | ||
+ | polytope > $g-> | ||
+ | polytope > $g-> | ||
+ | </ | ||
+ | The last command renumbers the nodes sequentially, | ||
+ | < | ||
+ | polytope > print isomorphic($C-> | ||
+ | </ | ||
+ | This finally reveals the combinatorial structure: The cone //C// is a cone over a 5-polytope which can be obtained from the 5-dimensional cross polytope by ``straightening'' |