Unexpected behavior when finding regular subdivisions

Questions and problems about using polymake go here.
MattLarson
Posts: 14
Joined: 03 Jun 2018, 22:57

Unexpected behavior when finding regular subdivisions

Postby MattLarson » 24 Aug 2019, 19:09

I have two instances where the behavior of regular subdivisions is confusing.

In the first instance, I'm trying to create a regular subdivision where the weights are very close to being non-generic. I found this example by taking a non-generic regular subdivision and then perturbing the weights in order to triangulate the subdivision.

My understanding from reading the regular subdivision tutorial is that I can create this regular subdivision as either a GeometricSimplicialComplex or a SubdivisionOfPoints. I am sometimes getting different results (different numbers of facets). The strangest thing is that when I compute the subdivision as a simplicial complex, and then as SubdivisionOfPoints, I get different results, but when I compute the subdivision first as a SubdivisionOfPoints and then as a GeometricSimplicialComplex I get the same number of facets.

The second issue occurs when I have non-generic weights, and the lift of one point is in the interior of a facet of the convex hull of the lifts. For example, when I lift the points [1, 0, 0],[0, 1, 0],[0, 0, 1],[1/3, 1/3, 1/3] all to the same height, then I expect that the vertex [1/3, 1/3, 1/3] will not affect the subdivision (i.e. the resulting subdivision will be a simplex). It does seem to affect the subdivision, whether subdividing as either a SubdivisionOfPoints or a GeometricSimplicialComplex. The result here also depends on whether I compute the simplicial complex first or the SubdivisionOfPoints first.

I have copied two scripts that show the problem (when run on my machine) and their output (on my machine) below. I am running them using polymake 3.2, and I apologize if this behavior doesn't occur in later versions of polymake.

Code: Select all

#!/usr/bin/perl use strict; use warnings; use application "polytope"; #issue 1 my $weighvec = [1119616434621928737146487283/1119767540418050273071595520, 630303703963049448425029177/630454814929029114609270784, 903520937582759424843689743/903672050161935308092866560, 11750759022478040901936349103/11751967892473810207318736896, 1974175881439027203046390165/1974780326340496756882538496, 15716035675241572674003927/16924961474604808445886464, 604462917250477430589221/1208925819614629174706176, 4835703284983331132448781/9671406556917033397649408, 302231460430745248372667/604462909807314587353088, 4835703285237592410830129/9671406556917033397649408, 4835703316833388544560899/6044629098073145873530880]; my $coords = [[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1], [0, 0, 1/7, 5/7, 1/7],[1/2, 0, 0, 1/2, 0],[0, 1/2, 0, 1/2, 0],[0, 1/2, 0, 0, 1/2],[1/2, 0, 0, 0, 1/2],[0, 0, 2/5, 0, 3/5]]; my $weightsRef = new Vector<Rational>($weighvec); my $baryMat=new Matrix<Rational>($coords); my $simp = new topaz::GeometricSimplicialComplex(COORDINATES=>$baryMat, INPUT_FACES=>regular_subdivision($baryMat, $weightsRef)); print "Results when triangulating as simplex"; print "\n"; print $simp->FACETS; print "Number of facets is "; print $simp->N_FACETS; print "\n \n"; my $fan = new fan::SubdivisionOfPoints(POINTS=>$baryMat, WEIGHTS=>$weightsRef); my $complex = $fan->POLYHEDRAL_COMPLEX; print "Results when triangulating as polytope"; print "\n"; print $complex->MAXIMAL_POLYTOPES; print "Number of facets is "; print $complex->N_MAXIMAL_POLYTOPES; print "\n \n"; #issue 2 my $weighvec2 = [2/3, 2/3, 2/3, 2/3]; my $coords2 = [[1, 0, 0],[0, 1, 0],[0, 0, 1],[1/3, 1/3, 1/3]]; my $weightsRef2 = new Vector<Rational>($weighvec2); my $baryMat2=new Matrix<Rational>($coords2); my $simp2 = new topaz::GeometricSimplicialComplex(COORDINATES=>$baryMat2, INPUT_FACES=>regular_subdivision($baryMat2, $weightsRef2)); print "Results when triangulating as simplex"; print "\n"; print $simp2->FACETS; print "\n \n"; my $fan2 = new fan::SubdivisionOfPoints(POINTS=>$baryMat2, WEIGHTS=>$weightsRef2); my $complex2 = $fan2->POLYHEDRAL_COMPLEX; print "Results when triangulating as polytope"; print "\n"; print $complex2->MAXIMAL_POLYTOPES; print "\n \n";

Code: Select all

Results when triangulating as simplex {2 7 8 9 10} {1 2 7 8 9} {4 7 8 9 10} {3 4 6 7 10} {2 3 5 6 7} {3 5 6 7 10} {2 5 6 7 10} {2 6 7 9 10} {4 6 7 9 10} {1 2 6 7 9} {0 1 2 6 9} Number of facets is 11 Results when triangulating as polytope {2 7 8 9 10} {5 7 8 9 10} {1 2 7 8 9} {4 5 7 8 9} {4 5 8 9 10} {2 3 5 6 7} {3 4 5 6 7} {2 5 6 7 10} {5 6 7 9 10} {2 6 7 9 10} {4 5 6 7 9} {1 2 6 7 9} {0 1 2 6 9} Number of facets is 13 Results when triangulating as simplex {0 1 2 3} Results when triangulating as polytope {1 2 3} {0 2 3} {0 1 3}

Code: Select all

#!/usr/bin/perl use strict; use warnings; use application "polytope"; #issue 1 #my $weighvec = [17913862824323702710646821813/17916280646688804369145528320, 1260607402770731175116102887/1260909629858058229218541568, 903520941296282237617641323/903672050161935308092866560, 1468844882210793638674158479/1468995986559226275914842112, 246771983594603745607701539/246847540792562094610317312, 7858017872235379045634225/8462480737302404222943232, 37778931944231733404985/75557863725914323419136, 151115729793524004060907/302231454903657293676544, 75557865028205484082603/151115727451828646838272, 302231458464929106984613/604462909807314587353088, 302231458012893609143409/377789318629571617095680]; my $weighvec = [1119616434621928737146487283/1119767540418050273071595520, 630303703963049448425029177/630454814929029114609270784, 903520937582759424843689743/903672050161935308092866560, 11750759022478040901936349103/11751967892473810207318736896, 1974175881439027203046390165/1974780326340496756882538496, 15716035675241572674003927/16924961474604808445886464, 604462917250477430589221/1208925819614629174706176, 4835703284983331132448781/9671406556917033397649408, 302231460430745248372667/604462909807314587353088, 4835703285237592410830129/9671406556917033397649408, 4835703316833388544560899/6044629098073145873530880]; my $coords = [[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1], [0, 0, 1/7, 5/7, 1/7],[1/2, 0, 0, 1/2, 0],[0, 1/2, 0, 1/2, 0],[0, 1/2, 0, 0, 1/2],[1/2, 0, 0, 0, 1/2],[0, 0, 2/5, 0, 3/5]]; my $weightsRef = new Vector<Rational>($weighvec); my $baryMat=new Matrix<Rational>($coords); my $fan = new fan::SubdivisionOfPoints(POINTS=>$baryMat, WEIGHTS=>$weightsRef); my $complex = $fan->POLYHEDRAL_COMPLEX; print "Results when triangulating as polytope"; print "\n"; print $complex->MAXIMAL_POLYTOPES; print $complex->N_MAXIMAL_POLYTOPES; print "\n \n"; my $simp = new topaz::GeometricSimplicialComplex(COORDINATES=>$baryMat, INPUT_FACES=>regular_subdivision($baryMat, $weightsRef)); print "Results when triangulating as simplex"; print "\n"; print $simp->FACETS; print $simp->N_FACETS; print "\n \n"; #issue 2 my $weighvec2 = [2/3, 2/3, 2/3, 2/3]; my $coords2 = [[1, 0, 0],[0, 1, 0],[0, 0, 1],[1/3, 1/3, 1/3]]; my $weightsRef2 = new Vector<Rational>($weighvec2); my $baryMat2=new Matrix<Rational>($coords2); my $fan2 = new fan::SubdivisionOfPoints(POINTS=>$baryMat2, WEIGHTS=>$weightsRef2); my $complex2 = $fan2->POLYHEDRAL_COMPLEX; print "Results when triangulating as polytope"; print "\n"; print $complex2->MAXIMAL_POLYTOPES; print "\n \n"; my $simp2 = new topaz::GeometricSimplicialComplex(COORDINATES=>$baryMat2, INPUT_FACES=>regular_subdivision($baryMat2, $weightsRef2)); print "Results when triangulating as simplex"; print "\n"; print $simp2->FACETS; print "\n \n";

Code: Select all

Results when triangulating as polytope {2 7 8 9 10} {5 7 8 9 10} {1 2 7 8 9} {4 5 7 8 9} {4 5 8 9 10} {2 3 5 6 7} {3 4 5 6 7} {2 5 6 7 10} {5 6 7 9 10} {2 6 7 9 10} {4 5 6 7 9} {1 2 6 7 9} {0 1 2 6 9} 13 Results when triangulating as simplex {2 7 8 9 10} {5 7 8 9 10} {1 2 7 8 9} {4 5 7 8 9} {4 5 8 9 10} {2 3 5 6 7} {3 4 5 6 7} {2 5 6 7 10} {5 6 7 9 10} {2 6 7 9 10} {4 5 6 7 9} {1 2 6 7 9} {0 1 2 6 9} 13 Results when triangulating as polytope {1 2 3} {0 2 3} {0 1 3} Results when triangulating as simplex {1 2 3} {0 2 3} {0 1 3}
Thank you so much for your help,
Matt

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

Re: Unexpected behavior when finding regular subdivisions

Postby joswig » 25 Aug 2019, 12:10

The difference is that fan::SubdivisionOfPoints takes homogeneous coordinates, whereas topaz::GeometricSimplicialComplex does not.


Return to “Helpdesk”