## Figures

## Abstract

Since 1997 a considerable effort has been spent on the study of the **swap** (switch) Markov chains on graphic degree sequences. All of these results assume some kind of regularity in the corresponding degree sequences. Recently, Greenhill and Sfragara published a breakthrough paper about irregular normal and directed degree sequences for which rapid mixing of the swap Markov chain is proved. In this paper we present two groups of results. An example from the first group is the following theorem: let be a directed degree sequence on *n* vertices. Denote by Δ the maximum value among all in- and out-degrees and denote by the number of edges in the realization. Assume furthermore that . Then the swap Markov chain on the realizations of is rapidly mixing. This result is a slight improvement on one of the results of Greenhill and Sfragara. An example from the second group is the following: let **d** be a bipartite degree sequence on the vertex set *U* ⊎ *V*, and let 0 < *c*_{1} ≤ *c*_{2} < |*U*| and 0 < *d*_{1} ≤ *d*_{2} < |*V*| be integers, where *c*_{1} ≤ **d**(*v*) ≤ *c*_{2}: ∀*v* ∈ *V* and *d*_{1} ≤ **d**(*u*) ≤ *d*_{2}: ∀*u* ∈ *U*. Furthermore assume that (*c*_{2} − *c*_{1} − 1)(*d*_{2} − *d*_{1} − 1) < max{*c*_{1}(|*V*| − *d*_{2}), *d*_{1}(|*U*| − *c*_{2})}. Then the swap Markov chain on the realizations of **d** is rapidly mixing. A straightforward application of this latter result shows that when a random bipartite or directed graph is generated under the Erdős—Rényi *G*(*n*, *p*) model with mild assumptions on *n* and *p* then the degree sequence of the generated graph has, with high probability, a rapidly mixing swap Markov chain on its realizations.

**Citation: **Erdős PL, Mezei TR, Miklós I, Soltész D (2018) Efficiently sampling the realizations of bounded, irregular degree sequences of bipartite and directed graphs. PLoS ONE 13(8):
e0201995.
https://doi.org/10.1371/journal.pone.0201995

**Editor: **Arndt von Haeseler,
Max F Perutz Laboratories GmbH, AUSTRIA

**Received: **May 16, 2018; **Accepted: **July 25, 2018; **Published: ** August 13, 2018

**Copyright: ** © 2018 Erdős et al. This is an open access article distributed under the terms of the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited.

**Data Availability: **All relevant data are within the paper.

**Funding: **The authors of this paper were supported in part by the National Research, Development and Innovation Office | NK- FIH grant K 116769 and KH 126853. IM was supported in part by the National Research, Development and Innovation Office | NKFIH grant SNN 116095. DS was supported in part by the National Research, Development and Innovation Office | NKFIH grants K 108947 and K 120706. The WEB page of the founder is: https://www.nkh.gov.hu/en/web/english/. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.

**Competing interests: ** The authors have declared that no competing interests exist.

## Introduction

An important problem in network science is to algorithmically construct typical instances of networks with predefined properties, often expressed as graph measures. In particular, special attention has been devoted to sampling simple graphs (in our paper only graphs without parallel edges and loops are considered) with a given degree sequence. In 1997 Kannan, Tetali, and Vempala ([1]) proposed the use of the so-called switch Markov chain approach, which had already been used in statistics. We call this the **swap Markov chain** approach.

The **swap operation** exchanges two disjoint edges *ac* and *bd* in the realization *G* with *ad* and *bc* if the resulting configuration *G*′ is again a simple graph (we denote this operation by *ac*, *bd* ⇒ *ad*, *bc*). (For details see the next section). It is a well-known fact that the set of all possible realizations of a **graphic** degree sequence is connected under this operation. (See, for example, Petersen [2] or Havel [3] and Hakimi [4]). An analogous result applies for the swap operation defined on bipartite graphs. (See, for example, Gale [5]). Here we have to be careful, as not every edge exchange is eligible: on a bipartite graph we must ensure that vertices *a* and *d* belong to different vertex classes.

In the literature, the name **switch operation** is also used, however, in our approach this latter is an operation on integer matrices slightly generalizing the swap operation. (See the sections on the analysis of the swap sequences).

The situation is more complicated in case of directed degree sequences. In this case for every vertex the number of incoming edges (**in-degree**) and the number of outgoing edges (**out-degree**) is given in the **degree bi-sequence**. Here the *ac*, *bd* ⇒ *ad*, *bc* type exchange preserves the degree bi-sequence if both before and after the swap operation *a* and *b* are tails of the directed edges. However, imagine that our graph is a directed triangle while is the oppositely directed . Both graphs have the same degree bi-sequence **d** = ((1, 1, 1); (1, 1, 1)). It is clear that there is only one way to transform the first one into the second one: if we exchange three edges and three non-edges in . We will call this operation a **triple swap** and the previously defined “classical” one as a **double swap**. Kleitman and Wang proved in 1973 ([6]) that any two realizations of a given graphic degree bi-sequence can be transformed into each other using these two operations. The same fact was re-discovered in 2010 (see [7]).

The swap Markov chains corresponding to the most common graph models are irreducible, aperiodic, reversible (obey detailed balance), have symmetric transition matrices, and thus have uniform global stationary distributions.

In their paper [1], Kannan, Tetali and Vempala conjectured that all these Markov chains are rapidly mixing. The first rigorous proof in this topic is due to Cooper, Dyer and Greenhill for regular graphs ([8]). Now, twenty years after the KTV conjecture, we are still far, probably very far, from proving it in its full generality. However, many partial results have been proved; those which play some role in this paper are summarized in the following theorem:

**Theorem 1**. *The swap Markov chain mixes rapidly for the following degree sequences*:

- (A).
**d***is a regular directed degree sequence*. - (B).
**d***is a*.**half-regular**bipartite degree sequence - (C).
**d***belongs to an*.**almost-half-regular**bipartite graph - (D).
**d***is an almost-half-regular bipartite degree sequence, where every realization must avoid a fixed (partial) matching*. - (E).
**d***is a directed degree sequence with*,*where M is the sum of the in-degrees (or out-degrees), and where the set of all realizations under study is irreducible under the double swap operation*.

There exist similar results on (normal) degree sequences as well, but their proofs are not fully “compatible” with the proof of the above results (except case D). To our knowledge there does not exist a fully developed proof machinery which is applicable for all three cases, that is, for normal, bipartite, and directed degree sequences.

The result (A) was proved by Greenhill ([9]). In the proof it is assumed that the set of all realizations of the regular directed degree bi-sequence is irreducible under the double swap operations. (B) is due to Miklós, Erdős, and Soukup ([10]). Half-regularity means that in one class the degrees are the same (i.e., regular), while in the other class the only restrictions are those imposed by graphicality. (C) is due to Erdős, Miklós, and Toroczkai ([11]). Here almost-half-regular means that for any pair of vertices on one side we have |*d*(*v*_{1}) − *d*(*v*_{2})| ≤ 1. (D) was proved by Erdős, Kiss, Miklós, and Soukup ([12]). This model will be introduced in detail and its intrinsic connection with directed graphs will be fully explained in the section starting with Lemma 12. Papers [9] and [12] are using slightly different Markov chains on regular directed degree sequences, therefore (D) does not supersede (A). Finally, (E) was proved recently by Greenhill and Sfragara ([13]). Their result has vastly extended the set of (normal and directed) degree sequences for which the rapid mixing of the Markov chain is known (e.g., power-law density-bounded normal degree sequences with parameter *γ* > 2.5). The papers [14] and [15] fully characterize those degree bi-sequences where the set of all realizations is irreducible under the double swap operation.

In this paper we improve on the result of Greenhill and Sfragara on directed degree sequences, and we prove the bipartite analogue of their degree sequence result for simple graphs. We achieve this by applying our technique described in [12]. In addition, we further extend the set of bipartite and directed degree sequences with rapidly mixing Markov chain processes, using a condition on minimum and maximum degrees.

Let **d** be a bipartite degree sequence on the underlying set *U* ⊎ *V*. (So the underlying set is equal to the disjoint union of the two classes).

**Theorem 2**. *Let* **d** *be a bipartite degree sequence on U and V as classes, let* |*E*| *be half of the sum of the degrees, and let* Δ = max **d**. *If* (1) *then the swap Markov chain on the realizations of* **d** *is rapidly mixing*.

The following result describes another wide range of bipartite degree sequences with rapidly mixing swap Markov chain.

**Theorem 3**. *Let* 0 < *c*_{1} ≤ *c*_{2} < |*U*| = *n and* 0 < *d*_{1} ≤ *d*_{2} < |*V*| = *m be integer parameters and assume that* **d** *satisfies the following properties*:
(2)

*Furthermore, assume that* (3) *holds. Then the swap Markov chain on the realizations of* **d** *is rapidly mixing*.

We conjecture that a very similar result should apply to the case of normal degree sequences.

Our next two results are about directed degree sequences on the *n* element vertex set *X*. The first one improves the constant in the result of Greenhill and Sfragara to . Moreover, because both double and triple swaps are allowed, the irreducibility condition can be omitted from the theorem.

**Theorem 4**. *Let* *be a directed degree sequence on the n element V as its vertex set. Let* *be half of the sum of the degrees, and let* Δ = max{max *d*_{out}, max *d*_{in}}. *If* (4) *then the swap Markov chain on the realizations of* *is rapidly mixing*.

Lastly, we show that conditions similar to that of Theorem 3 guarantee rapid mixing of the swap Markov chains on a wide class of directed degree sequences.

**Theorem 5**. *Let* 0 < *c*_{1} ≤ *c*_{2} < *n and* 0 < *d*_{1} ≤ *d*_{2} < *n be integer parameters and assume that graphic degree bi-sequence* *satisfies the following properties*:
(5)

*Furthermore, assume that* (6) *holds. Then the swap Markov chain, using double and triple swap operations, is rapidly mixing on the realizations of*
.

The proofs of our results strongly support Greenhill’s observation about the existing arguments ([16]): “In each known case, regularity (or half-regularity) was only required for one lemma, which we will call the critical lemma. This is a counting lemma which is used to bound the maximum load of the flow (see [8, Lemma 4], [9, Lemma 5.6], [10, Lemma 6.15])”—and some newer examples—([16, Section 3], [12, Lemma 18], [13, Lemma 2.5 and Lemma 3.6]). The main task is to prove the critical lemmas (Lemma 11 and 12) for our new conditions (2–6). To that end, we first list the fundamental details from [12].

We would like to mention that after submitting a preprint of an earlier version of this paper on arXiv, Amanatidis and Kleer have contacted us, claiming to have proved that the degree sequences studied here are also “strongly stable” (see [17]).

The next 3 sections lay down the foundations of the swap Markov chain on bipartite and directed degree sequences. These have been originally described in our own paper [12]. For the sake of readability and convenience, we recall in more detail some results from paper [12], as they are crucial in understanding the presented approach.

## Definitions and useful facts

In this section, we recall some well-known definitions and results, furthermore we define our swap Markov chains for the bipartite degree sequences and for the directed degree sequences.

Let *G* be a simple bipartite graph on *U* ⊎ *V*, where *U* = {*u*_{1}, …, *u*_{n}} and *V* = {*v*_{1}, …, *v*_{m}}, and let its **bipartite degree sequence** be
(7)

For a *ac*, *bd* ⇒ *ad*, *bc* swap operation to be valid it is not enough that *ac*, *bd* ∈ *E*(*G*) and *ad*, *bc* ∉ *E*(*G*), we also need that *ad* can be an edge in some realization. In other words, we need that *a* and *d* are in different vertex classes. We will use the name **chord** for any vertex pair *u*, *v* where *uv* can be an edge in a realization, even if we do not know or do not care whether it is an edge or a non-edge in the current realization. We can reformulate the definition of the swap operation: it can be done if *ac*, *bd* ∈ *E*(*G*) and *ad*, *bc* are chords.

Now denote by the set of all possible realizations of the graphic bipartite degree sequence (**d**(*U*), **d**(*V*)). Consider two different realizations, *G* and *H*, of this bipartite degree sequence. As we already mentioned in the introduction, it is a well-known fact that the first realization can be transformed into the second one (and vice versa) with a sequence of swap operations. Formally, there exists a sequence of realizations *G* = *G*_{0}, …, *G*_{i−1}, *G*_{i} = *H*, such that for each *j* = 0, …, *i* − 1 there exists a swap operation which transforms *G*_{j} into *G*_{j+1}. We denote the swap Markov chain as where the **transition matrix** *P* is the following:

In any realization with probability we stay in the current state (i.e., the chain is lazy) and with probability we uniformly choose two-two vertices *u*_{1}, *u*_{2};*v*_{1}, *v*_{2} from classes *U* and *V*, respectively. We perform the swap *u*_{1}*v*_{1}, *u*_{2}*v*_{2} ⇒ *u*_{1}*v*_{2}, *u*_{2}*v*_{1} if *u*_{1}*v*_{1}, *u*_{2}*v*_{2} ∈ *E*(*G*) and the resulting graph *G*′ is simple. Otherwise we do not perform a move. The swap moving from *G* to *G*′ is unique, therefore the **jumping probability** from *G* to *G*′ ≠ *G* is:
(8)

The transition probabilities are time- and edge-independent and are also **symmetric**. The chain is lazy, therefore aperiodic. It is also reversible, and so its globally stable stationary distribution is uniform.

Now we turn our attention to the notions and notation to describe Theorems 4 and 5. Literally these theorems are about directed graphs, however, we will use the machinery developed in the paper [12], turning these statements into theorems about bipartite graphs with some restriction on which edges can be used in the realizations.

Let be a simple directed graph (parallel edges and loops are forbidden, but oppositely directed edges between two vertices are allowed) with vertex set and edge set . For every vertex *x*_{i} ∈ *X* we associate two numbers: the *in-degree* and the *out-degree* of *x*_{i}. These numbers form the directed degree bi-sequence **D**.

We transform the directed graph into the following *bipartite representation*: let be a bipartite graph where each class consists of one copy of every vertex from . The edges adjacent to a vertex *u*_{x} in class *U* represent the out-edges from *x*, while the edges adjacent to a vertex *v*_{x} in class *V* represent the in-edges to *x* (so a directed edge *xy* corresponds the edge *u*_{x}*v*_{y}). If a vertex has zero in- (respectively out-) degree in , then we delete the corresponding vertex from . (Actually, this representation is an old trick used by Gale [5], but one can find it already in [2]). The directed degree bi-sequence **D** gives rise to a bipartite degree sequence.

Here we make good use of the notion of *chords*: since there are no loops in our directed graph, there cannot be any (*u*_{x}, *v*_{x}) edge in its bipartite representation—these vertex pairs are **non-chords**. It is easy to see that these forbidden edges form a forbidden (partial) matching in the bipartite graph , or in more general terms, in *B*(**D**). To make it easier to remember the nature of restriction, we will denote this **restricted** bipartite degree sequence with .

We consider all realizations which avoid the non-chords from . Now it is easy to see that the bipartite graphs in are in one-to-one correspondence with the possible realizations of the directed degree bi-sequence.

Consider now again our example about two oppositely oriented triangles, and . Consider the bipartite representations and , and take their symmetric difference ∇. It contains exactly one alternating cycle (the edges come alternately from and ), s.t. each vertex pair of distance 3 along the cycle in ∇ forms a non-chord. Therefore, in this alternating cycle a “classical” swap cannot be performed. To address this issue, we introduce a new swap operation: we exchange all edges coming from with all edges coming from in one operation. The corresponding operation for directed graphs is exactly the triple swap operation.

In general: if the current symmetric difference ∇ contains a length-6 alternating cycle *C*_{6} such that all opposite vertex pairs form non-chords, then we allow performing the corresponding *C*_{6}-**swap**. In this notation, the original swap should properly be called a *C*_{4}-**swap** (for obvious reasons), but for the sake of simplicity we only write swap instead of *C*_{4}-swap. By the constraints posed by the forbidden partial matching, only a subset of all bipartite swaps can be performed. These swaps together with the possible *C*_{6}-swaps we just defined are called the -**compatible** swaps or -**swaps** for short.

**Lemma 6** ([18], [12]). *The set* *of all realizations is irreducible under* -*swaps*.

We are ready to define our swap Markov chain for the restricted bipartite degree sequence .

The transition (probability) matrix *P* of the Markov chain is defined as follows: let the current realization be *G*. Then

- with probability 1/2 we stay in the current state, so our Markov chain is lazy;
- with probability 1/4 we uniformly choose two-two vertices
*u*_{1},*u*_{2};*v*_{1},*v*_{2}from classes*U*and*V*respectively and perform the swap if it is possible; - finally, with probability 1/4 we choose three-three vertices from
*U*and*V*and check whether they form three pairs of forbidden chords. If this is the case, then we perform a*C*_{6}-swap if it is possible.

The swap moving from *G* to *G*′ is unique, therefore the probability of this transformation (the *jumping probability* from *G* to *G*′ ≠ *G*) is:
(9)
and
(10)

(These probabilities reflect the fact that *G*′ should be derived from *G* by a *C*_{4}-swap or by a *C*_{6}-swap). The probability of transforming *G* to *G*′ (or vice versa) is time-independent and symmetric. Therefore, *P* is a symmetric matrix, where the entries in the main diagonal are non-zero, but (possibly) distinct values. Our Markov chain is irreducible (by Lemma 6), and it is clearly aperiodic, since it is lazy. Therefore, as it is well-known, the Markov process is reversible with the uniform distribution as the globally stable stationary distribution.

## The general properties of the swap Markov chain on bipartite degree sequences

The proofs of our theorems closely follow the proof of Theorem 10 in [12], which, in turn, is based on the proof method developed in [10]. Suppose is a directed degree sequence and **d** is the degree sequence of bipartite representations corresponding to the realizations of . As we saw earlier the sets of all realizations and are slightly different: while but there are realizations in that contain edges which are forbidden in the realizations in However, the following reasoning from [12] applies to both bipartite and directed degree sequences. Therefore the notation is used to refer either of the two realization sets.

Consider two realizations , and take the symmetric difference ∇ = *E*(*X*)Δ*E*(*Y*). Now for each vertex in the bipartite graph (*U*, *V*; ∇) the number of incident *X*-edges (= *E*(*X*)\*E*(*Y*)) and the number of the incident *Y*-edges are equal. Therefore ∇ can be decomposed into alternating circuits and later into alternating cycles. The way the decomposition is performed is described in detail in Section 5 of the paper [10]. Here we just summarize the highlights:

First, we decompose the symmetric difference ∇ into alternating circuits in all possible ways. In each case we get an ordered sequence *W*_{1}, *W*_{2}, …, *W*_{κ} of circuits. Each circuit is endorsed with a fixed cyclic order.

Now we fix one circuit decomposition. Each circuit *W*_{i} in the ordered decomposition has a unique alternating cycle decomposition: . (This unique decomposition is a quite delicate point and was discussed in detail in Section 5.2 of the paper [10]).

The ordered circuit decomposition of ∇ together with the ordered cycle decompositions of all circuits provide a well-defined ordered cycle decomposition *C*_{1}, …, *C*_{l} of ∇. This decomposition does not depend on any swap operations, only on the symmetric difference of realizations *X* and *Y*.

This ordered cycle decomposition singles out *l* − 1 different realizations *H*_{1}, …, *H*_{l−1} from with the following property: for each *j* = 0, …, *l* − 1 we have *E*(*H*_{j})Δ*E*(*H*_{j+1}) = *C*_{j+1} if we apply the notation *H*_{0} = *X* and *H*_{l} = *Y*. This means that

It remains to design a unique canonical path from *X* to *Y* determined by the circuit decomposition, which uses the realizations *H*_{j} as **milestones** along the path. In other words, for each pair *H*_{j}, *H*_{j+1} we should design a swap sequence which turns *H*_{j} into *H*_{j+1}.

Here we slightly abuse the general naming conventions: in the original canonical path method for any pair exactly one *X* → *Y* path is defined. In Sinclair’s multicommodity flow method ([19]) a (usually large) set of paths is defined, equipped with a probability distribution. In our presentation we use the expression *canonical path* to denote these paths, differentiating the paths in and the paths in some realizations.

So, the canonical path under construction is a sequence
of realizations, where each *G*_{i} can be derived from *G*_{i−1} with exactly one swap operation, and there exists an increasing subscript subsequence 0 = *n*_{0} < *n*_{1} < *n*_{2} < ⋯ < *n*_{ℓ} = *m*, such that we have for every 0 ≤ *k* ≤ *ℓ*.

## The construction of swap sequences between consecutive milestones

Next we define the canonical path corresponding to the cycle *C*_{i}. The procedure described here is slightly different from the one in [12], since the excluded edge set in [12] is slightly larger than the one used here.

For convenience, we will use the names instead of *H*_{i} and *H*_{i+1}. These two graphs have almost the same edge set:

We refer to the elements of *C*_{i} ∩ *E*(*X*) as *X*-edges, while the rest of the edges of *C*_{i} are *Y*-edges. We denote the cycle *C*_{i} by , which has 2*ℓ* edges and its vertices are *u*_{1}, *v*_{1}, *u*_{2}, *v*_{2}, …, *u*_{ℓ}, *v*_{ℓ}. Finally, w.l.o.g. we may assume that the chord *u*_{1}*v*_{1} is a *Y*-edge (and, of course, *v*_{ℓ}*u*_{1} is an *X*-edge).

We will build our canonical path from *G* towards *G*′. At any particular step, the last constructed realization is denoted by *Z*. (At the beginning of the process we have *Z* = *G*). We are looking for the next realization, denoted by *Z*′. We will control the canonical path system with an **auxiliary** structure, originally introduced by Kannan, Tetali and Vempala in [1]:

The matrix *M*_{G} denotes the **adjacency matrix** of the bipartite realization *G* where the rows and columns are indexed by the vertices of *U* and *V*, respectively, with the slight alteration that a position corresponding to a forbidden edge (a non-chord) is indicated with a *. There is a natural correspondence between the entries of matrices on *U* × *V* and the chords of *G*. Our auxiliary structure is the matrix

Summation does not change the positions with a *. Since the non-* entries of a bipartite adjacency matrix are 0 or 1, the possible entries of are *, −1, 0, 1, 2. An entry is * if it corresponds to a forbidden edge, and it is −1 if the edge is missing from both *X* and *Y* but it exists in *Z*. It is 2 if the edge is missing from *Z* but exists in both *X* and *Y*. It is 1 if the edge exists in all three graphs (*X*, *Y*, *Z*) or it is there only in one of *X* and *Y* but not in *Z*. Finally, it is 0 if the edge is missing from all three graphs, or the edge exists in exactly one of *X* and *Y* and in *Z*. (Therefore, if an edge exists in exactly one of *X* and *Y* then the corresponding chord in is always 0 or 1). It is easy to see that the row and column sums of are the same as the row and column sums in *M*_{X} (or *M*_{Y}, or *M*_{Z}).

Now we are ready to determine the -swap sequence between *G* and *G*′ and this is the point where realizations from and start behave slightly differently. From now on we will work with realizations from but we will point out those turning points where there are real differences. The first such difference is that in the case of a directed realization there may be a vertex *v*_{i} along the cycle *C* s.t. *u*_{1}*v*_{i} is a non-chord, while for a simple bipartite realization this does not happen.

We determine the -swap sequence between *G* and *G*′ from through an iterative algorithm. In the first iteration we check, step by step, the positions (*u*_{1}, *v*_{2}), (*u*_{1}, *v*_{3}), …, (*u*_{1}, *v*_{ℓ}) and take the smallest *j* for which (*u*_{1}, *v*_{i}) is an actual edge in *G*. Since (*u*_{1}, *v*_{ℓ}) is an edge in *G*, such an *i* always exists. A typical configuration is shown in Fig 1.

We call the chord *u*_{1}*v*_{i} the **start-chord** of the current sub-process and *u*_{1}*v*_{1} is the **end-chord**. We will **sweep** the alternating chords along the cycle. The vertex *u*_{1} will be the **cornerstone** of this operation. This process works from the start-chord *u*_{1}*v*_{i}, *v*_{i}*u*_{i} (non-edge), *u*_{i}*v*_{i−1} (an edge) toward the end-chord *v*_{1}*u*_{1} (non-edge)—switching their status in twos and fours. We check positions *u*_{1}*v*_{i−1}, *u*_{1}*v*_{i−2} (all are non-edges) and choose the first chord among them, which we call the **current-chord**. (Since *u*_{1} belongs to at most one non-chord we never have to check more than two positions to find a chord).

**Case 1**: As we just explained the typical situation is that the current-chord is the “next” one, so when we start this is typically *u*_{1}*v*_{i−1}. Assume that this is a chord. Then we can proceed with the swap operation *v*_{i−1}*u*_{i}, *v*_{i}*u*_{1} ⇒ *u*_{1}*v*_{i−1}, *u*_{i}*v*_{i}. We just produced the first “new” realization in our sequence, this is . For the next swap operation this will be our new current realization. This operation will be called a **single-step**.

In a realization *Z* we call a chord **bad** if its state in *Z* (being edge or non-edge) is different from its state in *G*, or equivalently, different from its state in *G*′, since *G* and *G*′ differ only on the chords along the cycle (recall that in our nomenclature a chord is a pair of vertices which may form an edge). After the previous swap, we have two bad chords in , namely *u*_{1}*v*_{i−1} and *v*_{i}*u*_{1}.

Consider now the auxiliary matrix (here ). As we saw earlier, any chord not contained in has the same state in *X*, *Y* and *Z*. Accordingly, the corresponding matrix value is 0 or 1 in . We call a position **bad** in if this value is −1 or 2. (A bad position in always corresponds to a bad chord). Since we switch the start-chord into a non-edge, it may become 2 in (in case the start-chord is an edge in both *X* and *Y*). Furthermore, the current-chord turned into an edge. If it is a non-edge in both *X* and *Y* then its corresponding value in becomes −1. After this step, we have at most two bad positions in the matrix, at most one with 2-value and at most one with −1-value. Finishing our swap operation, the previous current-chord becomes the new start-chord, so it is the edge *u*_{1}, *v*_{i−1}.

**Case 2**: If the position below the start-chord (this is now *u*_{1}*v*_{i−2}) is a non-chord, then we cannot produce the previous swap. Then the non-edge *u*_{1}*v*_{i−3} is the current-chord. For sake of simplicity we assume that *i* − 3 = 2 so we are in Fig 1. (That is, *i* − 1 = 4). Consider now the alternating *C*_{6} cycle: *u*_{1}, *v*_{2}, *u*_{3}, *v*_{3}, *u*_{4}, *v*_{4}. It has altogether three vertex pairs which may be used to perform an -swap operation. We know already that *u*_{1}*v*_{3} is a non-chord. If neither *v*_{2}*u*_{4} nor *u*_{3}*v*_{4} are chords, then this alternating cycle provides an -compatible circular *C*_{6}-swap. Again, we found the valid swap *v*_{2}*u*_{3}, *v*_{3}*u*_{4}, *v*_{4}*u*_{1} ⇒ *u*_{1}*v*_{2}, *u*_{3}*v*_{3}, *u*_{4}*v*_{4}. After that we again have 2 bad chords, namely *u*_{1}*v*_{2} and *v*_{4}*u*_{1}, and together we have at most two bad positions in the new , with at most one 2-value and at most one −1-value.

Finally, if one position, say *v*_{2}*u*_{4}, is a chord then we can process this *C*_{6} with two swap operations. If this chord is, say, an actual edge, then we swap *v*_{2}*u*_{4}, *v*_{4}*u*_{1} ⇒ *u*_{1}*v*_{2}, *u*_{4}*v*_{4}. After this we can take care of the *v*_{2}, *u*_{3}, *v*_{3}, *u*_{4} cycle. Along this sequence we never create more than 3 bad chords: the first swap makes chords *v*_{2}*u*_{4}, *v*_{4}*u*_{1}, and *u*_{1}*v*_{2} bad ones, and the second cures *v*_{2}*u*_{4} but does not touch *u*_{1}*v*_{2} and *v*_{4}*u*_{1}. So, along this swap sequence we have 3 bad chords, and in the end we have only 2. On the other hand, if the chord *v*_{2}*u*_{4} is not an edge, then we can swap *v*_{2}*u*_{3}, *v*_{3}*u*_{4} ⇒ *u*_{3}*v*_{3}, *u*_{4}*v*_{2}, creating one bad edge, then by swapping the four cycle *u*_{1}, *v*_{2}, *u*_{4}, *v*_{4} we cure *v*_{2}*u*_{4} but we switch *u*_{1}*v*_{2} and *v*_{4}*u*_{1} into bad chords. We finished our **double-step** along the cycle.

In a double-step we create at most three bad chords. When the first swap uses three chords along the cycle then we may have at most one bad chord (with -value 0 or −1) and then the next swap switches back the chord into its original status, and makes two new bad chords (with at most one 2-value and one −1-value). When the first swap uses only one chord from the cycle, then it creates three bad chords (changing two chords into non-edges and one into an edge), therefore it may create at most two 2-values and one −1-value. After the second swap, there will be only two bad chords, with at most one 2-value, and at most one −1-value.

When only the third position corresponds to a chord in our *C*_{6} then after the first swap we may have two −1-values and one 2-value. However, after the next swap we will have at most one of both types.

After finishing our single- or double-step, the previous current-chord becomes the new start-chord and we look for the new current-chord. Then we repeat our procedure. There is one important point to be mentioned: along the step, the start-chord switches back into its original status, so it will not be a bad chord anymore. So even if we face a double-step the number of bad chords will never be larger than three (together with the chord *v*_{i}*u*_{1} which is still in the wrong state, so it is a bad chord), and we always have at most two 2-values and at most one −1-value in .

When our current-chord becomes *v*_{1}*u*_{2} then the last step will switch back the last start-chord into its correct state, and the last current-chord cannot be in a bad state. So, when we finish our sweep from *u*_{1}*v*_{i} to *v*_{1}*u*_{1}, we will only have one bad chord (with a possible 2-value in ). This concludes the first iteration of our algorithm.

For the next iteration, we seek a new start-chord between *v*_{i}*u*_{1} and *v*_{ℓ}*u*_{1} and the chord *v*_{i}*u*_{1} becomes the new end-chord. We repeat our sweeping procedure until there are no more unprocessed chords. Upon completion, we find a realization sequence from *G* to *G*′. If in the first sweep we had a double-step, then such a step will never occur later, so altogether with the (new) bad end-chord we never have more than three bad chords (corresponding to at most two 2-values and at most one −1-value).

However, if the double-step occurs sometime later, for example in the second sweep, then we face to the following situation: if we perform a circular *C*_{6}-swap, then all together we have at most two 2-values and one −1-value. Thus, we may assume that there is a chord suitable for a swap in our *C*_{6}. If this chord is a non-edge, then the swap around it produces one bad chord, and at most one bad position in . The only remaining case is when that chord is an edge. After the first swap there will be four bad chords, and there may be at most three 2-values and at most one −1 value. However, after the next swap (finishing the double step) we annihilate one of the 2-values, and after that swap there are at most two 2-values and at most one −1-value along the entire swap sequence. When we finish our second sweep, then chord *v*_{i}*u*_{1} will be switched back into its original state and it will not be bad anymore.

Iteratively applying the algorithm, the entire cycle is processed after at most *ℓ* sweep sequences. This finishes the construction of the required -swap sequence (and the required realization sequence).

Meanwhile we also proved the following important observations:

**Lemma 7**. *For the Markov chain* , *we always have at most two* 2-*values and at most one* −1-*value in our auxiliary matrix* *along our procedure*.

**Lemma 8**. *For the Markov chain* , *each auxiliary matrix* *occurring along our procedure is at most swap-distance one from a matrix with at most three bad positions: with at most two* 2-*values and with at most one* −1-*value in the same column*.

Now we are ready to describe the following, highly technical theorem from [10] which is required to show that the defined swap Markov-chains are rapidly mixing.

**Theorem 9** (Section 4 in [10]). *If the designed canonical path system satisfies the three conditions below, then the MCMC process is rapidly mixing. The conditions are*:

- (Θ).
*For each i*<*l the constructed path**satisfies m*′ ≤*c*⋅ |*C*_{i+1}|*for a suitable constant c*. - (Ω). ∀
_{j}*there exists a realization*s.t. ≤ Ω_{2},*where M*,_{G}is the**bipartite adjacency matrix**of G*denotes the Hamming distance, and*Ω_{2}*is a small constant*. - (Ξ).
*For each vertex**in the path being traversed the following three objects together uniquely determine the realizations X, Y and the path itself*:*The auxiliary matrix*,*the symmetric difference*∇ =*E*(*X*)△*E*(*Y*),*and a polynomial size parameter set*.

The meaning of condition (Ξ) is that these structures can be used to control certain features of the canonical path system; namely, their numbers give a bound on the number of canonical paths between any realization pair *X*, *Y* which traverses .

Condition (Ω) implies that the space of auxiliary matrices is larger than by a multiplicative factor of at most .

To use this theorem we have to show that the defined swap sequences between *H*_{i} and *H*_{i+1}, using the cornerstone *u*_{1} chosen in (Φ), satisfy conditions (Θ), (Ω), and (Ξ) of Theorem 9. The first one is easy to see, since we can process any cycle of length 2*ℓ* in *ℓ* − 1 swaps. Therefore, we may choose *c* = 1 in (Θ). Condition (Ξ) holds for the same reason as it holds in paper [12]. Thus only condition (Ω) remains to be checked.

Until this very moment the choice of the cornerstone vertex *u*_{1} was arbitrary. Before we turn to the analysis of the swap sequences, we choose which particular vertex of the cycle will serve as its cornerstone.

Let the submatrix *A* contain those positions from any adjacency or any auxiliary matrix which correspond to the positions *u*_{i}*v*_{j} defined by the vertices from . Furthermore, denote by *A*[*Z*] the submatrix of spanned by the vertices of . Then:

- (Φ). Let
*u*_{1}be a vertex which has the lowest row sum in the submatrix*A*[*H*_{i}] =*A*[*G*].

## The analysis of the swap sequences between milestones in

In this section, we will analyze the undirected case. We introduce the new **switch** operation on integer matrices: we fix the four corners of a submatrix, and we add 1 to two corners in a diagonal, and add −1 to the corners on the other diagonal. This operation clearly does not change the column and row sums of the matrix. (We will use this operation on adjacency matrices or on auxiliary matrices of realizations). For example, if we consider the adjacency matrix *M*_{G} of a realization of **d** and make a valid swap operation, then this is equivalent to a switch in this matrix. The next statement is trivial but very useful:

**Claim 10**. *If two matrices have switch-distance 1, then their Hamming distance is* 4.

*Consequently, if the switch-distance is c then the Hamming distance is bounded by*4

*c*.

The next lemma shows that property (Ω) holds for the auxiliary matrices along the swap sequence from *G* toward *G*′ for degree sequences corresponding to Theorem 3 and Theorem 2.

**Lemma 11**. *For any realization Z along the constructed swap sequence from G to G*′ *in* *there exists a realization K* = *K*(*Z*) *such that*

*Proof*. The swap sequence transforming *G* to *G*′ only touches chords induced by . Therefore, the row and column sums in *A*[*Z*] are the same as that of *A*[*G*], so the cornerstone has the minimum row sum in *A*[*Z*] as well.

Any entries of 2’s and −1’s in are in the row of *u*_{1}, moreover, they are contained in *A*[*Z*]. Suppose . The sum of entries of *A*[*Z*] in the column *v*_{j} is , therefore such that . Since the sum of the entries in row *u*_{1} is minimum among the rows of *A*[*Z*], there must such that . Obviously, , so . The switch operation *u*_{1}*v*_{j}, *u*_{k}*v*_{l} ⇒ *u*_{1}*v*_{l}, *u*_{k}*v*_{j} (decrease the entries of the matrix by one at positions *u*_{1}*v*_{j} and *u*_{k}*v*_{l}, and increase the entries at positions *u*_{1}*v*_{l} and *u*_{k}*v*_{j} by one) in (and in *A*[*Z*]) eliminates the entry of 2 at *u*_{1}*v*_{j}, and creates an entry of 1 at both *u*_{1}*v*_{j} and *u*_{k}*v*_{j}. In the column *v*_{l} three scenarios are possible: either the entry −1 and a 0 exchange their positions, or a 0 and a 1 exchange their positions; finally, it is also possible that the −1 and a 1 both become 0.

By repeating the previous argument, we may eliminate one more entry 2, if necessary, from *A*[*Z*]. (Recall that at the beginning we had at most two 2s in ). Although it is possible that the entry −1 is not in the *u*_{1}-row anymore, it does not cause any hardship. Let be the matrix we get after performing these at most two switches that eliminate the 2’s. Each entry of is a 0 or a 1, except at most one −1 entry.

The proof now diverges into two cases corresponding to Theorem 2 and Theorem 3, respectively.

### Case of Theorem 2: Sequence d satisfies Eq 1

Suppose that . Since both *u*_{0} and *v*_{0} are at least 1, there ∃*v*_{1} ∈ *V* and ∃*u*_{1} ∈ *U* such that . If , there is a switch which transforms into a realization of **d**. Otherwise, observe that

The number of entries of 1 in that are incident on the same row as *u*_{0} or *u*_{1}, on the same column as *v*_{0} or *v*_{1}, or in the above counted set is at most

The last inequality follows from Equality 1. Therefore there exists *u*_{2} ∈ *U*, *v*_{2} ∈ *V* such that {*u*_{0}, *v*_{0}, *u*_{1}, *v*_{1}, *u*_{2}, *v*_{2}} is a set of 6 vertices where and . Switching along the six positions determined by the cyclically successive pairs, we get an adjacency matrix corresponding to a realization of **d**.

### Case of Theorem 3: Sequence d satisfies Eqs 2 and 3

From now on we will consider the entire matrix and not only *A*. Suppose that . Let and . If ∃(*u*, *v*) ∈ *U*′ × *V*′ such that , then switch operation *u*_{0}*v*, *uv*_{0} ⇒ *u*_{0}*v*_{0}, *uv* transforms into an adjacency matrix.

Suppose from now on, that ∀(*u*, *v*)∈*U*′ × *V*′ we have . Let

Clearly, *U*″ ∩ *U*′ = *V*″ ∩ *V*′ = ∅. Suppose there ∃(*u*_{2}, *v*_{2}) ∈ *U*″ × *V*″ such that . By definition, there ∃(*u*_{1}, *v*_{1}) ∈ *U*′ × *V*′ such that and . Clearly, applying first the switch operation *u*_{1}, *u*_{2} and *v*_{1}, *v*_{2}, and then the operation *u*_{0}, *u*_{1} and *v*_{0}, *v*_{1} transforms into an adjacency matrix.

Lastly, suppose that ∀(*u*, *v*)∈*U*″ × *V*″ we have . This case is shown in Fig 2.

In addition to the zeroes in *U*″ × *V*″, for any *u* ∈ *U*″. We have
(11)

The right-hand side can be estimated from below as follows. Since the row and column sums of are the same as that of *M*_{X}, we have

For any *v* ∈ *V*′ and *u* ∈ *U*\*U*″, we have . Also, for any *u* ∈ *U*′ and *v* ∈ *V*\*V*″, we have . Therefore

Clearly, if *c*_{2} ≤ *c*_{1} + 1 or *d*_{2} ≤ *d*_{1} + 1 (i.e., *G* is almost half-regular), we already have a contradiction. We also have
(12)

Since we may suppose that *c*_{2} ≥ *c*_{1} + 2, we can substitute |*V*″| ≥ *m* − *d*_{2} and |*U*″| ≤ *n* − *c*_{1} − 2 into the inequality, yielding

Symmetrically, a similar derivation gives

The last two inequalities clearly contradict the assumptions of this claim.

In summary, in every case there exist at most 4 switches which transform into a 0 − 1 matrix, which is a matrix with suitable row- and column sums, therefore it is the adjacency matrix of a realization *K* of the degree sequence **d**.

## The analysis of the swap sequences between milestones in

Now we turn to discussing the directed case. As in the previous section, condition (Ω) is the only remaining assumption of Theorem 9 which does not immediately follow from the construction of swap sequences between consecutive milestones.

**Lemma 12**. *For any realization Z along the constructed swap sequence from G to G*′ *there exists a realization K* = *K*(*Z*) *such that*

*Proof*. As described by Lemma 8, it is possible that realization *Z* is derived by an -swap which is a first *C*_{4}-swap to resolve an alternating *C*_{6} cycle along the sweep. It may introduce an extra 2-value and/or a −1-value into the auxiliary structure. But Lemma 8 also shows that the next *C*_{4} swap will revert these extra bad positions. Therefore let *Z*^{S} denote the realization *Z* itself if this extra swap is not needed, or the new realization if it is needed. Then has at most two entries of 2 and at most one entry of −1. Now we have to show that there is a realization *K* such that

As before we will use the shorthand

The swap sequence transforming the bipartite representation *G* to *G*′ (also, the previous extra swap) only touches chords induced by . Therefore, the row and column sums in *A*[*Z*] are the same as that of *A*[*G*], so the cornerstone has the minimum row sum in *A*[*Z*] as well.

Any entries of 2’s and −1’s in are in the row of *u*_{1}, moreover, they are contained in *A*[*Z*]. Suppose . The column of *v*_{j} in *A*[*Z*] contains at least one zero, therefore there exist two vertices such that and , even if there is a * in the column of *v*_{j}. We have two cases.

- There such that : obviously, , so . The switch operation
*u*_{1}*v*_{j},*u*_{k}*v*_{l}⇒*u*_{1}*v*_{l},*u*_{k}*v*_{j}(decrease the entries of the matrix by one at positions*u*_{1}*v*_{j}and*u*_{k}*v*_{l}, and increase the entries at positions*u*_{1}*v*_{l}and*u*_{k}*v*_{j}by one) in (and in*A*[*Z*]) eliminates the entry of 2 at*u*_{1}*v*_{j}, and creates an entry of 1 at both*u*_{1}*v*_{j}and*u*_{k}*v*_{j}. In the column*v*_{l}three scenarios are possible: either the entry −1 and a 0 exchange their positions, or a 0 and a 1 exchange their positions; finally, it is also possible that the −1 and a 1 both become 0. - If for all either or or holds: since the sum of the entries in row
*u*_{1}is minimum among the rows of*A*[*Z*], this is only possible if there exist*v*_{l′},*v*_{l″}∈*V*∩*V*(*C*) such that , , , , and for we have . This is shown on Fig 3.

If the second case applies, the first case must hold if we replace *k* by *k*′; if not, column *v*_{l″} would contain two *, a contradiction.

By repeating the previous argument, we may eliminate one more entry 2, if necessary, from *A*[*Z*] (and ). (Recall that at the beginning we had at most two 2’s in ). Although it is possible that the entry −1 is not in the *u*_{1}-row anymore, it does not cause any hardship. Let be the matrix we get after performing these at most two switches that eliminate the 2’s. Each entry of is a 0 or a 1, except at most one −1 entry.

The proof now diverges into two cases corresponding to Theorem 4 and Theorem 5, respectively.

### Case of Theorem 4: Sequence d satisfies Eq 4

From now on we will consider the entire matrix and not only *A*. Suppose that . The degrees of *u*_{0} and *v*_{0} are at least one, and so there are at least two entries of 1’s in the row and column of *u*_{0} and *v*_{0}, respectively. Therefore there exists *u*_{1} ∈ *U* and *v*_{1} ∈ *V* such that they are not copies of the same original vertex and . If , there is a switch which transforms into a bipartite realization of . Otherwise , so observe that

The number of entries of 1 in that are incident on either the rows of *u*_{0} or *u*_{1}, on the column of *v*_{0} or *v*_{1}, or on a position corresponding to an element of the above counted set is at most

This implies that there exist *u*_{2} ∈ *U* and *v*_{2} ∈ *V* such that , , and . Because Equality 4 claims is strictly larger than the right hand side by at least 2Δ, we may also assume that , and . Therefore there exists *u*_{2} ∈ *U*, *v*_{2} ∈ *V* such that {*u*_{0}, *v*_{0}, *u*_{1}, *v*_{1}, *u*_{2}, *v*_{2}} is a set of 6 vertices where and . Switching along the six positions determined by the cyclically successive pairs, we get an adjacency matrix corresponding to a realization of **d**.

### Case of Theorem 5: Sequence d satisfies Eqs 5 and 6

From now on we will consider the entire matrix and not only *A*. Suppose that . Let and . If ∃(*u*, *v*) ∈ *U*′ × *V*′ such that , then switch operation *u*_{0}*v*, *uv*_{0} ⇒ *u*_{0}*v*_{0}, *uv* transforms into an adjacency matrix.

Suppose from now on, that ∀(*u*, *v*)∈*U*′ × *V*′ we have . Let

Clearly, *U*″ ∩ *U*′ = *V*″ ∩ *V*′ = ∅. Suppose contains more than |*U*″| entries of 1’s. A simple pigeon-hole principle argument implies that there ∃(*u*_{2}, *v*_{2}) ∈ *U*″ × *V*″ and ∃(*u*_{1}, *v*_{1}) ∈ *U*′ × *V*′ such that , , , and . Clearly, applying first the switch operation *u*_{1}, *u*_{2} and *v*_{1}, *v*_{2}, and then the operation *u*_{0}, *u*_{1} and *v*_{0}, *v*_{1} transforms into an adjacency matrix.

Lastly, suppose that contains at most |*U*″| entries of 1’s. We have
since contains exactly |*U*″| of *. The right-hand side can be estimated from below as follows. Since the row and column sums of are the same as that of *M*_{X}, we have

Clearly, if *c*_{2} = *c*_{1} or *d*_{2} = *d*_{1} (i.e., *G* is half-regular), we already have a contradiction. Each column in *V* \ *V*″ may contain at most one *, therefore

Moreover, for any *u* ∈ *U*″. Combining these inequalities, we get

A few lines of computation similar to those in the previous section give

The last two inequalities clearly contradict the assumptions of this claim.

In summary, in every case there exist at most 4 switches which transform into a 0 − 1 matrix, which is a matrix with suitable row- and column sums, therefore it is the adjacency matrix of a realization *K* of the degree sequence .

## Erdős-Rényi random graphs

The following statement is a straightforward, easy consequence of Theorem 3.

**Corollary 13**. *If G is a bipartite Erdős-Rényi random graph on vertex classes of size n and m, with edge probability p*(*n*, *m*), *such that* *then the swap Markov chain is rapidly mixing on the bipartite degree sequence of G with probability at least* . *(The roles of m and n can be interchanged)*.

*Proof*. Let *p* = *p*(*n*, *m*), and . Also, let *c*_{1} = *pn* − *ε*_{c}, *c*_{2} = *pn*+ *ε*_{c}, *d*_{1} = *pm* − *ε*_{d}, *d*_{2} = *pm*+ *ε*_{d}. Eq 3 holds, we only need to check that

Moreover, by Hoeffding’s inequality, which proves the statement.

For completeness sake, we also state the respective theorem for directed random graphs.

**Corollary 14**. *If* *is a directed Erdős-Rényi random graph on n vertices with out-edge probability p*(*n*), *such that* *then the swap Markov chain is rapidly mixing on the directed degree sequence of* *with probability at least* .

## Comparing the applicability of the Theorems

Next we discuss the applicability of our results. Theorem 2 (and the result of Greenhill and Sfragara) is not applicable, when the average degree . In case of Theorem 3 there is no such region: for example if all degrees are between and , then inequality for the average degree is possible. It is also easy to see that Theorem 3 applies to all half-regular (consequently for all regular) bipartite degree sequences.

However, if the degrees are evenly distributed between 1 and , then Theorem 2 applies while Theorem 3 does not. Therefore these results have different validity regions and they are independent from each other.

Generally speaking Theorem 2 and the Greenhill and Sfragara results are better applicable to degree sequences developed under some scale-free random dynamics (with *γ* > 2.5), while Theorem 3 is better fitted to degree sequences developed under the Erdős—Rényi model.

For directed degree sequences similar analysis applies.

## Acknowledgments

The authors of this paper were supported in part by the National Research, Development and Innovation Office—NKFIH grant K 116769 and KH 126853. IM was supported in part by the National Research, Development and Innovation Office—NKFIH grant SNN 116095. DS was supported in part by the National Research, Development and Innovation Office—NKFIH grants K 108947 and K 120706. A preliminary version of this paper can be found as *arXiv* **1712.01709v2**.

## References

- 1.
Kannan R., Tetali P., Vempala S.: Simple Markov-chain algorithms for generating bipartite graphs and tournaments, Extended abstract, in
*Proc. SODA’97*(1997), 193–200. ISBN:0-89871-390-0 - 2.
Petersen J.: Die Theorie der regularen Graphen,
*Acta Math*. 15 (1891), 193–220. - 3.
Havel V.: A remark on the existence of finite graphs. (in Czech),
*Časopis Pěst. Mat*. 80 (1955), 477–480. - 4.
Hakimi S.L.: On the realizability of a set of integers as degrees of the vertices of a simple graph.
*J. SIAM Appl. Math*. 10 (1962), 496–506. - 5.
Gale D.: A theorem on flows in networks,
*Pacific J. Math*. 7(2) (1957), 1073–1082. - 6.
Kleitman D.J., Wang D.L.: Algorithms for constructing graphs and digraphs with given valences and factors,
*Discrete Math*. 6 (1973), 79–88. - 7.
Erdős P.L., Miklós I., Toroczkai Z.: A simple Havel-Hakimi type algorithm to realize graphical degree sequences of directed graphs,
*Elec. J. Combinatorics*17(1) (2010), R66 (10 pp) - 8.
Cooper C., Dyer M., Greenhill C.: Sampling regular graphs and a peer-to-peer network,
*Comb. Prob. Comp*. 16(4) (2007), 557–593. - 9.
Greenhill C.: A polynomial bound on the mixing time of a Markov chain for sampling regular directed graphs,
*Elec. J. Combinatorics*18 (2011), #P234. - 10.
Miklós I., Erdős P.L., Soukup L.: Towards random uniform sampling of bipartite graphs with given degree sequence,
*Electronic J. Combinatorics*20(1) (2013), #P16, 1–49. - 11.
Erdős P.L., Miklós I., Toroczkai Z.: A decomposition based proof for fast mixing of a Markov chain over balanced realizations of a joint degree matrix,
*SIAM J. Disc. Math*. 29(1) (2015), pp. 481–499. - 12.
Erdős P.L., Kiss Z.S., Miklós I., Soukup L.: Approximate Counting of Graphical Realizations,
*PLOS ONE*(2015), pp 20. #e0131300. - 13.
Greenhill C., Sfragara M.: The switch Markov chain for sampling irregular graphs,
*Theoretical Comp. Sci*719 (2018), 1–20. - 14.
Berger A., Müller–Hannemann M.: Uniform sampling of digraphs with a fixed degree sequence, in
*Graph Theoretic Concepts in Computer Science*,**LNCS**6410 Springer, Berlin, (2010), 220–231. - 15.
LaMar, M.D.: Directed 3-Cycle Anchored Digraphs And Their Application In The Uniform Sampling Of Realizations From A Fixed Degree Sequence, in
*ACM & IEEE & SCS Proc. of 2011 Winter Simulation Conference*(Eds. S. Jain, R.R. Creasey*et. al*). (2011), 1–12. - 16.
Greenhill, C.: The switch Markov chain for sampling irregular graphs, in
*Proc. 26th ACM-SIAM Symposium on Discrete Algorithms*, New York-Philadelphia (2015), pp. 1564–1572. - 17.
Amanatidis, G., Kleer, P.: Rapid Mixing of the Switch Markov Chain for Strongly Stable Degree Sequences,
*arXiv preprint***1803.01338**(2018), 1–21. - 18.
Erdős P.L., Király Z., Miklós I.: On graphical degree sequences and realizations,
*Combinatorics, Probability and Computing*(2013), 1–22. - 19.
Sinclair A.: Improved bounds for mixing rates of Markov chains and multicommodity flow,
*Combin. Probab. Comput*. 1 (1992), 351–370.