#include <ncensus.h>
Static Public Member Functions | |
unsigned long | formCensus (NPacket *parent, unsigned nTetrahedra, NBoolSet finiteness, NBoolSet orientability, NBoolSet boundary, int nBdryFaces, int whichPurge, AcceptTriangulation sieve=0, void *sieveArgs=0, NProgressManager *manager=0) |
Fills the given packet with all triangulations in a census of 3-manifold triangulations satisfying the given constraints. | |
unsigned long | formPartialCensus (const NFacePairing *pairing, NPacket *parent, NBoolSet finiteness, NBoolSet orientability, int whichPurge, AcceptTriangulation sieve=0, void *sieveArgs=0) |
Fills the given packet with all triangulations in a partial census of 3-manifold triangulations satisfying the given constraints. | |
bool | mightBeMinimal (NTriangulation *tri, void *ignore) |
Determines whether the given triangulation even has a chance at being minimal. | |
unsigned long | findAllCompletions (NPacket *parent, NTriangulation *base, NBoolSet finiteness, NBoolSet orientability, AcceptTriangulation sieve=0, void *sieveArgs=0, NProgressManager *manager=0) |
Fills the given packet with all completions of the given base triangulation. | |
Static Public Attributes | |
const int | PURGE_NON_MINIMAL |
Indicates that non-minimal triangulations may be ignored. | |
const int | PURGE_NON_PRIME |
Indicates that any triangulation that is not prime (i.e., can be written as a non-trivial connected sum) and any bounded triangulation that is reducible over a disc may be ignored. | |
const int | PURGE_NON_MINIMAL_PRIME |
Indicates that any triangulation that is not prime (i.e., can be written as a non-trivial connected sum), any bounded triangulation that is reducible over a disc and any triangulation that is non-minimal may be ignored. | |
const int | PURGE_P2_REDUCIBLE |
Indicates that any triangulation containing an embedded two-sided projective plane may be ignored. |
Other tasks (such as finding all completions of a triangulation with boundary) are also offered.
|
Fills the given packet with all completions of the given base triangulation. The base triangulation should have boundary faces; a completion is simply a new triangulation formed from the base triangulation by gluing all of the boundary faces to each other in some fashion (a completion will have no boundary faces at all). Each completion of the given base triangulation will appear as a child of the given parent packet. This routine currently enumerates all completions, regardless of combinatorial isomorphism. This behaviour may change when this routine become more mature. The set of completions can be optionally restricted to only include triangulations satisfying further constraints (such as orientability and finiteness); see the individual parameter descriptions for further details. In particular, parameter sieve can be used to impose artibrary restrictions that are not hard-coded into this class. Note that if constraints may be imposed using the hard-coded parameters (such as orientability and finiteness), it is generally better to do this than to use the arbitrary constraint parameter sieve. Hard-coded parameters will be tested earlier, and some (such as orientability) can be incorporated directly into the completion algorithm to give a vast performance increase. Only valid triangulations will be produced; see NTriangulation::isValid() for further details. Note that this routine should only be used if the set of completions is small enough to avoid any memory disasters. If a progress manager is passed, the calculation will run in a new thread and this routine will return immediately. Otherwise the calculation will run in the current thread and this routine will only return once the census is complete.
|
|
Fills the given packet with all triangulations in a census of 3-manifold triangulations satisfying the given constraints. Each triangulation in the census will appear as a child of the given packet. This routine will conduct a census of all valid triangulations containing a given number of tetrahedra. All such triangulations are included in the census up to combinatorial isomorphism; given any isomorphism class, exactly one representative will appear in the census. The census can be optionally restricted to only include triangulations satisfying further constraints (such as orientability and finiteness); see the individual parameter descriptions for further details. In particular, parameter sieve can be used to impose arbitrary restrictions that are not hard-coded into this class. Note that if constraints may be imposed using the hard-coded parameters (such as orientability and finiteness), it is generally better to do this than to use the arbitrary constraint parameter sieve. Hard-coded parameters will be tested earlier, and some (such as orientability) can be incorporated directly into the census algorithm to give a vast performance increase. Parameter whichPurge may be used to further avoid constructing triangulations satisfying particular constraints (such as non-minimality). This can significantly speed up the census. In this case however not all such triangulations will be avoided, but it is guaranteed that every triangulation that does not satisfy the constraints defined by whichPurge will be produced. Only valid triangulations will be produced; see NTriangulation::isValid() for further details. Note that this routine should only be used if the census contains a small enough total number of triangulations to avoid any memory disasters. If a progress manager is passed, the calculation will run in a new thread and this routine will return immediately. Otherwise the calculation will run in the current thread and this routine will only return once the census is complete.
|
|
Fills the given packet with all triangulations in a partial census of 3-manifold triangulations satisfying the given constraints. Each triangulation in the partial census will appear as a child of the given packet. This routine will conduct a census of all valid triangulations that are modelled by the given tetrahedron face pairing. All such triangulations are included in the census up to combinatorial isomorphism; given any isomorphism class, exactly one representative will appear in the census. The census can be optionally restricted to only include triangulations satisfying further constraints (such as orientability and finiteness); see the individual parameter descriptions for further details. In particular, parameter sieve can be used to impose arbitrary restrictions that are not hard-coded into this class. Note that if constraints may be imposed using the hard-coded parameters (such as orientability and finiteness), it is generally better to do this than to use the arbitrary constraint parameter sieve. Hard-coded parameters will be tested earlier, and some (such as orientability) can be incorporated directly into the census algorithm to give a vast performance increase. Parameter whichPurge may be used to further avoid constructing triangulations satisfying particular constraints (such as non-minimality). The use of this parameter, combined with parameters finiteness and orientability, can significantly speed up the census. For some combinations of these parameters entirely different algorithms are used. Note however that not all triangulations described by parameter whichPurge will be avoided. It is guaranteed however that every triangulation that does not satisfy the constraints defined by whichPurge will be produced. Only valid triangulations will be produced; see NTriangulation::isValid() for further details. Note that this routine should only be used if the partial census contains a small enough total number of triangulations to avoid any memory disasters. The partial census will run in the current thread. This routine will only return once the partial census is complete.
|
|
Determines whether the given triangulation even has a chance at being minimal. This routine can be passed as parameter sieve to routine NCensus::formCensus() to exclude obviously non-minimal triangulations from a census. A variety of tests will be performed; these tests are subject to change between Regina releases. Currently this routine counts vertices and also tries to simplify the triangulation using NTriangulation::simplifyToLocalMinimum().
Currently this routine is only useful for triangulations whose faces are all internal; if the given triangulation has boundary faces then this routine will simply return
|
|
Indicates that non-minimal triangulations may be ignored.
|
|
Indicates that any triangulation that is not prime (i.e., can be written as a non-trivial connected sum), any bounded triangulation that is reducible over a disc and any triangulation that is non-minimal may be ignored. Note that this is simply a combination of the constants PURGE_NON_MINIMAL and PURGE_NON_PRIME. |
|
Indicates that any triangulation that is not prime (i.e., can be written as a non-trivial connected sum) and any bounded triangulation that is reducible over a disc may be ignored.
|
|
Indicates that any triangulation containing an embedded two-sided projective plane may be ignored.
|