We have now seen a few different kinds of groups: groups of symmetries of a geometric object, integers under addition, integers modulo (n), and permutations. We can easily visualize the objects related to the group - like the geometric object, numbers, or the braid notation for permutations - but how can we visualize the group itself?

An excellent way to go about this is to identify a set of generators for the group. In a group we can always combine some elements using the group operation to get another group element. Generators are some special elements that we pick out which can be used to get to any other element in the group.

As an example, remember the dihedral group, the symmetries of an (n)-sided polygon. There are (2n) symmetries in all, but we can build up any of the symmetries using just a small rotation and a flip. For the symmetries of the equilateral triangle, we let ( ho) denote the rotation by (120) degrees, and let (f) be the flip over one of the axes of the triangle. Then the six elements of the dihedral group are given by: (id, ho, ho^2, f, f ho, f ho^2). Thus, ({f, ho}) is a set of generators for the dihedral group.

Here's the formal definition:

Definition 3.0.0:

Let (G) be a group, and (S) a subset of (G). We say that (S) *generates* (G) (and that (S) is a set of *generators* for (G)) if every element of (G) can be expressed as a product of elements of (S) and their inverses.

We include the inverses of the generators in the definition because we know that every element has an inverse. If we think of the integers under addition, we can write every positive number as a many-times sum of the number (1): for example, (5) is just (1+1+1+1+1). If we allow inverses as well, we can then get every element of the group from a single generator: the inverse of (1) is (-1), so we can write (for example) (-4=(-1)+(-1)+(-1)+(-1)). (Including the inverses also means we don't need to include the identity, since for any (g), (gg^{-1}=e).)

On the other hand, for any group (G), we can certainly take (G) itself as a generating set! Then every element is considered a 'generator,' so every element can be written as a (trivial) product of generators. This tells us that for any group we can find a generating set. Usually, we try to find a generating set as small as possible. Sometimes, though, a larger generating set might be interesting if it helps us to better understand the group in question.

Once we have a generating set for a graph (G), we can produce a very nice visualization of the group called the Cayley graph. By graph, we mean a number of points (called vertices) connected by some arrows (called edges). Graphs are good for keeping track of relationships between things, and appear in many, many places in mathematics and in applications.

The Cayley graph of a group has one vertex for each element (x) in the group. Each vertex has one arrow coming out of it for each generator (g), pointing to the element (gx). (This creates the left Cayley graph. The right Cayley graph has arrows pointing from (x) to (xg).) Usually we make the arrows different colors to correspond to the different generators; this is very useful for being able to visualize the structure of the group!

For the dihedral group, we found a set of generators with two elements: the rotation and the flip over one of the axes. In fact, the dihedral group has many different sets of generators of size two! We could have chosen the clockwise rotation instead of the counter-clockwise rotation, for example. Or we could have chosen any of the other flips. But the resulting Cayley graph would have been more-or-less the same.

Figure 3.1: Dihedral group Cayley graph, generated by a flip and rotation.

A quite different set of generators for the dihedral group is to take two different flips, across axes that are adjacent to one another. Let's call them (f_1) and (f_2). You can actually still write any element of the dihedral group as a product of these two flips. And the resulting Cayley graph looks quite different.

Figure. 3.2: The Cayley graph for the dihedral group with generators given by two different flips.

Suppose we have a generator where (g^2=1). It's tedious to draw arrows in both directions from every element, so we sometimes omit the arrow heads in this case.

Exercise 3.0.1

Identify generators for the permutation group (S_3). Make a Cayley graph.

- Tom Denton (Fields Institute/York University in Toronto)

## 3.5. Gemmini¶

The Gemmini project is developing a systolic-array based matrix multiplication unit generator for the investigation of software/hardware implications of such integrated SoC accelerators. It is inspired by recent trends in machine learning accelerators for edge and mobile SoCs.

Gemmini is implemented as a RoCC accelerator with non-standard RISC-V custom instructions. The Gemmini unit uses the RoCC port of a Rocket or BOOM tile , and by default connects to the memory system through the System Bus (i.e., directly to the L2 cache).

To add a Gemmini unit to an SoC, you should add the gemmini.DefaultGemminiConfig config fragment to the SoC configurations. To change the configuration of the Gemmini accelerator unit, you can write a custom configuration to replace the DefaultGemminiConfig , which you can view under generators/gemmini/src/main/scala/configs.scala to see the possible configuration parameters.

The example Chipyard config includes the following example SoC configuration which includes Gemmini:

To build a simulation of this example Chipyard config, run the following commands:

## RANDOM VARIABLE THEORY

Daniel T. Gillespie , in Markov Processes , 1992

### 1.8 Random Number Generating Procedures

It is often advantageous to be able to numerically construct sample values of a random variable with a prescribed density function, or more generally, simultaneous sample values of several random variables with a prescribed joint density function. Procedures for making such constructions are called *random number generating algorithms.* And any numerical calculation that makes explicit use of random variable sample values, or “random numbers,” is called a *Monte Carlo calculation.*

Two kinds of Monte Carlo calculation are especially useful in practice. One is the *numerical simulation of random processes*, such as the evolving population profile of a collection of radioactive atoms, or the trajectory of an electron passing through a cloud of randomly positioned scatterers. In later chapters of this book we shall see how certain random number generating algorithms can be employed to numerically simulate random processes of the “Markov” type.

Another important kind of Monte Carlo calculation is the *numerical evaluation of definite integrals*. The justification for this seemingly incongruous use of random numbers may be found in the two fundamental formulas for < *h*(*X*)> in Eqs. (1.3-1) and (1.3-2) together, those two equations imply that

where *x* (1) , …, *x* (*N*) are *N* independent sample values of the random variable whose density function is *P.* Now, in the discipline of statistical mechanics, the usual strategy is to calculate the average on the right by actually computing the integral on the left. The basic idea behind ‘Monte Carlo integration’ is to simply turn this procedure around, and to calculate the integral on the left by actually computing the average on the right, albeit for a *finite* value of *N.* In taking *N* to be finite, however, we unavoidably incur some uncertainty in our estimate of the integral. But if *N* is taken large enough, we can get a quantitative estimate of this uncertainty by appealing to the central limit theorem corollary (1.6-26) . Specifically, if we compute for ‘reasonably large’ *N* the two *N*-sample averages

To explain the rationale for formulas (1.8-2) and (1.8-3) , we begin by writing the *left* hand side of Eq. (1.6-26) , with *n* = *N*, in the form

Next, we *replace* the random variable *X* by the random variable *h*(*X*): The mean μ of *X* is thereby replaced by the mean ∫ *h*(*x*)*P*(*x*)d*x* of *h*(*X*) the *N*-sample average *A _{N}* of

*X*is replaced by the

*N*-sample average <

*h*>

*of*

_{N}*h*(

*X*) and the standard deviation σ of

*X*is replaced by the standard deviation [ 〈 h 2 〉 ∞ – 〈 h 〉 ∞ 2 ] 1 / 2 which however we

*approximate*as [ 〈 h 2 〉 N – 〈 h 〉 N 2 ] 1 / 2 . Recalling now the

*right*hand side of Eq. (1.6-26) , we see that Eq. (1.8-3) is to be interpreted as follows:

*Provided N is sufficiently large*, the integral on the left will lie in the indicated ±-interval about <

*h*>

*with probabilities 0.683 for*

_{N}*γ*= 1, 0.954 for

*y*= 2, and 0.997 for

*γ*= 3. Notice that, as the number

*N*of sample points is made larger, the interval of uncertainty in Eq. (1.8-3) decreases like 1/√

*N.*And in the limit

*N*→∞, Eq. (1.8-3) properly reduces to Eq. (1.8-1) .

The Monte Carlo integration method proves to be most useful in practice when the number *m* of integration variables exceeds 1. In that case, the Monte Carlo integration scheme is still as prescribed in Eqs.(1.8-2) and (1.8-3) , except that *x* is now regarded as the *m*-component *vector* variable (*x*_{1},…,*x _{m}*). This means that the computation of the two sums in Eqs.(1.8-2) will require the generation of

*N*simultaneous sample values

*x*

_{1}(

*i*) , …,

*x*(

_{m}*i*) of

*m*random variables

*X*

_{1}, …,

*X*whose joint density function is

_{m}*P*(

*x*

_{1},…,

*x*).

_{m}The feasibility of Monte Carlo calculations in general hinges on the availability of fast, reliable algorithms for generating random numbers according to arbitrarily specified density functions. As we shall see shortly, most such algorithms designed for use on digital computers require a ‘subprogram’ that generates sample values of the unit uniform random variable, *U*≡ **U**(0,1). A sample value of *U* is customarily refered to as a *unit uniform random number*, and denoted generically by *r.* †

One common procedure for computing a sequence *r* (1) , *r* (2) , … of unit uniform random numbers is *Lehmer's method:* With *N*_{0}, *C* and *M* being three ‘suitably chosen’ integers, one first generates a sequence of integers *N*_{1}, *N*_{2}, … through the recursion relation

which means simply that *N _{i}* is the

*remainder*obtained when

*CN*

_{i-1}is divided by

*M*one then takes

That the numbers *r* (1) , *r* (2) , … produced by this simple recursive procedure can approximately mimic independent samplings of the random variable *U* was originally viewed with a combination of awe and skepticism. Although the awe still seems warranted, the skepticism has largely abated with the recent discovery that even very simple *nonlinear* recursion relations can produce apparently ‘chaotic’ sequences. Notice that the recursion relation in Eq. (1.8-4a) is in fact quite nonlinear, owing to the modulo operation.

A “minimal standard” unit uniform random number generator currently favored by many experts in this area † is the foregoing Lehmer algorithm with *M* = 2 31 − 1 = 2147483647, *C* = 7 5 = 16807, and *N*_{0} (called the “seed”) any integer between 1 and *M* − 1 inclusively. This generator has a nonrepetition period of *M* − 1, it never produces the two values *r* = 0 and *r* = 1, and it gives scores on statistical tests for randomness that, while not perfect, are adequate for most applications. This generator can also be easily coded for most digital computers. It should be noted, however, that the calculations in Eqs.(1.8-4) usually must be performed in a ‘high precision’ mode, because *it is crucial that the integer arithmetic in* Eq. (1.8-4a) *be done exactly.* In any case, *this* is the unit uniform random number generator that has been used for all the Monte Carlo calculations reported in later chapters of this book.

But our goal here is not to delve into the mysteries of unit uniform random number generators† we shall simply take their availability as a given fact. Our chief concern here will be with the problem of using the output of such generators, i.e., unit uniform random numbers, to construct sample values of *arbitrarily specified* random variables.

Consider first the problem of generating a sample value *x* of a real random variable *X* with a prescribed density function *P.* The most elegant procedure for accomplishing this is as follows:

## On the complexity of monotone dualization and generating minimal hypergraph transversals ☆

In 1994 Fredman and Khachiyan established the remarkable result that the duality of a pair of monotone Boolean functions, in disjunctive normal forms, can be tested in quasi-polynomial time, thus putting the problem, most likely, somewhere between polynomiality and coNP-completeness. We strengthen this result by showing that the duality testing problem can in fact be solved in polylogarithmic time using a quasi-polynomial number of processors (in the PRAM model). While our decomposition technique can be thought of as a generalization of that of Fredman and Khachiyan, it yields stronger bounds on the sequential complexity of the problem in the case when the sizes of *f* and *g* are significantly different, and also allows for generating all minimal transversals of a given hypergraph using only polynomial space.

## 3.1: Generating Sets - Mathematics

### Lecture Description

This video lecture, part of the series **Discrete Mathematical Structures** by Prof. Kamala Krithivasan, does not currently have a detailed description and video lecture title. If you have watched this lecture and know what it is about, particularly what Mathematics topics are discussed, please help us by commenting on this video with your suggested **description** and **title**. Many thanks from,

- *The CosmoLearning Team*

### Course Index

- Propositional Logic (Part 1)
- Propositional Logic (Part 2)
- Predicates & Quantifiers (Part 1)
- Predicates & Quantifiers (Part 2)
- Logical Inference
- Resolution Principles & Application to PROLOG
- Methods of Proof
- Normal Forms
- Proving Programs Correct
- Sets
- Induction
- Set Operations on Strings Over an Alphabet
- Relations
- Graphs (Part 1)
- Graphs (Part 2)
- Trees
- Trees and Graphs
- Special Properties of Relations
- Closure of Relations (Part 1)
- Closure of Relations (Part 2)
- Order Relations
- Order and Relations and Equivalence Relations
- Equivalence Relations and Partitions
- Functions (Part 1)
- Functions (Part 2)
- Functions (Part 3)
- Permutations and Combinations (Part 1)
- Permutations and Combinations (Part 2)
- Permutations and Combinations (Part 3)
- Generating Functions (Part 1)
- Generating Functions (Part 2)
- Recurrence Relations (Part 1)
- Recurrence Relations (Part 2)
- Recurrence Relations (Part 3)
- Algebras (Part 1)
- Algebras (Part 2)
- Algebras (Part 3)
- Finite State Automaton (Part 1)
- Finite State Automaton (Part 2)
- Lattices

### Course Description

In this course, Prof. Kamala Krithivasan gives 40 video lectures on Discrete Mathematical Structures. Some of the topics covered are: Propositional Logic, Predicates & Quantifiers, Logical Inference, PROLOG, Sets, Induction, Relations, Graphs, Trees, Functions, Permutations and Combinations, Algebra, Finite State Automaton, Lattices and many more.

## Contents

For any element *g* in any group *G*, one can form the subgroup of all integer powers ⟨*g*⟩ = <*g* *k* | *k* ∈ **Z**>, called the **cyclic subgroup** of *g*. The order of *g* is the number of elements in ⟨*g*⟩ that is, the order of an element is equal to the order of its cyclic subgroup.

A *cyclic group* is a group which is equal to one of its cyclic subgroups: *G* = ⟨*g*⟩ for some element *g*, called a *generator*.

For a **finite cyclic group** *G* of order *n* we have *G* = <*e*, *g*, *g* 2 , . , *g* *n*−1 >, where *e* is the identity element and *g* *i* = *g* *j* whenever *i* ≡ *j* (mod *n*) in particular *g* *n* = *g* 0 = *e*, and *g* −1 = *g* *n*−1 . An abstract group defined by this multiplication is often denoted C* _{n},* and we say that

*G*is isomorphic to the standard cyclic group C

*. Such a group is also isomorphic to*

_{n}**Z**/

*n*

**Z**, the group of integers modulo

*n*with the addition operation, which is the standard cyclic group in additive notation. Under the isomorphism

*χ*defined by

*χ*(

*g*

*i*) =

*i*the identity element

*e*corresponds to 0, products correspond to sums, and powers correspond to multiples.

For example, the set of complex 6th roots of unity

Instead of the quotient notations **Z**/*n***Z**, **Z**/(*n*), or **Z**/*n*, some authors denote a finite cyclic group as **Z*** _{n}*, but this conflicts with the notation of number theory, where

**Z**

*denotes a*

_{p}*p*-adic number ring, or localization at a prime ideal.

Infinite cyclic groups

p1, (*∞∞) | p11g, (22∞) |
---|---|

| |

Two frieze groups are isomorphic to Z. With one generator, p1 has translations and p11g has glide reflections. |

On the other hand, in an **infinite cyclic group** *G =* ⟨*g*⟩*,* the powers *g* *k* give distinct elements for all integers *k*, so that *G* = < . , *g* −2 , *g* −1 , *e*, *g*, *g* 2 , . >, and *G* is isomorphic to the standard group C = C_{∞} and to **Z**, the additive group of the integers. An example is the first frieze group. Here there are no finite cycles, and the name "cyclic" may be misleading. [2]

To avoid this confusion, Bourbaki introduced the term **monogenous group** for a group with a single generator and restricted "cyclic group" to mean a finite monogenous group, avoiding the term "infinite cyclic group". [note 1]

### Integer and modular addition Edit

The set of integers **Z**, with the operation of addition, forms a group. [1] It is an **infinite cyclic group**, because all integers can be written by repeatedly adding or subtracting the single number 1. In this group, 1 and −1 are the only generators. Every infinite cyclic group is isomorphic to **Z**.

For every positive integer *n*, the set of integers modulo *n*, again with the operation of addition, forms a finite cyclic group, denoted **Z**/*n***Z**. [1] A modular integer *i* is a generator of this group if *i* is relatively prime to *n*, because these elements can generate all other elements of the group through integer addition. (The number of such generators is *φ*(*n*), where *φ* is the Euler totient function.) Every finite cyclic group *G* is isomorphic to **Z**/*n***Z**, where *n* = |*G*| is the order of the group.

The addition operations on integers and modular integers, used to define the cyclic groups, are the addition operations of commutative rings, also denoted **Z** and **Z**/*n***Z** or **Z**/(*n*). If *p* is a prime, then **Z**/*p Z* is a finite field, and is usually denoted

**F**

_{p}or GF(

*p*) for Galois field.

### Modular multiplication Edit

For every positive integer *n*, the set of the integers modulo *n* that are relatively prime to *n* is written as (**Z**/*n***Z**) × it forms a group under the operation of multiplication. This group is not always cyclic, but is so whenever *n* is 1, 2, 4, a power of an odd prime, or twice a power of an odd prime (sequence A033948 in the OEIS). [4] [5] This is the multiplicative group of units of the ring **Z**/*n***Z** there are *φ*(*n*) of them, where again *φ* is the Euler totient function. For example, (**Z**/6**Z**) × = <1,5>, and since 6 is twice an odd prime this is a cyclic group. In contrast, (**Z**/8**Z**) × = <1,3,5,7>is a Klein 4-group and is not cyclic. When (**Z**/*n***Z**) × is cyclic, its generators are called primitive roots modulo *n*.

For a prime number *p*, the group (**Z**/*p***Z**) × is always cyclic, consisting of the non-zero elements of the finite field of order *p*. More generally, every finite subgroup of the multiplicative group of any field is cyclic. [6]

### Rotational symmetries Edit

The set of rotational symmetries of a polygon forms a finite cyclic group. [7] If there are *n* different ways of moving the polygon to itself by a rotation (including the null rotation) then this symmetry group is isomorphic to **Z**/*n***Z**. In three or higher dimensions there exist other finite symmetry groups that are cyclic, but which are not all rotations around an axis, but instead rotoreflections.

The group of all rotations of a circle *S* 1 (the circle group, also denoted *S* 1 ) is *not* cyclic, because there is no single rotation whose integer powers generate all rotations. In fact, the infinite cyclic group C_{∞} is countable, while *S* 1 is not. The group of rotations by rational angles *is* countable, but still not cyclic.

### Galois theory Edit

An *n*th root of unity is a complex number whose *n*th power is 1, a root of the polynomial *x* *n* − 1. The set of all *n*th roots of unity form a cyclic group of order *n* under multiplication. [1] For example, the polynomial *z* 3 − 1 factors as (*z* − 1)(*z* − *ω*)(*z* − *ω* 2 ) , where *ω* = *e* 2*πi*/3 the set <1, *ω*, *ω* 2 > = <*ω* 0 , *ω* 1 , *ω* 2 > forms a cyclic group under multiplication. The Galois group of the field extension of the rational numbers generated by the *n*th roots of unity forms a different group, isomorphic to the multiplicative group (**Z/***n***Z**) × of order *φ*(*n*), which is cyclic for some but not all *n* (see above).

A field extension is called a cyclic extension if its Galois group is cyclic. For fields of characteristic zero, such extensions are the subject of Kummer theory, and are intimately related to solvability by radicals. For an extension of finite fields of characteristic *p*, its Galois group is always finite and cyclic, generated by a power of the Frobenius mapping. [8] Conversely, given a finite field *F* and a finite cyclic group *G*, there is a finite field extension of *F* whose Galois group is *G*. [9]

All subgroups and quotient groups of cyclic groups are cyclic. Specifically, all subgroups of **Z** are of the form ⟨*m*⟩ = *m***Z**, with *m* a positive integer. All of these subgroups are distinct from each other, and apart from the trivial group <0>= 0**Z**, they all are isomorphic to **Z**. The lattice of subgroups of **Z** is isomorphic to the dual of the lattice of natural numbers ordered by divisibility. [10] Thus, since a prime number *p* has no nontrivial divisors, *p***Z** is a maximal proper subgroup, and the quotient group **Z**/*p***Z** is simple in fact, a cyclic group is simple if and only if its order is prime. [11]

All quotient groups **Z**/*n***Z** are finite, with the exception **Z**/0**Z** = **Z**/<0>. For every positive divisor *d* of *n*, the quotient group **Z**/*n***Z** has precisely one subgroup of order *d*, generated by the residue class of *n*/*d*. There are no other subgroups.

Every cyclic group is abelian. [1] That is, its group operation is commutative: *gh* = *hg* (for all *g* and *h* in *G*). This is clear for the groups of integer and modular addition since *r* + *s* ≡ *s* + *r* (mod *n*) , and it follows for all cyclic groups since they are all isomorphic to these standard groups. For a finite cyclic group of order *n*, *g* *n* is the identity element for any element *g*. This again follows by using the isomorphism to modular addition, since *kn* ≡ 0 (mod *n*) for every integer *k*. (This is also true for a general group of order *n*, due to Lagrange's theorem.)

For a prime power *p k ,* the group **Z**/*p k* **Z** is called a primary cyclic group. The fundamental theorem of abelian groups states that every finitely generated abelian group is a finite direct product of primary cyclic and infinite cyclic groups.

Because a cyclic group is abelian, each of its conjugacy classes consists of a single element. A cyclic group of order *n* therefore has *n* conjugacy classes.

If *d* is a divisor of *n*, then the number of elements in **Z**/*n***Z** which have order *d* is *φ*(*d*), and the number of elements whose order divides *d* is exactly *d*. If *G* is a finite group in which, for each *n* > 0 , *G* contains at most *n* elements of order dividing *n*, then *G* must be cyclic. [note 2] The order of an element *m* in **Z**/*n***Z** is *n*/gcd(*n*,*m*).

If *n* and *m* are coprime, then the direct product of two cyclic groups **Z**/*n***Z** and **Z**/*m***Z** is isomorphic to the cyclic group **Z**/*nm***Z**, and the converse also holds: this is one form of the Chinese remainder theorem. For example, **Z**/12**Z** is isomorphic to the direct product **Z**/3**Z** × **Z**/4**Z** under the isomorphism (*k* mod 12) → (*k* mod 3, *k* mod 4) but it is not isomorphic to **Z**/6**Z** × **Z**/2**Z**, in which every element has order at most 6.

If *p* is a prime number, then any group with *p* elements is isomorphic to the simple group **Z**/*p***Z**. A number *n* is called a cyclic number if **Z**/*n***Z** is the only group of order *n*, which is true exactly when gcd(*n*,*φ*(*n*)) = 1 . [13] The cyclic numbers include all primes, but some are composite such as 15. However, all cyclic numbers are odd except 2. The cyclic numbers are:

1, 2, 3, 5, 7, 11, 13, 15, 17, 19, 23, 29, 31, 33, 35, 37, 41, 43, 47, 51, 53, 59, 61, 65, 67, 69, 71, 73, 77, 79, 83, 85, 87, 89, 91, 95, 97, 101, 103, 107, 109, 113, 115, 119, 123, 127, 131, 133, 137, 139, 141, 143, . (sequence A003277 in the OEIS)

The definition immediately implies that cyclic groups have group presentation C_{∞} = ⟨*x* | ⟩ and C_{n} = ⟨*x* | *x* *n* ⟩ for finite *n*. [14]

### Representations Edit

The representation theory of the cyclic group is a critical base case for the representation theory of more general finite groups. In the complex case, a representation of a cyclic group decomposes into a direct sum of linear characters, making the connection between character theory and representation theory transparent. In the positive characteristic case, the indecomposable representations of the cyclic group form a model and inductive basis for the representation theory of groups with cyclic Sylow subgroups and more generally the representation theory of blocks of cyclic defect.

### Cycle graph Edit

A **cycle graph** illustrates the various cycles of a group and is particularly useful in visualizing the structure of small finite groups. A cycle graph for a cyclic group is simply a circular graph, where the group order is equal to the number of nodes. A single generator defines the group as a directional path on the graph, and the inverse generator defines a backwards path. Trivial paths (identity) can be drawn as a loop but are usually suppressed. Z_{2} is sometimes drawn with two curved edges as a multigraph. [15]

A cyclic groups Z_{n}, with order *n*, corresponds to a single cycle graphed simply as an *n*-sided polygon with the elements at the vertices.

Cycle graphs up to order 24

Z_{1} | Z_{2} | Z_{3} | Z_{4} | Z_{5} | Z_{6} = Z_{3}×Z_{2} | Z_{7} | Z_{8} |

Z_{9} | Z_{10} = Z_{5}×Z_{2} | Z_{11} | Z_{12} = Z_{4}×Z_{3} | Z_{13} | Z_{14} = Z_{7}×Z_{2} | Z_{15} = Z_{5}×Z_{3} | Z_{16} |

Z_{17} | Z_{18} = Z_{9}×Z_{2} | Z_{19} | Z_{20} = Z_{5}×Z_{4} | Z_{21} = Z_{7}×Z_{3} | Z_{22} = Z_{11}×Z_{2} | Z_{23} | Z_{24} = Z_{8}×Z_{3} |

### Cayley graph Edit

A Cayley graph is a graph defined from a pair (*G*,*S*) where *G* is a group and *S* is a set of generators for the group it has a vertex for each group element, and an edge for each product of an element with a generator. In the case of a finite cyclic group, with its single generator, the Cayley graph is a cycle graph, and for an infinite cyclic group with its generator the Cayley graph is a doubly infinite path graph. However, Cayley graphs can be defined from other sets of generators as well. The Cayley graphs of cyclic groups with arbitrary generator sets are called circulant graphs. [16] These graphs may be represented geometrically as a set of equally spaced points on a circle or on a line, with each point connected to neighbors with the same set of distances as each other point. They are exactly the vertex-transitive graphs whose symmetry group includes a transitive cyclic group. [17]

### Endomorphisms Edit

The endomorphism ring of the abelian group **Z**/*n***Z** is isomorphic to **Z**/*n***Z** itself as a ring. [18] Under this isomorphism, the number *r* corresponds to the endomorphism of **Z**/*n***Z** that maps each element to the sum of *r* copies of it. This is a bijection if and only if *r* is coprime with *n*, so the automorphism group of **Z**/*n***Z** is isomorphic to the unit group (**Z**/*n***Z**) × . [18]

Similarly, the endomorphism ring of the additive group of **Z** is isomorphic to the ring **Z**. Its automorphism group is isomorphic to the group of units of the ring **Z**, which is (<−1, +1>, ×) ≅ C_{2} .

Several other classes of groups have been defined by their relation to the cyclic groups:

### Virtually cyclic groups Edit

A group is called **virtually cyclic** if it contains a cyclic subgroup of finite index (the number of cosets that the subgroup has). In other words, any element in a virtually cyclic group can be arrived at by multiplying a member of the cyclic subgroup and a member of a certain finite set. Every cyclic group is virtually cyclic, as is every finite group. An infinite group is virtually cyclic if and only if it is finitely generated and has exactly two ends [note 3] an example of such a group is the direct product of **Z**/*n***Z** and **Z**, in which the factor **Z** has finite index *n*. Every abelian subgroup of a Gromov hyperbolic group is virtually cyclic. [20]

### Locally cyclic groups Edit

A locally cyclic group is a group in which each finitely generated subgroup is cyclic. An example is the additive group of the rational numbers: every finite set of rational numbers is a set of integer multiples of a single unit fraction, the inverse of their lowest common denominator, and generates as a subgroup a cyclic group of integer multiples of this unit fraction. A group is locally cyclic if and only if its lattice of subgroups is a distributive lattice. [21]

### Cyclically ordered groups Edit

A cyclically ordered group is a group together with a cyclic order preserved by the group structure. Every cyclic group can be given a structure as a cyclically ordered group, consistent with the ordering of the integers (or the integers modulo the order of the group). Every finite subgroup of a cyclically ordered group is cyclic. [22]

### Metacyclic and polycyclic groups Edit

A metacyclic group is a group containing a cyclic normal subgroup whose quotient is also cyclic. [23] These groups include the cyclic groups, the dicyclic groups, and the direct products of two cyclic groups. The polycyclic groups generalize metacyclic groups by allowing more than one level of group extension. A group is polycyclic if it has a finite descending sequence of subgroups, each of which is normal in the previous subgroup with a cyclic quotient, ending in the trivial group. Every finitely generated abelian group or nilpotent group is polycyclic. [24]

## Introductory Combinatorics

The Basic Library List Committee strongly recommends this book for acquisition by undergraduate mathematics libraries.

This is one of only a few classic introductory combinatorics textbooks for undergraduates. The author of such a textbook faces an unusally high number of difficult choices of what topics to include, and in what order, so the reviewer’s task is to discuss the choices the author decided to make. Enumeration is the topic favored by the author, in that nine of his fourteen chapters have this topic at their center. This is an appropriate choice of focus since in most branches of combinatorics, counting is, if not the goal, then at least a tool.

The order of in which the topics are discussed also favors enumeration. Advanced enumeration techniques are treated relatively early in the book. Möbius inversion is explained in Chapter 6, while generating functions are introduced in Chapter 7, so these advanced topics are part of the first half of the text. There is a separate chapter on some famous counting sequences, such as the Catalan numbers and the Schröder numbers, and even that comes before the parts of the book that are not devoted to enumeration.

The next part of the book has gone through a major change since the last edition. Chapter 9 is about systems of distinct representatives, Chapter 10 is on Combinatorial Designs, and the following three chapters are on graph theory. This probably sets the book apart from most similar textbooks: it is easy to view both systems of distinct representatives and Combinatorial Designs as generalizations of concepts in Graph Theory, and therefore, most authors treat graphs first. The order chosen in this book probably has the effect that if you teach a two-semester course from the book, and cover all topics in it in the order in which the book covers them, then all of Graph Theory will be discussed in the second semester.

The book ends with a chapter on Pólya theory (enumeration under group action).

There are about 40 exercises at the end of each chapter, some of which are, commendably, challenging enough to be interesting even for the instructors. Roughly half of them have a numerical answer or a hint at the end of the book, but none come with full solutions.

Miklós Bóna is Professor of Mathematics at the University of Florida.

## Increasing and Decreasing the Exponents of a Generating Function

When we have a **generating function** for a certain problem, we can manipulate it to solve other combinatorial problems.

Using this technique of "shift method" gives us a clean solution to the following problem:

### If you select exactly one element from , how many ways are there to select a given number? Express your answer as a simplified generating function.

## MATH 580 / CS 571

Lec 1, 8/25 Mon, Sec 1.1: Course overview, general principles of enumeration, counting of words & subsets, binomial theorem, multisets/compositions.

Lec 2, 8/27 Wed, Sec 1.2: Lattice paths, basic identities, extended binomial coefficient, summing polynomials, Delannoy numbers.

Lec 3, 8/29 Fri, Sec 1.3: Hamming ball/Delannoy correspondence . Counting graphs and trees, multinomial coefficients (trees by degrees, Fermat's Little Theorem), Ballot problem.

Lec 4, 9/3 Wed, Sec 1.3-2.1: Central binomial convolution, Catalan numbers (generalization, bijections, recurrence), Fibonacci numbers and 1,2-lists.

Lec 5, 9/5 Fri, Sec 2.1-2: Derangements, recurrences in two indices (distribution problems, Delannoy numbers), characteristic equation method (through repeated roots).

Lec 6, 9/8 Mon, Sec 2.2: Characteristic equation method (inhomogeneous terms), generating function method (linear w. constant coefficients, Catalan solution).

Lec 7, 9/10 Wed, Sec 2.3-3.1: Substitution method (Tower of Hanoi, derangements, Stirling's approximation), generating functions (sum/product operations, multisets)

Lec 8, 9/12 Fri, Sec 3.1: Generating functions: multisets with restricted multiplicity, functions in two variables (skipped), permutation statistics (by #inversions, #cycles), Eulerian numbers (#runs, Worpitzky's Identity by barred permutations)

Lec 9, 9/15 Mon, Sec 3.2: Generating function manipulations: sum & product (*A(n,k)* formula by inversion from Worpitzky), shifted index, differentiation & evaluation at special values, summing initial coefficients, summation by convolutions.

Lec 10, 9/17 Wed, Sec 3.3: Snake Oil, exponential generating functions: products of EGFs (words), examples and applications of EGFs (flags on poles, restricted words, Stirling numbers)

Lec 11, 9/19 Fri, Sec 3.3: EGF applications (binomial inversion, derangements), the Exponential Formula (graphs, partitions, permutations, recurrence), Lagrange Inversion Formula (statement and application to trees).

Lec 12, 9/22 Mon, Sec 3.4: Partitions of integers (basic generating functions, asymptotic number of partitions), combinatorics of partitions (Ferrers diagrams, conjugation, Fallon's Identity (skipped), congruence classes of triangles, Euler's Identity).

Lec 13, 9/24 Wed, Sec 4.1: Basic inclusion-exclusion formula, applications (totients, Stirling numbers, alternating sums, skipped Eulerian numbers)

Lec 14, 9/26 Fri, Sec 4.1: Permutations with restricted positions (rook polynomials), OGF by number of properties (skipped probleme des menages), signed involutions (inclusion-exclusion as special case, (skipped partitions into distinct odd parts).

Lec 15, 9/29 Mon, Sec 4.1-2: Disjoint-path systems in digraphs, application to lattice paths and rhombus tilings. Examples for counting under symmetry, Lagrange's Theorem.

Lec 16, 10/1 Wed, Sec 4.2-3: Burnside's Lemma, Cycle indices, symmetries of cube, pattern inventory (Polya's Theorem), counting isomorphism classes of graphs. Young tableaux (brief presentation of Hook-length formula, RSK correspondence, and consequences of RSK correspondence).

Chapter 5, First Concepts for Graphs, for background reading

Lec 17, 10/3 Fri, Sec 5.1-3 highlights, 6.1: Properties of Petersen graph, degree-sum formula and rectangle partition, characterization of bipartite graphs, Eulerian circuits. Bipartite Matching (Hall's Theorem).

Lec 18, 10/6 Mon, Sec 6.1: Marriage Theorem, orientations with specified outdegrees. Min/max relations (Ore's defect formula, Konig-Egervary Theorem, Gallai's Theorem, Konig's Other Theorem).

Lec 19, 10/8 Wed, Sec 6.2: General Matching: augmenting paths, Tutte's 1-Factor Condition, Berge-Tutte Formula, 1-factors in regular graphs, Petersen's 2-Factor Theorem (via Eulerian circuit and Hall's Theorem--postponed to Friday).

Lec 20, 10/10 Fri, Sec 7.1: Connectivity (definitions, Harary graphs). Connectivity under cartesian product, edge-connectivity definitions, Whitney's Theorem. Edge-connectivity for diameter 2 (mention of edge-cut/degree lemma postponed), . bonds and blocks skipped.

Lec 21, 10/13 Mon, Sec 7.2: k-Connected Graphs (Independent *x,y*-paths, linkage and blocking sets, Pym's Theorem, Menger's Theorems (8 versions), Ford-Fulkerson CSDR (postponed), Expansion and Fan Lemmas, cycles through specified vertices), ear decomposition and Robbins' Theorem (postponed to Wed).

Lec 22, 10/15 Wed, Sec 7.3: Spanning cycles: necessary condition, Ore & Dirac conditions, closure, statement of Chvatal condition & Chvatal-Erdos Theorem (postponed to Fri).

Lec 23, 10/17 Fri, Sec 8.1: Vertex coloring: examples, easy bounds, greedy coloring, interval graphs, degree bounds, Minty's Theorem (postponed to Mon).

Lec 24, 10/20 Mon, 8.1-2: Triangle-free graphs (Mycielski's construction, *&radicn* bound), color-critical graphs (minimum degree, edge-connectivity).

Lec 25, 10/22 Wed, Sec 8.2: coloring triangle-free graphs. List coloring (degree choosability and extension of Brooks' Theorem),

Lec 26, 10/24 Fri, Sec 8.3: edge-coloring (complete graphs, Petersen graph, bipartite graphs), color fans and Vizing for graphs, Anderson-Goldberg generalization of Vizing's Theorem (skipped), brief mention of perfect graphs.

Lec 27, 10/27 Mon, Sec 9.1: Planar graphs and their duals, cycles vs bonds, bipartite plane graphs, Euler's Formula and edge bound

Lec 28, 10/29 Wed, Sec 9.2: Kuratowski's Theorem and convex embeddings, 5-coloring of planar graphs

Lec 29, 10/31 Fri, Sec 9.3: Discharging (approach to 4CT, planar graphs with forbidden face lengths), mention of Tait's Theorem (skipped Grinberg's Theorem)

Lec 30, 11/3 Mon, Sec 10.1: Applications of pigeonhole principle (covering by bipartite graphs, divisible pairs, domino tilings, paths in cubes, monotone sublists, increasing trails, girth 6 with high chromatic number).

Lec 31, 11/5 Wed, Sec 10.2: Ramsey's Theorem and applications (convex m-gons, table storage).

Lec 32, 11/7 Fri, Sec 10.3: Ramsey numbers, graph Ramsey theory (tree vs complete graph), Schur's Theorem, Van der Waerden Theorem (statement and example)

Lec 33, 11/10 Mon, Sec 12.1: Partially ordered sets (definitions and examples, comparability graphs and cover graphs), Dilworth's Theorem, equivalence of Dilworth and Konig-Egervary, relation to PGT.

Lec 34, 11/12 Wed, Sec 12.2: graded posets & Sperner property, symmetric chain decompositions for subsets and products, bracketing decomposition, application to monotone Boolean functions.

Lec 35, 11/14 Fri, Sec 12.2: LYM posets (Sperner's Theorem via LYM, equivalence with regular covering and normalized matching, LYM and symmetric unimodal rank-sizes => symmetric chain decomposition, statement of log-concavity & product result).

Lec 36, 11/17 Mon, Sec 14.1: existence arguments (Ramsey number, 2-colorability of *k*-uniform hypergraphs), pigeonhole property of expectation (linearity and indicator variables, Caro-Wei bound on independence number, application of Caro-Wei to Turan's Theorem, pebbling in hypercubes).

Lec 37, 11/19 Wed, Sec 14.2: Deletion method (Ramsey numbers, dominating sets, sketch for large girth and chromatic number)

Lec 38, 11/21 Fri, Sec 14.2-3: Symmetric Local Lemma & applications (Ramsey number, list coloring, Mutual Independence Principle). Random graph models, almost-always properties, connectedness of the random graph, Markov's Inequality.

Lec 39, 12/1 Mon, Sec 14.3: Second moment method, threshold functions for disappearance of isolated vertices and appearance of balanced graphs, comments on evolution of graphs, lower bound for crossing number of graphs (Chapter 16).

Lec 40, 12/3 Wed, Sec 13.1: Latin squares (4-by-4 example, MOLS(n,k), upper bound, complete families, Moore-MacNeish construction). Block designs (examples, elementary constraints on parameters, Fisher's Inequality).

Lec 41, 12/5 Fri, Sec 13.1: Symmetric designs (Bose), necessary conditions (example of Bruck-Chowla-Ryser), Hadamard matrices (restriction on order, relation to designs, relation to coding theory).

Lec 42, 12/8 Mon, Sec 13.2: Projective planes (equivalence with (q^2+q+1,q+1,1)-designs, relation to Latin squares, polarity graph with application to extremal problems).

Lec 43, 12/10 Wed, Sec 13.2-3: difference sets and multipliers, Steiner triple systems.

## Table of Contents

This book is a gentle introduction to the enumerative part of combinatorics suitable for study at the advanced undergraduate or beginning graduate level. In addition to covering all the standard techniques for counting combinatorial objects, the text contains material from the research literature which has never before appeared in print, such as the use of quotient posets to study the Möbius function and characteristic polynomial of a partially ordered set, or the connection between quasisymmetric functions and pattern avoidance.

The book assumes minimal background, and a first course in abstract algebra should suffice. The exposition is very reader friendly: keeping a moderate pace, using lots of examples, emphasizing recurring themes, and frankly expressing the delight the author takes in mathematics in general and combinatorics in particular.