Kleetope

In geometry and polyhedral combinatorics, the Kleetope of a polyhedron or higher-dimensional convex polytope P is another polyhedron or polytope PK formed by replacing each facet of P with a shallow pyramid.[1] Kleetopes are named after Victor Klee.[2]

Examples

The triakis tetrahedron is the Kleetope of a tetrahedron, the triakis octahedron is the Kleetope of an octahedron, and the triakis icosahedron is the Kleetope of an icosahedron. In each of these cases the Kleetope is formed by adding a triangular pyramid to each face of the original polyhedron. Conway generalizes Kepler's kis prefix as this same kis operator.

Kleetopes of the Platonic solids

triakis tetrahedron
Kleetope of tetrahedron.

tetrakis hexahedron
Kleetope of cube.

triakis octahedron
Kleetope of octahedron.

pentakis dodecahedron
Kleetope of dodecahedron.

triakis icosahedron
Kleetope of icosahedron.

The tetrakis hexahedron is the Kleetope of the cube, formed by adding a square pyramid to each of its faces, and the pentakis dodecahedron is the Kleetope of the dodecahedron, formed by adding a pentagonal pyramid to each face of the dodecahedron.

Some other convex Kleetopes

disdyakis dodecahedron
Kleetope of rhombic dodecahedron.

disdyakis triacontahedron
Kleetope of rhombic triacontahedron.

tripentakis icosidodecahedron
Kleetope of icosidodecahedron.

Bipyramids, such as this pentagonal bipyramid, can be seen as the Kleetope of their respective dihedra.

The base polyhedron of a Kleetope does not need to be a Platonic solid. For instance, the disdyakis dodecahedron is the Kleetope of the rhombic dodecahedron, formed by replacing each rhombus face of the dodecahedron by a rhombic pyramid, and the disdyakis triacontahedron is the Kleetope of the rhombic triacontahedron. In fact, the base polyhedron of a Kleetope does not need to be Face-transitive, as can be seen from the tripentakis icosidodecahedron above.

The Goldner–Harary graph may be represented as the graph of vertices and edges of the Kleetope of the triangular bipyramid.

Some nonconvex Kleetopes, based on the Kepler-Poinsot solids

small stellapentakis dodecahedron
Kleetope of small stellated dodecahedron.

great stellapentakis dodecahedron
Kleetope of great stellated dodecahedron.

great pentakis dodecahedron
Kleetope of great dodecahedron.

great triakis icosahedron
Kleetope of great icosahedron.

Definitions

One method of forming the Kleetope of a polytope P is to place a new vertex outside P, near the centroid of each facet. If all of these new vertices are placed close enough to the corresponding centroids, then the only other vertices visible to them will be the vertices of the facets from which they are defined. In this case, the Kleetope of P is the convex hull of the union of the vertices of P and the set of new vertices.[3]

Alternatively, the Kleetope may be defined by duality and its dual operation, truncation: the Kleetope of P is the dual polyhedron of the truncation of the dual of P.

Properties and applications

If P has enough vertices relative to its dimension, then the Kleetope of P is dimensionally unambiguous: the graph formed by its edges and vertices is not the graph of a different polyhedron or polytope with a different dimension. More specifically, if the number of vertices of a d-dimensional polytope P is at least d2/2, then PK is dimensionally unambiguous.[4]

If every i-dimensional face of a d-dimensional polytope P is a simplex, and if id 2, then every (i + 1)-dimensional face of PK is also a simplex. In particular, the Kleetope of any three-dimensional polyhedron is a simplicial polyhedron, a polyhedron in which all facets are triangles.

Kleetopes may be used to generate polyhedra that do not have any Hamiltonian cycles: any path through one of the vertices added in the Kleetope construction must go into and out of the vertex through its neighbors in the original polyhedron, and if there are more new vertices than original vertices then there are not enough neighbors to go around. In particular, the Goldner–Harary graph, the Kleetope of the triangular bipyramid, has six vertices added in the Kleetope construction and only five in the bipyramid from which it was formed, so it is non-Hamiltonian; it is the simplest possible non-Hamiltonian simplicial polyhedron.[5] If a polyhedron with n vertices is formed by repeating the Kleetope construction some number of times, starting from a tetrahedron, then its longest path has length O(nlog3 2); that is, the shortness exponent of these graphs is log3 2, approximately 0.630930. The same technique shows that in any higher dimension d, there exist simplicial polytopes with shortness exponent logd 2.[6] Similarly, Plummer (1992) used the Kleetope construction to provide an infinite family of examples of simplicial polyhedra with an even number of vertices that have no perfect matching.

Kleetopes also have some extreme properties related to their vertex degrees: if each edge in a planar graph is incident to at least seven other edges, then there must exist a vertex of degree at most five all but one of whose neighbors have degree 20 or more, and the Kleetope of the Kleetope of the icosahedron provides an example in which the high-degree vertices have degree exactly 20.[7]

Notes

gollark: - `make`/`new` are basically magic- `range` is magic too - what it does depends on the number of return values you use, or something. Also, IIRC user-defined types can't implement it- Generics are available for all of, what, three builtin types? Maps, slices and channels, if I remember right.- `select` also only works with the built-in channels- Constants: they can only be something like four types, and what even is `iota` doing- The multiple return values can't be used as tuples or anything. You can, as far as I'm aware, only return two (or, well, more than one) things at once, or bind two returns to two variables, nothing else.- no operator overloading- it *kind of* has exceptions (panic/recover), presumably because they realized not having any would be very annoying, but they're not very usable- whether reading from a channel is blocking also depends how many return values you use because of course
gollark: What, you mean no it doesn't have weird special cases everywhere?
gollark: It pretends to be "simple", but it isn't because there are bizarre special cases everywhere to make stuff appear to work.
gollark: So of course, lol no generics.
gollark: Well, golang has no (user-defined) generics, you see.

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.