Nanoinformatics pp 97-130 | Cite as

# Polyhedron and Polychoron Codes for Describing Atomic Arrangements

## Abstract

The arrangement of atoms can be represented as a tiling of Voronoi polyhedra by using the Voronoi tessellation. We can know how an atom is surrounded by its first nearest neighbour atoms by knowing the shape of the Voronoi polyhedron associated with that atom. Furthermore, by knowing how a Voronoi polyhedron is surrounded by other Voronoi polyhedra, we can know how an atom is surrounded by its first nearest neighbours, second nearest neighbours, third nearest neighbours, …. However, there existed no methods for describing the arrangements of polyhedra, or atomic arrangements. To overcome this problem, we have recently created the polyhedron and polychoron codes [Sci. Rep. 6, 23455, Sci. Rep. 7, 40269, and Bull. Soc. Sci. Form 32, 1 (2017)]. In this chapter, we review the methods.

## Keywords

Voronoi polyhedron Amorphous Glass Atomic structure analysis Molecular dynamics simulation## 6.1 Introduction

Since the properties of materials depend on how atoms are arranged [1, 2], understanding the arrangement of atoms is essential for studying the material properties. When we perform molecular dynamics or Monte Carlo simulations, we obtain the xyz coordinates of all the atoms. However, knowing all the atomic coordinates does not mean understanding the atomic arrangements. To understand the atomic arrangements, the essence should be extracted from the raw data of the atomic coordinates.

Considering that the knowledge of square pyramids was used to construct the ancient pyramids of Egypt at Gaza, the study of polyhedra has a more than 4500 years history [16, 17]. However, as described above, there existed no methods for briefly representing polyhedra and assemblages of polyhedra in a unified way. To overcome this problem, we have created the polyhedron code (\( p_{3} \)-code) and the polychoron code (\( p_{4} \) *-*code) [11, 12, 18, 19]. The \( p_{3} \)-code is a method for briefly representing polyhedra. It consists of (1) an encoding algorithm for converting a way of how polygons are arranged to form a polyhedron into a sequence of numbers, which we call a polyhedron codeword (\( p_{3} \)-codeword, or \( p_{3} \) for short) and (2) a decoding algorithm for recovering the original polyhedron from its \( p_{3} \). The \( p_{4} \)-code is a generalization of the \( p_{3} \)-code for representing assemblages of polyhedra. By using the \( p_{4} \) *-*code, a way of how polyhedra are arranged to form a polyhedral assemblage can be converted into a sequence of \( p_{3} \)s, which we call a polychoron codeword (\( p_{4} \)-codeword, or \( p_{4} \) for short), from which the original polyhedral assemblage can be recovered. In this chapter, we review the \( p_{3} \)-code and \( p_{4} \) *-*code [11, 12, 18, 19].

## 6.2 Polyhedron Code

### 6.2.1 Our Way of Viewing a Polyhedron

We regard a polyhedron as a tiling by polygons of the surface of a three-dimensional object that is topologically the same as a sphere. We are interested in the relative arrangements of polygons (which polygons are glued to which polygons), while we ignore measures such as lengths and angles.

*contribute*’. For example, when we say that corners contribute to a vertex or a vertex is contributed by corners, we mean that the vertex is a point of a polyhedron at which the corners of polygons meet. We also say that a polygon (side) contributes to a vertex if one of its corners (endpoints) contributes to that vertex. When we say that an edge is contributed by sides, we mean that the edge is a line segment of a polyhedron along which the sides of polygons meet. The face of a polyhedron is a polygon. But when we call a polygon, we regard it as a building block of a polyhedron. So, we may say the edge of a face. But we cannot say the edge of a polygon.

We first describe a method for simple polyhedra. By a simple polyhedron, we mean that every vertex is degree three. Here, the degree of a vertex is the number of edges incident to that vertex. We use the property that every vertex of a simple polyhedron is contributed by three corners in the method for simple polyhedra. After describing the method for simple polyhedra, we generalize it to non-simple polyhedra.

### 6.2.2 Decoding Simple Polyhedra

The \( p_{3} \)-code consists of encoding and decoding algorithms. Since the decoding algorithm is incorporated in the encoding algorithm, we first describe the decoding algorithm. To formulate the decoding algorithm, simple but a lot of new ideas must be introduced. However, the completed algorithm can be described easily. We describe the completed algorithm below. See Ref. [18] for its formulation.

#### 6.2.2.1 How to Recover a 34443-Polyhedron

*dangling side*’. The dangling side is a side that is not glued to another side. In the example of Fig. 6.8, the sides \( 1_{2} , 1_{3} , 2_{2} , 2_{3} , {\text{and }} 2_{4} \) are the dangling sides. We call the dangling side with the smallest ID the

*s-side*. In the example of Fig. 6.8, the dangling side \( 1_{2} \) is the s-side.

*rectify*it by glueing together the dangling sides contributing to it as illustrated in Fig. 6.10. As a result, the illegal vertex is removed. We call the structure thus obtained the partial polyhedron 3.

We then repeat procedures described above. Specifically, we glue the side \( 4_{1} \) (the side 1 of the polygon 4) to the s-side \( 1_{3} \) of the partial polyhedron 3. As a result, two illegal vertices are generated. We, therefore, rectify them, and obtain the partial polyhedron 4. Then, we glue the side \( 5_{1} \) (the side 1 of the polygon 5) to the s-side \( 2_{3} \) of the partial polyhedron 4, and rectify illegal vertices. As a result, the 34443-polyhedron is completed.

In addition to the number sequence 34443, the polyhedron illustrated in Fig. 6.5 can be constructed from 43434 or 44343. Note that the number sequence 34443 is the sequence of numbers three, four, four, four and three. To give only one unique number sequence to the polyhedron, we regard the number sequences as numbers. Since the 34443, thirty-four thousand four hundred forty-three, is the smallest of three, we define it as the unique number sequence of the polyhedron. Therefore, we call the polyhedron the 34443-polyhedron.

#### 6.2.2.2 Polyhedron Codeword

As we have seen, the polyhedron illustrated in Fig. 6.5 can be represented by 34443. We refer to the number sequence 34443 that represents the polyhedron as the \( p_{3} \)-codeword. The subscript 3 indicates that a polyhedron is a three-dimensional object.

Here, we refer to the pair of \( y\left( i \right) \) and \( x\left( i \right) \) as a *necessary additional pair* (*necessary a-pair*). Note that a necessary a-pair is identical with a non-curable a-pair of Ref. [18]. To stress that the a-pair is necessary, we call a non-curable a-pair a necessary a-pair in this chapter. The necessary a-pair \( y\left( i \right)x\left( i \right) \) instructs that the sides \( y\left( i \right) \) and \( x\left( i \right) \) should be glued together. \( N_{\text{na}} \) is the number of the necessary a-pairs. Note that \( y\left( i \right) > x\left( i \right) \) and \( y\left( i \right) < y\left( {i + 1} \right) \).

#### 6.2.2.3 Algorithm for Recovering the Original Polyhedron from \( {p}_{3} \)

In Sect. 6.2.2.1, we have described how to recover the 34443-polyhedron. Here, we describe how to recover the original polyhedron from its \( p_{3} = ps_{2} ;sp \).

- 1.
\( i = 1 \)

- (a)
Polygon \( \alpha \) is a \( p_{2} \left( \alpha \right) \)-gon\(\left({1 \le \alpha \le F} \right)\).

- (b)
Assign IDs (\( \alpha_{1} , \alpha_{2} , \alpha_{3} , \ldots , \alpha_{{p_{2} \left( \alpha \right)}} \)) to sides of polygon \( \alpha \) in a clockwise direction.

- (c)
Polygon 1 is partial polyhedron 1.

- (a)
- 2.
\( i = i + 1 \)

- (a)
Glue side \( i_{1} \) to the s-side of partial polyhedron \( i - 1 \).

- (b)
When side \( y\left( \beta \right) \) (\( 1 \le \beta \le N_{\text{na}} \)) is a side of polygon \( i \), glue side \( y\left( \beta \right) \) to side \( x\left( \beta \right) \).

- (c)
Rectify illegal vertices.

- (d)
Resultant structure is partial polyhedron \( i \).

- (a)
- 3.
Repeat procedure 2 until all the polygons are placed.

### 6.2.3 Encoding Simple Polyhedra

#### 6.2.3.1 Schlegel Diagram

*abc*of the Schlegel diagram corresponds to the interior of the polygon

*abc*of the polyhedron. Second, counterclockwise directions around inside polygons of a Schlegel diagram correspond to clockwise directions around the corresponding polygons of the polyhedron, while a clockwise direction around the outside polygon of a Schlegel diagram corresponds to a clockwise direction around the corresponding polygon of the polyhedron. For example, a travel \( z \to x \to a \to c \) in the Schlegel diagram is in a counterclockwise direction. However, the corresponding travel in the polyhedron is in a clockwise direction. On the other hand, a travel \( a \to b \to c \) around the outside polygon of the Schlegel diagram and the corresponding travel in the polyhedron are both in clockwise directions. Figure 6.13b illustrates the decoding process of the 34443-polyhedron by using Schlegel diagrams.

#### 6.2.3.2 Polygon-Sequence Codeword

When encoding a polyhedron, we first choose a polygon and its side as a seed. Different seeds yield different \( p_{3} \)s. To assign one unique \( p_{3} \) to that polyhedron, we introduce the lexicographical number \( {\text{Lex}}\left( {p_{3} } \right) \). We define \( p_{3} \) with the smallest lexicographical number as the unique \( p_{3} \) of that polyhedron. We have described the lexicographical numbers of 34443, 43434, and 44343 in Sect. 6.2.2.1. We will describe how to deal with \( p_{3} = ps_{2} ;sp \) in Sect. 6.2.3.7.

The \( p_{3} \)-codeword consists of \( ps_{2} \) and \( sp \). We first describe how to generate \( ps_{2} \). The \( ps_{2} \)-codeword is the sequence of \( p_{2} \left( i \right) \) s. Generating \( ps_{2} \) is, therefore, assigning IDs to polygons. To distinguish between polygons to which IDs have already been assigned and polygons to which IDs will be assigned later, we use colours. We first colour all the polygons. When an ID is assigned, we make the polygon transparent.

When decoding, we have defined a dangling side as a side that is not glued to another side. In encoding, we define a dangling side as a side of a transparent polygon that is glued to a coloured polygon. In Fig. 6.14b, the sides \( 1_{1} , 1_{2} , {\text{and }} 1_{3} \) are dangling sides. Since \( 1_{1} \) is the lexicographically smallest, the side \( 1_{1} \) is the s-side. The polygon 2 is the one that is glued to the s-side \( 1_{1} \). Since the polygon 2 is a square, \( p_{2} \left( 2 \right) = 4 \). We assign IDs to the sides of the polygon 2 from the side glued to the s-side \( 1_{1} \) in a clockwise direction, and then make the polygon 2 transparent (Fig. 6.14c). We note that the side IDs of the polygon 2 are assigned in a counterclockwise direction in Fig. 6.14c. This is because a counterclockwise direction around any polygon of the Schlegel diagram other than the outside polygon corresponds to a clockwise direction around the corresponding polygon of a polyhedron.

All that is left now is to repeat above described procedures. Specifically, since the polygon that is glued to the s-side \( 1_{2} \) is the polygon 3, \( p_{2} \left( 3 \right) = 4 \). After assigning IDs to its sides, we make the polygon 3 transparent (Fig. 6.14d). The polygon 4 is the one that is glued to the s-side \( 1_{3} \), and \( p_{2} \left( 4 \right) = 4 \). After assigning IDs to its sides, we make the polygon 4 transparent (Fig. 6.14e). The polygon 5 is the one that is glued to the s-side \( 2_{3} \), and \( p_{2} \left( 5 \right) = 3 \). After assigning IDs to its sides, we make the polygon 5 transparent (Fig. 6.14f). All the polygons have become transparent, and \( ps_{2} = 34443 \) has been completed.

To summarize, for a given seed, \( ps_{2} \) can be generated as follows.

- 1.
\( i = 1 \)

- (a)
Polygon chosen as a seed is polygon 1.

- (b)
Assign IDs (\( 1_{1} , 1_{2} , 1_{3} , \ldots , 1_{{p_{2} \left( 1 \right)}} \)) to its sides in a clockwise direction from the side chosen as a seed.

- (c)
Make polygon 1 transparent.

- (a)
- 2.\( i = i + 1 \)
- a.
Polygon glued to the s-side is polygon \( i \).

- b.
Assign IDs (\( i_{1} , i_{2} , i_{3} , \ldots , i_{{p_{2} \left( i \right)}} \)) to its sides in a clockwise direction from the side that is glued to the s-side.

- c.
Make polygon \( i \) transparent.

- a.
- 3.
Repeat the procedure 2 until all the polygons get transparent.

Face and side IDs are assigned by generating \( ps_{2} \). By using the side IDs, we can assign edge and vertex IDs. The edge IDs will be used when generalizing the \( p_{3} \)-code to the \( p_{4} \)-code for polyhedral assemblages, while vertex IDs will be used when dealing with non-simple polyhedra.

#### 6.2.3.3 Outline of How to Generate \( {sp} \)

To describe how to generate \( sp \), we need to introduce simple but a lot of new ideas. One of them is the zeroth tentative \( sp \) (\( tsp^{\left( 0 \right)} \)). Although details are given in Ref. [18], we note that \( tsp^{\left( 0 \right)} \) is defined so that it has following properties;

- 1.
The original polyhedron can be recovered from \( ps_{2} ;tsp^{\left( 0 \right)} \) by using Algorithm A (Sect. 6.2.2.3),

- 2.
but \( tsp^{\left( 0 \right)} \) can contain information that is not needed for recovering the original polyhedron.

The \( sp \)-codeword is obtained by reducing the redundancy in \( tsp^{\left( 0 \right)} \).

To describe details of \( tsp^{\left( 0 \right)} \), we need to describe a-pairs. For this purpose, we first describe a term ‘*plot*’.

#### 6.2.3.4 Plot

*chained*. We call the chain of dangling sides the plot. We also call a separate dangling side the plot. We assign the smallest ID of the dangling sides constituting a plot to that plot. In an example shown in Fig. 6.20, the dangling sides \( 1_{2} \) and \( 2_{4} \) of different polygons adjoin each other, so that they are chained. On the other hand, since the dangling sides \( 1_{2} \) and \( 1_{3} \) belong to the same polygon, they are not chained. Similarly, the dangling sides \( 2_{3} \) and \( 2_{4} \) are not chained. Therefore, the dangling sides \( 1_{2} \) and \( 2_{4} \) constitute the plot \( 1_{2} \). Similarly, the dangling sides \( 1_{4} \) and \( 2_{2} \) constitute the plot \( 1_{4} \). The separate dangling side \( 1_{3} \) constitutes the plot \( 1_{3} \) by itself. Similarly, the separate dangling side \( 2_{3} \) froms the plot \( 2_{3} \). Here, we point out that the dangling sides of the same plot are all glued to the same polygon.

In Ref. [18], we defined ‘chained’ as follows: two dangling sides are chained when they contribute to the same vertex contributed by two transparent polygons. However, the definition is complicated. In Ref. [12], we have found that the same term ‘chained’ can be defined more briefly, and we use this brief definition as described above.

#### 6.2.3.5 How to Generate \( {tsp}^{\left( 0 \right)} \)

*s-plot*for short) is the plot \( 1_{1} \), to which the polygon 2 is glued. In general, the polygon \( i \) is glued to the s-plot of \( P\left( {i - 1} \right) \). This is because, by definition, the polygon that is glued to the s-side of \( P\left( {i - 1} \right) \) is the polygon \( i \). Figure 6.21c illustrates \( P\left( 7 \right) \), where the polygon 8 is glued to the s-plot \( 3_{4} \). In addition to the s-plot, the polygon 8 is glued to the plot \( 5_{6} \), which we call an additional plot. In general, the additional plots of \( P\left( {i - 1} \right) \) are plots other than the s-plot to which the polygon \( i \) is glued. By definition, the smallest ID of dangling sides constituting the additional plot \( 5_{6} \) is \( 5_{6} \). The side \( 5_{6} \) is glued to the side \( 8_{5} \) of the polygon 8, and we refer to the pair of the sides \( 8_{5} \) and \( 5_{6} \) as the a-pair \( 8_{5} 5_{6} \). Note that the lexicographically larger \( 8_{5} \) proceeds \( 5_{6} \). As is illustrated in Fig. 6.21d, \( 10_{4} 5_{4} \) is also an a-pair. When generating \( ps_{2} \) of the polyhedron illustrated in Fig. 6.21a, \( 8_{5} 5_{6} \) and \( 10_{4} 5_{4} \) are a-pairs. By collecting the a-pairs, \( tsp^{\left( 0 \right)} = 8_{5} 5_{6} 10_{4} 5_{4} \).

Here, \( y_{a} \left( i \right)x_{a} \left( i \right) \) is the \( i \)th a-pair, where \( y_{a} \left( i \right) > x_{a} \left( i \right) \) and \( y_{a} \left( i \right) < y_{a} \left( {i + 1} \right) \). \( N_{a} \) is the number of a-pairs.

#### 6.2.3.6 How to Generate \( {sp} \)

As described above, when we encode the polyhedron illustrated in Fig. 6.21a, we obtain \( ps_{2} ;tsp^{\left( 0 \right)} = 458585574755433;8_{5} 5_{6} 10_{4} 5_{4} \). The original polyhedron can be recovered from \( ps_{2} ;tsp^{\left( 0 \right)} \) using Algorithm A described in Sect. 6.2.2.3 (See Ref. [18] for its proof). But \( tsp^{\left( 0 \right)} \) can contain information that is not needed for recovering the original polyhedron.

For a given \( tsp^{\left( 0 \right)} \), \( sp \) can be generated as follows.

- 1.\( i = 0 \)
- (a)
\( tsp^{\left( 0 \right)} = y_{a} \left( 1 \right)x_{a} \left( 1 \right) y_{a} \left( 2 \right)x_{a} \left( 2 \right) y_{a} \left( 3 \right)x_{a} \left( 3 \right) \ldots y_{a} \left( {N_{a} } \right)x_{a} \left( {N_{a} } \right) \).

- (a)
- 2.\( i = i + 1 \)
- (a)
Construct \( test^{\left( i \right)} \) from \( tsp^{{\left( {i - 1} \right)}} \) by removing \( y_{a} \left( {N_{a} - i + 1} \right)x_{a} \left( {N_{a} - i + 1} \right) \).

- (b)
Decode from \( ps_{2} ;test^{\left( i \right)} \).

- ①
If the original polyhedron is recovered, then \( tsp^{\left( i \right)} = test^{\left( i \right)} \).

- ②
Otherwise, \( tsp^{\left( i \right)} = tsp^{{\left( {i - 1} \right)}} \).

- ①

- (a)
- 3.
Repeat the procedure 2, until we obtain \( tsp^{{\left( {N_{a} } \right)}} = sp \).

The \( sp \)-codeword is obtained from \( tsp^{\left( 0 \right)} \) by removing unnecessary a-pairs. In other words, \( sp \) consists of necessary a-pairs.

#### 6.2.3.7 Lexicographical Number of \( {p}_{3} \)

Different seeds yield different \( p_{3} \)s. To assign one unique \( p_{3} \) to a polyhedron, we describe the lexicographical number \( {\text{Lex}}\left( {p_{3} } \right) \). We regard \( {\text{Lex}}\left( {p_{3} } \right) \) as a base-\( n \) number, where \( n \) is any sufficiently large number as described below. Since \( p_{3} \) consists of \( ps_{2} \) and \( sp \), \( {\text{Lex}}\left( {p_{3} } \right) \) consists of \( {\text{Lex}}\left( {ps_{2} } \right) \) and \( {\text{Lex}}\left( {sp} \right) \). We first describe \( {\text{Lex}}\left( {ps_{2} } \right) \). Since \( ps_{2} \) is the sequence of \( F \) numbers, we define \( {\text{Lex}}\left( {ps_{2} } \right) \) as a \( F \)-digit base-\( n \) number \( {\text{Lex}}\left( {ps_{2} } \right) = p_{2} \left( 1 \right)p_{2} \left( 2 \right)p_{2} \left( 3 \right) \ldots p_{2} \left( F \right) \), where \( p_{2} \left( i \right) \) is the value of the \( \left( {F - i + 1} \right) \)th digit. Note that \( p_{2} \left( i \right) \) in the number sequence \( ps_{2} = p_{2} \left( 1 \right)p_{2} \left( 2 \right)p_{2} \left( 3 \right) \ldots p_{2} \left( F \right) \), is the \( i \)th number. Similarly, \( {\text{Lex}}\left( {sp} \right) \) is a \( 2N_{\text{na}} \)-digit base-\( n \) number \( y\left( 1 \right)x\left( 1 \right)y\left( 2 \right)x\left( 2 \right)y\left( 3 \right)x\left( 3 \right) \ldots y\left( {N_{\text{na}} } \right)x\left( {N_{\text{na}} } \right) \). \( {\text{Lex}}\left( {p_{3} } \right) \) is the concatenation of \( {\text{Lex}}\left( {ps_{2} } \right) \) and \( {\text{Lex}}\left( {sp} \right) \). For reference, the concatenation of 24 expressed in base-10 (twenty-four) and 5 expressed in base-10 (five) is 245 (two hundred forty-five).

Note that, to regard \( {\text{Lex}}\left( {p_{3} } \right) \) as a base-\( n \) number, \( n \) should be larger than \( p_{2} \left( i \right) \), \( y\left( i \right) \) and \( x\left( i \right) \). Since the number of sides of a polyhedron is \( 2E = 6\left( {F - 2} \right) \), \( n \) should be larger than \( 2E \). Here, \( E \) is the number of edges of a polyhedron.

Since there are \( 2E \) different selections of seeds, \( 2E \) different \( p_{3} \)s can be generated from a polyhedron. If we consider that the polyhedron is identical with its mirror image, additional \( 2E \) different \( p_{3} \)s can be generated from the mirror image. By selecting the smallest of \( 4E \) different \( p_{3} \)s, we can assign one unique \( p_{3} \) to the polyhedron. By considering that a polyhedron is identical with its mirror image, the unique \( p_{3} \)s can be used to determine the isomorphism of polyhedral graphs. A polyhedral graph is a planer triply connected graph that has no multiple edges. If we regard a region enclosed by two edges as a 2-gon, \( p_{3} \)s can be used to determine the isomorphism of planer triply connected graphs. When we want to distinguish the polyhedron from its mirror image, we may select the smallest of \( 2E \) different \( p_{3} \)s. But the unique \( p_{3} \)s thus generated cannot be used to determine the isomorphism of polyhedral graphs.

#### 6.2.3.8 Solving the Problem of Voronoi Index

### 6.2.4 Non-simple Polyhedron

#### 6.2.4.1 Cut-and-Dot Method

- 1.
Cut vertices of degree more than three.

- 2.
Choose a polygon that is not a cross section and its side that does not contribute to any edge of the cross sections as a seed.

- 3.
Generate \( p_{3} \) using Algorithm B.

- 4.
Put dots over numbers of \( ps_{2} \) corresponding to the cross sections.

- 1.
Assign IDs to a polyhedron with cross sections.

- 2.
Shrink cross sections to vertices. As a result, some IDs disappear.

- 3.
Relabel IDs so that they become sequential orders.

We have modified the definition of the s-side. As a result, IDs assigned using the method described above conform to IDs assigned by directly applying Algorithm B to the non-simple polyhedron. Note that a codeword can be generated by directly applying Algorithm B to a non-simple polyhedron. However, the original polyhedron cannot be recovered from the codeword using Algorithm A. For example, a pentagonal pyramid can be encoded as 533333. But it cannot be recovered from 533333.

To assign one unique codeword to a non-simple polyhedron, we define \( {\text{Lex}}\left( {p_{3} } \right) \) for \( p_{3} \) with dots. For this purpose, we define \( {\text{Lex}}\left( {ps_{2} } \right) \) as the concatenation of \( {\text{Lex}}\left( {ps_{2}^{\left( 1 \right)} } \right) \) and \( {\text{Lex}}\left( {ps_{2}^{\left( 2 \right)} } \right) \). The \( ps_{2}^{\left( 1 \right)} \)-codeword is obtained from \( ps_{2} \) by replacing every number without a dot by 0 and then removing all dots, while \( ps_{2}^{\left( 2 \right)} \) is obtained by removing all dots from \( ps_{2} \). For example, when \( ps_{2} = 544444\dot{5} \), \( ps_{2}^{\left( 1 \right)} = 0000005 \) and \( ps_{2}^{\left( 1 \right)} = 5444445 \). Therefore, \( {\text{Lex}}\left( {ps_{2} } \right) = 00000055444445 \).

#### 6.2.4.2 Using Duality

The cut-and-dot method described in the previous section is applicable to all non-simple polyhedra, but is sometimes inefficient. For example, the octahedron is encoded as \( 66\dot{4}6\dot{4}6\dot{4}6\dot{4}6\dot{4}6\dot{4}6 \). Since 6 is repeated twice and then \( \dot{4}6 \) is repeated six times, \( 66\dot{4}6\dot{4}6\dot{4}6\dot{4}6\dot{4}6\dot{4}6 \) can be shortened to \( 6^{2} \left( {\dot{4}6} \right)^{6} \). However, the representation of the octahedron with beautiful symmetries is not beautiful. We think that it is a problem. To overcome this problem, we use the duality of polyhedra [17, 21]. Since the octahedron is the dual of the hexahedron, we represent the octahedron as ★\( 4^{6} \). Here, ★ represents the dual, \( 4^{6} \) is \( p_{3} \) of the hexahedron, and ★\( 4^{6} \) means the dual of the \( 4^{6} \)-polyhedron. We describe the details of this method below.

- 1.
Put a vertex \( v_{i}^{*} \) of the dual polyhedron on the face \( f_{i} \) of the given polyhedron.

- 2.
Link \( v_{i}^{*} \) and \( v_{j}^{*} \) by the edge \( e_{ij}^{*} \), when \( f_{i} \) and \( f_{j} \) share an edge \( e \).

The dual of the octahedron is the hexahedron, and the dual of the hexahedron is the octahedron. Thus, the octahedron and hexahedron are dual to each other. By using ★, a polyhedron composed of triangles only can be briefly represented, for its dual is a simple polyhedron.

Since there is a one-to-one correspondence between an original polyhedron and its dual, we can determine the edge and face IDs of the original from those of its dual. For example, in an example shown in Fig. 6.27b, the face *dcf* of the octahedron corresponds to the vertex *m* of the hexahedron. We, therefore, assign the ID of the vertex *m* to the face *dcf*. Similarly, the edge *dc* of the octahedron corresponds to the edge *mi*. We, therefore, assign the ID of the edge *mi* to the edge *dc*.

When we encode a simple polyhedron, we first choose a seed, and then generate \( p_{3} \) from the seed. The side chosen as a seed contributes to the edge 1, and the polygon chosen as a seed becomes the polygon 1. Therefore, choosing a seed is determining the edge 1 and face 1. When we encode a non-simple polyhedron using the duality, we also choose a side and polygon of the non-simple polyhedron as a seed. We then choose a seed for its dual so that the edge of the dual corresponding to the edge of the original contributed by the side chosen as a seed becomes the edge 1 and that the vertex of the dual corresponding to the polygon of the original chosen as a seed becomes the vertex 1. For example, when we encode the octahedron with choosing the polygon *dcf* and its side *dc* as a seed, the polygon *mihl* and its side *mi* is a seed for its dual. Then 1 is assigned to the vertex *m* of the dual, and therefore to the polygon *dcf* of the original. Similarly, 1 is assigned to the edge *mi* of the dual, and therefore to the edge *dc* of the original contributed by the side *dc*.

Note that in Ref. [18], we determine the seed for the dual in a different way. But for simplicity, we have modified the method in Ref. [12], and the modified version is described above.

To assign one unique \( p_{3} \) to any non-simple polyhedron, we assume \( {\text{Lex}} \)(★) = 1 and define \( {\text{Lex}} \)(★\( p_{3} \)) as the concatenation of \( {\text{Lex}} \)(★) and \( {\text{Lex}} \)(\( p_{3} \)). By doing so, \( {\text{Lex}} \)(★\( 4^{6} \)) = 1444444, while \( {\text{Lex}}\left( {6^{2} \left( {\dot{4}6} \right)^{6} } \right) = 0040404040404066464646464646 \). Therefore, the unique \( p_{3} \) of the octahedron is ★\( 4^{6} \).

### 6.2.5 Relation Between an Atomic Arrangement and a Voronoi Polyhedron

## 6.3 Polychoron Code

We can study the short-range order of amorphous materials by classifying the Voronoi polyhedra with the \( p_{3} \)-code. We can study the long-range order by classifying assemblages of Voronoi polyhedra. A polyhedral assemblage can be regarded as a part of a polychoron (four-dimensional polytope). The \( p_{3} \)-code for polyhedra can be easily generalized to deal with polychora, for it is based on the hierarchy of structures of polytopes: a polyhedron (three-dimensional polytope) is an assemblage of polygons (two-dimensional polytopes). In this section, we generalize the \( p_{3} \)-code for polyhedra to the \( p_{4} \)-code for polychora. The \( p_{4} \)-code consists of the encoding algorithm for converting a polychoron into \( p_{4} \) and the decoding algorithm for recovering the original polychoron from its \( p_{4} \). The \( p_{4} \)-code can be used to study the long-range order of amorphous materials.

*abcdefgh*is illustrated in Fig. 6.29. We can see that the polychoron is an assemblage of two 3333-polyhedra and four 34443-polyhedra, and polyhedra are glued face to face. We note that the outside of the polyhedron

*abcd*of the Schlegel diagram corresponds to the inside of the polyhedron

*abcd*of the polychoron. By using the \( p_{4} \)-code, the polychoron

*abcdefgh*is represented by \( p_{4} \) = 3333 34443 34443 34443 34443 3333. The \( p_{4} \)-codeword is the sequence of \( p_{3} \)s and instructs how to construct the polychoron from its building-block polyhedra. Since the left most \( p_{3} \) is 3333, the polyhedron 1 is a 3333-polyhedron. Similarly, the polyhedra 2, 3, 4, and 5 are 34443-polyhedra, and the polyhedron 6 is a 3333-polyhedra. To describe the \( p_{4} \)-code, we first describe the relations between parts of polyhedra and parts of a polychoron.

### 6.3.1 Our Way of Viewing a Polychoron

### 6.3.2 1-Simple Polychoron

Polyhedra can be classified into simple and non-simple polyhedra according to the degrees of the vertices. As described above, we have first created the method for simple polyhedra, and then generalized it for non-simple polyhedra. Polychora can be classified into simple and non-simple polychora according to the types of the 0-faces as well. A polychoron whose 0-faces are all degree four is called a simple polychoron. Here, the degree of a 0-face is the number of peaks incident to that 0-face. However, to describe the \( p_{4} \)-code, we need to classify polychora according to the types of the peaks. We, therefore, generalize the concept of ‘simple’. For this purpose, we first define the degree of a peak as the number of ridges incident to that peak. We then call a polychoron whose peaks are all degree three a *1-simple* polychoron. The ‘1’ indicates the simplicity regarding one-dimensional parts of a polychoron, namely peaks or 1-faces. We first describe the method for 1-simple polychora, and then briefly describe the generalization of the method for non-1-simple polychora. In the method for 1-simple polychora, we use the property that every peak of a 1-simple polychoron is contributed by three edges.

Note that, using our generalized notation, a simple polychoron is called a 0-simple polychoron. Here, ‘0’ means the simplicity regarding zero-dimensional parts of a polychoron, namely 0-faces. Similarly, a simple polyhedron is a 0-simple polyhedron. If a polychoron is 0-simple, then it is also 1-simple, for its peaks are all degree three. However, a 1-simple polychoron is not always 0-simple. In other words, a set of 0-simple polychora is a subset of 1-simple polychora. For example, the 24-cell composed of 24 octahedra is 1-simple, but is not 0-simple. The polyhedra of a 0-simple polychoron are all 0-simple. On the other hand, the polyhedra of a 1-simple polychoron can be non-0-simple. For example, the octahedra of the 1-simple 24-cell are non-0-simple.

We also note that the definition of the peak degree described above is different from the definition given in Ref. [18]: the degree of a peak is the number of polyhedra contributing to that peak. In the previous definition, the polyhedra (building blocks of a polychoron) are focused. The previous definition, therefore, does not match the definition of the vertex degree where the edges (parts of a polyhedron) are focused: the degree of a vertex is the number of edges incident to that vertex. To match the definition of the vertex degree, namely to focus on the parts of a polychoron, we have introduced the new definition. In addition, in Ref. [18], we used the term ‘a non-affected polychoron’ to mean a 1-simple polychoron. However, since our new terminology is suitable for the systematic description of fundamental characteristics of polytopes, we use ‘1-simple’ instead of ‘non-affected’.

### 6.3.3 Polychoron Codeword

Here, \( w\left( i \right)z\left( i \right)v\left( i \right) \) is the necessary a-pair for the polychoron, instructing that the face \( w\left( i \right) \) and face \( v\left( i \right) \) should be glued together in such a way that the edge of the face \( w\left( i \right) \) contributed by the side \( z\left( i \right) \) is glued to the smallest ID edge of the face \( v\left( i \right) \). \( N_{\text{na}} \) is the number of necessary a-pairs. Note that \( w\left( i \right) > v\left( i \right) \) and \( w\left( i \right) < w\left( {i + 1} \right) \).

### 6.3.4 How to Generate \( ps_{3} \)

To encode a polychoron, we first chose a polyhedron, face of the polyhedron, and edge of the face as a seed. Depending on how we choose the seed, \( p_{4} \) changes. By using lexicographical numbers described in Sect. 6.3.8, one unique \( p_{4} \) can be assigned to each polychoron. The \( p_{4} \)-codeword consists of \( ps_{3} \) and \( fp \). We first describe how to generate \( ps_{3} \).

*s-face*.

For a given seed, \( ps_{3} \) can be generated as follows.

- 1.\( i = 1 \)
- a.
Polyhedron chosen as the seed is polyhedron 1.

- b.
Generate \( p_{3} \) of polyhedron 1 and assign IDs to its faces (edges) by encoding polyhedron 1 in such a way that \( 1_{1} \) is assigned to the face (edge) chosen as the seed.

- c.
Make polyhedron 1 transparent.

- a.
- 2.\( i = i + 1 \)
- a.
Polyhedron glued to the s-face is polyhedron \( i \).

- a.
Generate \( p_{3} \) of polyhedron \( i \) and assign IDs to its faces (edges) by encoding polyhedron \( i \) in such a way that \( i_{1} \) is assigned to the face glued to the s-face (the edge glued to the smallest ID edge of the s-face).

- b.
Make polyhedron \( i \) transparent.

- a.
- 3.
Repeat the procedure 2 until all the polyhedra get transparent.

### 6.3.5 How to Generate \( tfp^{\left( 0 \right)} \)

To describe \( fp \), we introduce a zeroth tentative \( fp \) (\( tfp^{\left( 0 \right)} \)). For this purpose, we introduce some ideas. When two dangling faces of different polyhedra adjoin each other, we consider that they are chained. The chained dangling faces constitute a plot. A separate dangling face also constitutes a plot by itself. We assign the smallest face ID of all the dangling faces constituting a plot to that plot.

Here, \( N_{\text{a}} \) is the number of a-pairs.

### 6.3.6 How to Recover a Polychoron from \( ps_{3} ;tsp^{\left( 0 \right)} \)

To describe how to recover a polychoron from its \( ps_{3} ;tsp^{\left( 0 \right)} \), we first describe the dangling face for decoding and an illegal peak. In decoding, we call a face that is not glued to another polyhedron a dangling face. When a peak contributed by two dangling faces is also contributed by three polyhedra, we call that peak an illegal peak. The illegal peak can be rectified by glueing the two dangling faces together.

The polychoron can be recovered from its \( ps_{3} ;tsp^{\left( 0 \right)} \) as follows:

- 1.\( i = 1 \)
- a.
Polyhedron \( \alpha \) is a \( p_{3} \left( \alpha \right) \)-polyhedron \( \left( {1 \le \alpha \le C} \right) \).

- b.
Assign \( \alpha_{j} \) to the \( j \)th face (edge) of polyhedron \( \alpha \).

- c.
Polyhedron 1 is partial polychoron 1.

- a.
- 2.\( i = i + 1 \)
- a.
Glue face \( i_{i} \) (face \( {\text{1}} \) of polyhedron \( i \)) to the s-face of partial polychoron \( i - 1 \).

- c.
When \( w_{a} \left( \beta \right) \) is the face ID of polyhedron \( i \) \( \left( {1 \le \beta \le N_{\text{a}} } \right) \), glue together faces \( w_{a} \left( \beta \right) \) and \( v_{a} \left( \beta \right) \) in such a way that the edge contributed by side \( z_{a} \left( \beta \right) \) is glued to the smallest ID edge of the face \( v_{a} \left( \beta \right) \).

- d.
Rectify illegal peaks.

- e.
Structure thus obtained is partial polychoron \( i \).

- a.
- 3.
Repeat the procedure 2 until all the polyhedra are placed.

For reference, recovering a polychoron from 3333 34443 34443 34443 34443 3333 is illustrated in Supplemental Information of Ref. [18].

### 6.3.7 How to Generate \( fp \)

The original polychoron can be recovered from \( ps_{3} ;tfp^{\left( 0 \right)} \) by using Algorithm E. However, \( tfp^{\left( 0 \right)} \) can contain information that is not necessary for recovering the original polychoron. The \( fp \)-codeword is obtained by reducing the redundancy in \( tfp^{\left( 0 \right)} \) as follows;

- 1.\( i = 0 \)
- a.
\( tfp^{\left( 0 \right)} = w_{a} \left( 1 \right)z_{a} \left( 1 \right)v_{a} \left( 1 \right) \ldots w_{a} \left( {N_{\text{a}} } \right)z_{a} \left( {N_{\text{a}} } \right)v_{a} \left( {N_{\text{a}} } \right) \).

- a.
- 2.\( i = i + 1 \)
- a.
Construct \( test^{\left( i \right)} \) by removing \( w_{a} \left( {N_{a} - i + 1} \right)z_{a} \left( {N_{a} - i + 1} \right)v_{a} \left( {N_{a} - i + 1} \right) \) from \( tfp^{{\left( {i - 1} \right)}} \).

- b.Decode from \( ps_{3} ;test^{\left( i \right)} \).
- i.
If the original polychoron is recovered, then \( tfp^{\left( i \right)} = test^{\left( i \right)} \).

- ii.
Otherwise, \( tfp^{\left( i \right)} = tfp^{{\left( {i - 1} \right)}} \).

- i.

- a.
- 3.
Repeat the procedure 2 until \( fp = tfp^{{\left( {N_{\text{a}} } \right)}} \) is obtained.

### 6.3.8 Lexicographical Number of \( p_{4} \)

Different \( p_{4} \)s are generated from different seeds. To determine one unique \( p_{4} \), we define \( {\text{Lex}}\left( {p_{4} } \right) \) as follows. Since \( p_{4} = ps_{3} ;fp \), \( {\text{Lex}}\left( {p_{4} } \right) \) is the concatenation of \( {\text{Lex}}\left( {ps_{3} } \right) \) and \( {\text{Lex}}\left( {fp} \right) \). Since \( ps_{3} \) is the sequence of \( p_{3} \left( i \right) \)s, \( {\text{Lex}}\left( {ps_{3} } \right) \) is a \( C \)-digit number \( {\text{Lex}}\left( {p_{3} \left( 1 \right)} \right){\text{Lex}}\left( {p_{3} \left( 2 \right)} \right){\text{Lex}}\left( {p_{3} \left( 3 \right)} \right) \ldots {\text{Lex}}\left( {p_{3} \left( C \right)} \right) \), where \( {\text{Lex}}\left( {p_{3} \left( i \right)} \right) \) is the value of the \( \left( {C - i + 1} \right) \)th digit. Similarly, \( {\text{Lex}}\left( {fp} \right) \) is a \( 3N_{\text{a}} \)-digit number \( {\text{Lex}}\left( {w\left( 1 \right)} \right){\text{Lex}}\left( {z\left( 1 \right)} \right){\text{Lex}}\left( {v\left( 1 \right)} \right) \ldots {\text{Lex}}\left( {w\left( {N_{\text{na}} } \right)} \right){\text{Lex}}\left( {z\left( {N_{\text{na}} } \right)} \right){\text{Lex}}\left( {v\left( {N_{\text{na}} } \right)} \right) \). A total of \( 12P \) \( p_{4} \)s are obtained from a polychoron and its mirror image, where \( P \) is the number of peaks. By choosing the lexicographically smallest one, we can assign one unique \( p_{4} \) to a polychoron.

### 6.3.9 Non-1-Simple Polychora

A 1-simple polychoron has one or more peaks of degree more than three. By cutting such peaks and distinguishing cross-section polyhedra from other polyhedra, a one-to-one correspondence can be established between a non-1-simple polychoron and a 1-simple polychoron with cross-section polyhedra. By using this correspondence, the \( p_{4} \)-code can be generalized to deal with non-1-simple polychora (See [18] for details). However, this approach is not always efficient. So, we also use the duality of polychora. By using the duality, the 5-cell can be represented by \( T^{4} \), the 8-cell by \( H^{8} \), the 16-cell by ★\( H^{8} \), the 24-cell by \( O^{24} \), the 120-cell by \( D^{120} \), and the 600-cell by ★\( D^{120} \). Here, \( T = 3333 = 3^{4} \) represents the tetrahedron, \( H = 444444 = 4^{6} \) represents the hexahedron, \( O = \) ★\( H \) represents the octahedron, and \( D = 555555555555 = 5^{12} \) represents the dodecahedron.

### 6.3.10 Ridge-Sequence Codeword

A polychoron relating to an amorphous material is 0-simple. Since they are all 0-simple, the polyhedra of a 0-simple polychoron can be represented without ‘\( \cdot \)’ and ‘★’. In other words, all the numbers of sides of polygons of a 0-simple polychoron are recorded in \( p_{4} \). We introduce a ridge-sequence codeword (\( rs \)) to briefly represent a 0-simple polychoron below.

We first describe tentative ridge IDs and ridge IDs. Since two face IDs are associated with every ridge, we tentatively assign the smaller face ID to the ridge. Since the tentative IDs thus assigned are not in a sequential order, we relabel the IDs so that the ridge \( i \) is the one with the \( i \)th smallest tentative ID.

### 6.3.11 Relation Between a Local Atomic Arrangement and an Assemblage of Voronoi Polyhedra

## 6.4 Summary

We have reviewed the \( p_{4} \)- and \( p_{3} \)-codes, which we have created as a method for studying the structures of amorphous materials [11, 12, 18, 19]. The \( p_{3} \)-code is a method for briefly representing polyhedra. It consists of (1) an encoding algorithm for converting a way of how polygons are arranged to form a polyhedron into \( p_{3} \) and (2) a decoding algorithm for recovering the original polyhedron from its \( p_{3} \). We can study the short-range order of amorphous materials by classifying Voronoi polyhedra according to their \( p_{3} \)s. The \( p_{4} \)-code is a generalization of the \( p_{3} \)-code for representing assemblages of polyhedra. By using the \( p_{4} \) *-*code, a way of how polyhedra are arranged to form a polyhedral assemblage can be converted into \( p_{4} \), from which the original polyhedral assemblage can be recovered. We can study the long-range order of amorphous materials by classifying assemblages of Voronoi polyhedra according to their \( p_{4} \)s.

## References

- 1.K. Nishio, J. Kōga, T. Yamaguchi, F. Yonezawa, Theoretical study of light-emission properties of amorphous silicon quantum dots. Phys. Rev. B
**67**, 195304 (2003). https://doi.org/10.1103/PhysRevB.67.195304 CrossRefGoogle Scholar - 2.K. Nishio, A.K.A. Lu, G. Pourtois, Low-strain Si/O superlattices with tunable electronic properties: ab initio calculations. Phys. Rev. B
**91**, 165303 (2015). https://doi.org/10.1103/PhysRevB.91.165303 CrossRefGoogle Scholar - 3.J. Bernal, Bakerian lecture 1962—structure of liquids. Proc. R. Soc. Lond. A-Math. Phys. Sci.
**280**, 299+ (1964). https://doi.org/10.1098/rspa.1964.0147 - 4.J. Finney, Random packings and structure of simple liquids. 1. Geometry of random close packing. Proc. R. Soc. Lond. A
**319**, 479–493 (1970). https://doi.org/10.1098/rspa.1970.0189 CrossRefGoogle Scholar - 5.J. Finney, Random packings and structure of simple liquids. 2. Molecular geometry. Proc. R. Soc. Lond. A
**319**, 495–507 (1970). https://doi.org/10.1098/rspa.1970.0190 CrossRefGoogle Scholar - 6.F. Yonezawa, Glass transition and relaxation of disordered structures. Solid State Phys.
**45**, 179–254 (1991)CrossRefGoogle Scholar - 7.Y.Q. Cheng, E. Ma, Atomic-level structure and structure–property relationship in metallic glasses. Prog. Mater. Sci.
**56**, 379–473 (2011). https://doi.org/10.1016/j.pmatsci.2010.12.002 CrossRefGoogle Scholar - 8.K. Nishio, J. Kōga, T. Yamaguchi, F. Yonezawa, Confinement-induced stable amorphous solid of Lennard-Jones Argon. J. Phys. Soc. Jpn.
**73**, 627–633 (2004). https://doi.org/10.1143/JPSJ.73.627 CrossRefGoogle Scholar - 9.K. Nishio, T. Miyazaki, H. Nakamura, Universal medium-range order of amorphous metal oxides. Phys. Rev. Lett.
**111**, 155502 (2013). https://doi.org/10.1103/PhysRevLett.111.155502 - 10.A. Hirata, L.J. Kang, T. Fujita et al., Geometric frustration of icosahedron in metallic glasses. Science
**341**, 376–379 (2013). https://doi.org/10.1126/science.1232450 CrossRefGoogle Scholar - 11.Creation of a mathematical method to express irregular atomic arrangements of amorphous materials, http://www.aist.go.jp/aist_e/list/latest_research/2017/20170201/en20170201.html. Accessed 28 Aug 2017
- 12.K. Nishio, T. Miyazaki, Polyhedron code—rule hidden in polyhedra (in Japanese). Bull. Soc. Sci. Form
**32**, 1 (2017)Google Scholar - 13.E.A. Lazar, J.K. Mason, R.D. MacPherson, D.J. Srolovitz, Complete topology of cells, grains, and bubbles in three-dimensional microstructures. Phys. Rev. Lett.
**109**, 095505 (2012). https://doi.org/10.1103/PhysRevLett.109.095505 - 14.L. Weinberg, On the maximum order of the automorphism group of a planar triply connected graph. SIAM J. Appl. Math.
**14**, 729–738 (1966). https://doi.org/10.1137/0114062 CrossRefGoogle Scholar - 15.L. Weinberg, A simple and efficient algorithm for determining isomorphism of planar triply connected graphs. IEEE Trans. Circuit Theory
**13**, 142–148 (1966). https://doi.org/10.1109/TCT.1966.1082573 CrossRefGoogle Scholar - 16.P.R. Cromwell,
*Polyhedra*(Cambridge University Press, 1999)Google Scholar - 17.I. Stewart, R. Wilson,
*Four Colors Suffice: How the Map Problem Was Solved*, Color edn. (Princeton University Press, Princeton, New Jersey, 2013)Google Scholar - 18.K. Nishio, T. Miyazaki, How to describe disordered structures. Sci. Rep.
**6**, 23455 (2016). https://doi.org/10.1038/srep23455 CrossRefGoogle Scholar - 19.K. Nishio, T. Miyazaki, Describing polyhedral tilings and higher dimensional polytopes by sequence of their two-dimensional components. Sci. Rep.
**7**, 40269 (2017). https://doi.org/10.1038/srep40269 CrossRefGoogle Scholar - 20.G.M. Ziegler,
*Lectures on Polytopes*(Springer, New York, 2012)Google Scholar - 21.R.J. Wilson,
*Introduction to Graph Theory*(Pearson, Harlow, England; New York, 2012)Google Scholar

## Copyright information

**Open Access** This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license and indicate if changes were made.

The images or other third party material in this chapter are included in the chapter’s Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter’s Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.