There are various means to obtain new objects without having to type the data in a new file manually.
Application topaz defines many standard construction and transformation algorithms. Unfortunately, due
to the preliminary state of polymake reconstruction, we can't supply a uniform, comfortable function-like
interface to all of them. At the moment you still have to call the construction clients as separate
programs from the shell command line.
Produces a triangulated pile of hyper cubes: Each cube is split into
d! tetrahedra, and the tetrahedra are all grouped around one of the
diagonal axes of the cube.
Produces a triangulated 3-sphere with a particular "nasty" embedding of the unknot in its
1-skeleton. The parameters m >= 2 and n >= 1 determine how entangled the unknot is.
eps determines the GEOMETRIC_REALIZATION of the unknot.
Produce a random knot (or link) as a polygonal closed curve in 3-space. The knot (or each
connected component of the link) has n_edges many edges.
The vertices are uniformly distributed in [-1,1]^3, unless the -on_sphere flag is set. In the
latter case the vertices are uniformly distributed on the 3-sphere. Alternatively the -brownian
flag produces a knot by connecting the ends of a simulated brownian motion.
Another important way of constructing simplicial complexes is to modify an already existing one.
Actually, these clients don't alter the input file, but create a copy and modify it.
The clients try to preserve existing vertex labels or choose the new labels according to the old ones
to help you keep track of special vertices throughout a series of constructions.
You may suppress the labeling of the vertices of the new complex by using the -nol flag
if it is of no interest to you.
Produce the star of the face specified by the given vertices.
Vertices can be specified by their indices (using the -v option)
or by their labels (using the -l option).
Indices may be specified individually or as a sequence.
e.g. {1 7...9 20} = {1 7 8 9 20}. (perl lovers might use just two points
to indicate a sequence.)
The -nol flag tells the client not to write any labels.
Removes the vertex star of a given face, specified by
it's vertices.
Vertices can be specified by their indices (using the -v option)
or by their labels (using the -l option).
Indices may be specified individually or as a sequence.
e.g. {1 7...9 20} = {1 7 8 9 20}. (perl lovers might use just two points
to indicate a sequence.)
The -nol flag tells the client not to write any labels.
Let C be the given simplicial complex and A the subcomplex induced by
the given vertices. Then this client produces a simplicial complex
homotopy equivalent to C mod A, by adding the cone over A with
apex a to C.
The apex a may be specified (by its label) and vertices can
be specified by their indices (using the -v option) or by their
labels (using the -l option).
Indices may be specified individually or as a sequence.
e.g. {1 7...9 20} = {1 7 8 9 20}. (perl lovers might use just two points
to indicate a sequence.)
The -nol flag tells the client not to write any labels.
Produce the subcomplex consisting of all faces which are contained in the given vertices.
Vertices can be specified by their indices (using the -v option)
or by their labels (using the -l option).
Indices may be specified individually or as a sequence.
e.g. {1 7...9 20} = {1 7 8 9 20}. (perl lovers might use just two points
to indicate a sequence.)
The -nol flag tells the client not to write any labels.
Heuristic for simplifying the triangulation of the given manifold
without changing its PL-type. The client uses
bistellar flips and a simulated annealing strategy.
In the default case, file1 is the output file, and file2 the input. In case
the -pl_comp flag is set, both files are input files and the client tries to
determine whether file2 is pl-homeomorphic to file1. Here file1 is assumed to be
facet minimal.
You may specify the maximal number of -rounds, how often the system
may -relax before heating up and how much -heat should be applied.
The client stops computing, once the size of the triangulation has not decreased
for -rounds iterations. If the -abs flag is set, the client stops
after -rounds iterations regardless of when the last improvement took place.
Additionally, you may set the threshold -min_n_facets for the number of facets when
the simplification ought to stop. Default is d+2 in the CLOSED_PSEUDO_MANIFOLD case
and 1 otherwise.
If you want to influence the distribution of the dimension of the moves when warming up
you may do so by specifying a -distribution. The number of values in -distribution
determine the dimensions used for heating up. The heating and relaxing parameters decrease dynamically
unless the -constant flag is set. The client prohibits to execute the reversed move of a move
directly after the move itself unless the -allow_rev_move flag is set. Setting the
-allow_rev_move flag might help solve a particular resilient problem.
If you are interested in how the process is coming along, try the -verbose option.
It specifies after how many rounds the current best result is displayed.
The -obj determines the objective function used for the optimization. If -obj is set to 0,
the client searches for the triangulation with the lexicographically smallest f-vector,
if -obj is set to 1, the client searches for the triangulation with the reversed-lexicographically
smallest f-vector and if -obj is set to 2 the sum of the f-vector entries is used.
The default is 1.
Heuristic for simplifying the triangulation of the given manifold
without changing its PL-type. Choosing a random order of the vertices, the client
tries to contract all incident edges.
The labels of the apexes may be specified. In case too few
apexes are specified the client labels the remaining ones
apex_0+, apex_0-, apex_1+, apex_1-, ... . In case one of the labels exists
already, the client chooses a unique one by appending _i
where i is the smallest integer which makes the label unique.
The -nol flag tells the client not to write any labels.
Produce the link of the face specified by the given vertices.
Vertices can be specified by their indices (using the -v option)
or by their labels (using the -l option).
Indices may be specified individually or as a sequence.
e.g. {1 7...9 20} = {1 7 8 9 20}. (perl lovers might use just two points
to indicate a sequence.)
The -nol flag tells the client not to write any labels.
The new complex is produced by replacing all vertices from
each glueing set by one representative and removing
all redundancies.
The glueing sets have to be stored in a separate file section glueing_section
as an array of sets of vertex indices. If two sets are not disjoint, their union serves as
a single glueing set instead, thus providing transitivity. Vertices
not contained in any glueing set are considered to
be in a glueing set by themselves, therefore will not be
glued at all.
The labels of the new vertices are the original labels of the representative
vertices (that is, with the smallest index) of their glueing sets.
The option -l specifies how to label the apex vertices. Default labels have the form
apex_0, apex_1, ... . In the case the input complex
has already vertex labels of this kind, the duplicates are avoided.
The -nol flag tells the client not to write any labels at all.
Extracts a subcomplex of a given complex and creates a new complex.
The indices of the selected vertices have to be stored as an ordered set
in a separate file section subcomplex_section.
The vertex labels are preserved unless the -nol flag is specified.
Produce a triangulation of the 3-sphere with a given knot (or link) embedded in the 1-skeleton.
The realization of the knot in 3-space is assumed to be generic, that is, after projection to
the xy-plane at most two edges cross in one point, and any vertex lies in exactly two edges.
Parallel edges however are admissible.
Further we assume that the projection has at least one crossing and that (in the case of a link)
it is connected. The client DOES NOT TEST the latter assumption
Parameters f_1 and f_2 specify which facet of the first and second complex correspondingly are glued together.
Default is the 0-th facet of both.
The vertices in the selected facets are identified with each other according to their order in the facet
(that is, in icreasing index order). The option -p allows to get an alternative identification. It should specify a
permutation of the vertices of the second facet. If the permutation contains contiguous sequences, they can be shortened
as n_1 ... n_2 (perl lovers might use just two points.) For example, (7 2 ... 4 12) = (7 2 3 4 12).
The vertices of the new complex get the original labels with _1 or _2 appended, according to the input complex
they came from. If you specify the -nol flag, the label generation will be omitted.
If the -auto flag is set
the client writes the correct facets into FACETS and the old numbering
(if the numbering has changed at all) into VERTEX_LABELS. The complex_section must
not equal FACETS.
This client lives in between the applications poly and topaz.
Since it produces a simplicial complex (from a polytope), it
is counted as a client for the topaz application.
This client lives in between the applications poly and topaz.
Since it produces a simplicial complex (from a polytope), it
is counted as a client for the topaz application.
This client lives in between the applications surface and topaz.
Since it produces a simplicial complex (from a surface), it
is counted as a client for the topaz application.
This client lives in between the applications poly and topaz.
Since it produces a simplicial complex (from a polytope), it
is counted as a client for the topaz application.
These clients are called by polymake automatically via the rules. They compute
some new properties of an object. You will hardly ever need to call them
directly. They are documented here first of all for the sake of completeness.
Compute the subgraph induced by a given set of nodes.
The nodes are labeled with the original node indices, unless nol option is specified.
If compl option is specified, the complement of the subgraph_nodes_section is used to
select the subgraph nodes.
Determine whether two given graphs are isomorphic.
The answer is written as a boolean property result_section of the first file.
If the result section is omitted, prints the node permutation to the standard output.
Create an embedding of the Hasse diagram as a layered graph.
The embedding algorithm tries to minimize the weighted sum of squares of edge lengths, starting
from a random distribution. The weights are relative to the fatness of the layers.
The y-space between the layers is constant; in the -primal mode the whole-lattice node is placed
on the top, in the -dual mode it is the empty node.
label_width_section should contain estimates (better upper bounds) of the label width of each
node. The computed layout guarantees that the distances between the nodes in a layer are at least equal to
the widest label in this layer.
Compute the lenghts of all edges of a given graph with assigned coordinates for the nodes. If the -redirect option is set
then it is assumed that the graph has indices as node attributes which point into the coordinate section.
Produce a 3-d embedding for the graph using the spring embedding algorithm
along the lines of
Thomas Fruchtermann and Edward Reingold:
Graph Drawing by Force-directed Placement.
Software Practice and Experience Vol. 21, 1129-1164 (1992), no. 11
The initial node coordinates are chosen randomly on the unit sphere.
The optional parameter -seed controls the initial setting.
In the standard setting, the embedding algorithm tries to stretch all edges to the
same length. If you prefer different edge lengths, store them as the edge attributes
of the input graph, and put the -read-edge-weights option on the command line.
If the nodes already have an embedding in Rd and there is a linear or abstract objective function defined
in the coordinate space, it can be used to rearrange the 3-d embedding along the z-axis corresponding
to the objective function growth. This mode is enabled with option -z-ordering.
The embedding algorithm can be fine-tuned with several "black magic" options.
All of them take double values, which are multiplied with internal initial settings,
so all defaults are equal to 1.
-scale enlarges the ideal edge length. -balance changes the balance between the
edge contraction and node repulsion forces. -inertion and -viscosity affects how the nodes
are moved, and can be used to restrain oscillations. -z-factor changes the relative influence
of the objective function on the embedding. -eps controls how far a point may move, to be
considered standing still.
Input: simplicial complex given by its Hasse diagram
Output: a Morse matching
This client computes a Morse matching. Two heuristics are implemented:
A simple greedy algorithm:
The arcs are visited in lexicographical order, i.e.:
we proceed by levels from top to bottom,
visit the faces in each dimension in lexicographical order,
and visited the faces covered by these faces in lexicographical order.
This heuristic is used with no options and with -greedy.
A Morse matching can be improved by canceling critical cells
along unique alternating paths, see function
processAlternatingPaths() in file morse_matching_tools.h .
This idea is due to Robin Forman:
Morse Theory for Cell-Complexes,
Advances in Math., 134 (1998), pp. 90-145.
This heuristic is used with no options and with -cancel.
The default setting is to run the greedy algorithm and then improve
the result by the canceling algorithm, i.e., option -both is
the default.
Morse matchings for the bottom level can be found optimally by
spanning tree techniques. This can be enabled by the option
-bottom. If the complex is a pseudo-manifold the same can be
done for the top level (option -top). By specifying option
-bottomtop, both levels can be computed by spanning trees. For 2-dim
pseudo-manifolds this computes an optimal Morse matching.
Produces the minimal (with respect to inclusion) non-faces of a simplicial complex.
Only the facets of the complex are used as input, i.e., no hasse diagram is computed.
This implements an old algorithm described by Lawler:
"Covering problems: duality relations and a new method of solution"
SIAM J. Appl. Math., Vol. 14, No. 5, 1966
See also Chapter 2 of "Hypergraphs", C. Berge, North-Holland, Amsterdam, 1989
Determine whether two given complexes are combinatorially isomorphic.
The answer is written as a boolean property result_section of the first file.
If the result section is omitted, prints the vertex and facet permutations to the standard output.