This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

On Near Optimal Spectral Expander Graphs of Fixed Size

Clark Alexander
email: the author
Abstract

We present two powerful heuristic methods for building random regular graphs and finding a near optimal spectral gap in a finite regular graph.

1 Introduction

From the 1980s and 1990s one has seen several methods for generating random regular graphs [MW,W]. While generating a random graph is extremely easy, the constraint of requiring regularity is what produces the difficulty. There is, however, some renewed interest in random regular graphs as we see that many random regular graphs become near spectral expanders [BB]. In addition, regular graphs allow for consistent edge labeling in a rotation map. [A2] which allows one to efficiently compute a discrete time quantum walk [A1].

This work is presented in two major parts. The first is presenting an extremely simple method for producing a random regular graph with a fixed number of vertices and degree of regularity. This method involves a constructive method for building a regular graph of fixed size and a randomization algorithm by which we can move around a fixed number of edges.

The second part which entails the lion’s share of the present work shows how to produce a Metropolis Coupled Simulated Annealing algorithm for near global optimization of spectral gaps in random regular graphs of fixed size. In the initial stages of this work, we had tried to use a simple simulated annealer, which in large part was able to find Ramanujan graphs quickly and easily. However, during our computational explorations, we found that the method we used for picking a “neighboring” solution greatly affected the overall quality of the solution. Furthermore, switching the method of choosing a neighbor during the annealing process again affected the quality of solution. Thus the next level of complexity called for coupling the annealing solutions. This draws us back to a Metropolis Coupled Markov Chain Monte Carlo (MCMCMC) [MNL] which entered into the computational space cerca 1997 as a way of having a more effective Monte Carlo method for multi-modal distributions. We have modified the MCMCMC to be a Metropolis coupled simulated annealer (MCSA) to look for near optimal spectral expander graphs. We give some numerical results and some empirical evidence in support of an open question as to whether there are infinitely many 7-regular Ramanujan graphs. In short, we have tested every graph with on even number of vertices from 8 to 1000 vertices, and have always been able to produce a Ramanujan graph within a matter of seconds. We have also tested graphs of size 1000 to 2000 adding 20 vertices at a time and have again been able to find Ramanujan graphs, but the computational effort grows substantially after approximately 1200 vertices. Nonetheless, we have found several 7-regular 2000 vertex Ramanujan graphs and the adjacency matrix for one such is available upon request from the author.

2 Part 1: The Algorithms for Randomization

2.1 Constructing a Regular Graph of Fixed Size

In order to draw a regular graph we only need to check one criterion, that is, the product of number of vertices with degree of regularity is even. In our case we will only consider simple undirected graphs with no loops. From our first week of graph theory class we remember for a graph G=(V,E)G=(V,E) with degree of regularity dd we have.

deg(G)=2|E|=d|V|deg(G)=2|E|=d|V| (1)

We cannot satisfy this if dd and |V||V| are both odd.

Thus we can split our regular graph generation into two cases for the parity of dd. In the first, and easier case, we let dd be even. This allows us to pick any number of vertices (greater than dd). The first step is to label our vertices 11 to |V||V| ( or 0 to |V|1|V|-1 mod |V||V|). And create the cycle graph C|V|C_{|V|}. This gives us a 2 regular graph. Now we iterate for i=2i=2 to d/2d/2 connecting vnv_{n} to vn+iv_{n+i}. Below is pseudo which has been implemented in both Python(3) and Julia (1.4). This is a pseudo-code for generating the adjacency matrix of a regular graph. We assume that the product of vertices and degree of regularity is even.

Algorithm 1 Rotation map from the adjacency matrix; Pseudo-code
1:procedure GenerateRegularGraph(vertices, degree))
2:     nn = vertices
3:     dd = degree
4:     if dmod2=1d\mod 2=1 then
5:         A=eye(n,k=n//2)A=eye(n,k=n//2) \triangleright This corresponds to connecting diametrically opposed vertices.
6:         for  LL in 1:d//21:d//2 do
7:              A+=eye(n,k=L+1)A+=eye(n,k=L+1)
8:              A+=eye(n,k=n(L+1))A+=eye(n,k=n-(L+1))
9:         end for
10:         A=(A+At)A=(A+A^{t}) \triangleright Symmetrize the matrix
11:     else\triangleright We don’t have diametrically connected vertices
12:         A=zeros(n,n)A=zeros(n,n)
13:         for  LL in 1:d//21:d//2 do
14:              A+=eye(n,k=L+1)A+=eye(n,k=L+1)
15:              A+=eye(n,k=n(L+1))A+=eye(n,k=n-(L+1))
16:         end for
17:         A=(A+At)A=(A+A^{t})
18:     end if
19:     return AA
20:end procedure

Let’s take a look at three potential examples. These are all produced by the networkx package in Python. Figure 1 gives 4 regular graphs with no randomness the number of vertices and degrees of regularity are (9,4),(12.4),(12,6),(14,5)(9,4),(12.4),(12,6),(14,5) respectively.

Refer to caption
(a) 9 vertex, 4-regular
Refer to caption
(b) 12 vertex 4-regular
Refer to caption
(c) 12 vertex 6-regular
Refer to caption
(d) 14 vertex 5-regular
Figure 1: Regular graphs with no randomness.

2.2 The Algorithm for Randomization

The general algorithm is quite straight forward once we have a regular graph in place. In plain English we algorithm looks something like:

  1. 1.

    Pick two edges at random, swap one end point of each.

  2. 2a.

    If the graph is still regular with the same degree and there are no loops accept the switch.

  3. 2b.

    If not, pick again.

  4. 3.

    Repeat until “sufficiently” randomized.

The supporting procedures of checking for loops (i.e. the diagonal of the adjacency matrixhas a nonzero element) and that the graph is still regular (all rows sum to the same degree) will be assumed. Now we come to the pseudo-code implementation of the graph randomization algorithm. First, we need the ability to switch edges. In the adjacency matrix representation the edges are represented by locations in the matrix which are 1. So the procedure getEdges is simply find the nonzero locations in the adjacency matrix

Algorithm 2 Switch Edges; Pseudo-code
1:procedure SwitchEdges(vertices, degree)
2:     AGenerateRegularGraphA\leftarrow GenerateRegularGraph(vertices, degree)
3:     BAB\leftarrow A \triangleright In python we need AA.copy() to get a different memory pointer
4:     edges \leftarrow getEdges(AA)
5:     Randomly choose two edges e1,e2e1,e2 from edges.
6:     new1=[e1[1],e2[2]]new1=[e1[1],e2[2]]
7:     new2=[e2[1],e1[2]]new2=[e2[1],e1[2]]
8:     B[e1[1],e1[2]]=0B[e1[1],e1[2]]=0
9:     B[e2[1],e2[2]]=0B[e2[1],e2[2]]=0
10:     B[e1[2],e1[1]]=0B[e1[2],e1[1]]=0
11:     B[e2[2],e2[1]]=0B[e2[2],e2[1]]=0
12:     B[new1[1],new1[2]]=1B[new1[1],new1[2]]=1
13:     B[new1[2],new1[1]]=1B[new1[2],new1[1]]=1
14:     B[new2[1],new2[2]]=1B[new2[1],new2[2]]=1
15:     B[new2[2],new2[1]]=1B[new2[2],new2[1]]=1
16:     if is_regular(BB) and np_loops(BBthen
17:         return BB
18:     else
19:         return AA
20:     end if
21:end procedure
Algorithm 3 Generate Random Regular graph; Pseudo-code
1:procedure GenerateRandomGraph(vertices, degree, switches)
2:     AGenerateRegularGraphA\leftarrow GenerateRegularGraph(vertices, degree)
3:     BB\leftarrow SwitchEdges(A)(A)
4:     for  kk in 1:switches do
5:         BB\leftarrow SwitchEdges(B)(B)
6:     end for
7:     return BB
8:end procedure

2.3 Examples of Randomized Regular Graphs

Now we give three pairs of examples. In order to show that we can use this to generate random graphs of nearly arbitrary degree. We’ll give examples of size (20,8), (30,13), and the much larger (500,25).

Refer to caption
(a) 20 vertex 8-regular nonrandom
Refer to caption
(b) 20 vertex 8-regular random
Figure 2: 20 vertex 8-regular graphs
Refer to caption
(a) 30 vertex 13-regular nonrandom
Refer to caption
(b) 30 vertex 13-regular random
Figure 3: 30 vertex 13-regular graphs

For the larger example, the plots are not so enligthening, but we shall show them here and give timing so that we can demonstrate the overall efficacy of our ability to randomize graphs of nearly arbitrary degree.

Refer to caption
(a) 500 vertex 25-regular nonrandom
Refer to caption
(b) 500 vertex 25-regular random
Figure 4: 500 vertex 25-regular graphs

The second graph in 4 is the results of 1500 random edge switches and on the author’s laptop took 53.6s to complete.

And for posterity let’s examine the spectral propertires of these two graphs.

Refer to caption
(a) 500 vertex 25-regular nonrandom
Refer to caption
(b) 500 vertex 25-regular random
Figure 5: 500 vertex 25-regular graphs eigenvalue histograms

It’s clear from the spectrum that both graphs are 25 regular and that the randomized graph is closer to the semi-circular distribution than the nonrandom graph.

3 Part 2: The Search for Ramanujan Graphs which do not have Explicit Constructions

3.1 How to Anneal a Regular Graph

By the construction in §2.1 we achieve a regular graph of fixed size. In particular we build the adjacency matrix of a regular graph of fixed size. This construction, however, has a small spectral gap and a large graph diameter. Using our randomization scheme we wish to construct an adjacency matrix of a regular graph with a larger spectral gap. We have seen before [BB] that a random regular graph comes close to a Ramanujan bound for spectral expansion. The goal at present is to use our randomization scheme to search for ever larger spectral gaps. In reality, we will use a simulated annealer to minimize the normalized λ2\lambda_{2}. Looking a little further down 8 shows how eigenvalues perform with single random switches.

We see that that randomization scheme first brings λ2\lambda_{2} to within the Ramanujan threshold quickly, but eventually moves above it. This does not, however, get to the weak bound of Alon-Bopanna, nor the strong bound. It is our goal to see how close we can get to these bounds. The striking feature or many graphs is how quickly we can cross the simple Ramanujan threshold.

The general structure of a simulated annealing algorithm is straight-forward:

  1. 1.

    Guess a solution at random

  2. 2.

    Score that solution

  3. 3.

    Pick a “neighbor” solution

  4. 4.

    Score the neighbor.

  5. 5.

    If the neighbor is better, make it the new solution

  6. 6.

    if neighbor is worse, still accept neighbor if not too far off

  7. 7.

    Lower the algorithm’s “temperature”

  8. 8.

    Repeat until satisfied

This is a gross oversimplification, but there are two salient points we need to consider. The first being: How do we pick an effective “neighbor” solution. The second being: How do we deal with the temperature parameter? Changes in either of this points can drastically affect the quality of solutions in a simulated annealer. In particular, lowering the temperature too quickly (i.e. quenching) tends to land a solution in the first deep local minimum the algorithm finds. On the other hand, lowering the temperature too slowly, takes too long and begins to look like a brute-force solution, which we don’t have time for.

In the case of the random regular graph, we will set our annealing algorithm to look for the lowest possible normalized λ2\lambda_{2} rather than the largest spectral gap. As it is set up, however, we will never achieve a bipartite graph as the second normalized eigenvalue is 1. In particular a bipartite graph of degree dd has eigenvalues ±d\pm d, which we normalize and consider absolute values. Thus this algorithm ignores bipartite graphs as good expanders since we wish to achieve the steady state vector quickly by starting a random walk at a single vertex rather than in a superposition of vertices in different partition sets. We see, from the figure 8 that switching a pair of edges does well, however, for larger and sparser graphs, this takes too long. Consider, for example, a large cubic or 4-regular graph. That is a graph with several thousand vertices. A single edge switch does very little to affect the eigenvalue gap. Thus, one may consider using multiple edge swaps as the neighboring solution. This means that a “neighbor” graph should swap a dozen or so pairs of edges before measuring λ2\lambda_{2}.

As with a standard annealing algorithm we want to move from essentially a random walk when the temperature is hot to a stochastic gradient descent type algorithm. We, however, wish to slow down not only the random selection of temporary solutions, but also slow down or speed up the edge switching as necessary. Thus we have decided to move from a simple single simulated annealer to a coupled annealer.

3.2 Metropolis Coupled Simulated Annealing

A single simulated annealer is an example of a Markov chain Monte Carlo method tuned for optimization as opposed to finding a posterior probability distribution. As discussed in the previous section we wish to couple multiple simulated annealing algorithms to find a solution which is closerto a global maximum. The idea of coupling was first (published) in the late 1990s [MNL] with an eye toward bimodal and multimodal distributions where MCMC algorithms are slow to converge. From the perspective of this work, we shall leverage multiple optimizers to look for a (closer to) global optimum. In order to tune our coupling we implement the following procedure:

  1. 1.

    Initialize NN simulated annealers with initial temperatures τ1,,τN=1\tau_{1},\dots,\tau_{N}=1 with different cooling rates α1,αN\alpha_{1}\dots,\alpha_{N} These are called chains.

  2. 2.

    Each chain gets a different method of selecting a neighboring solution. For this work the nthn^{th} chain has a neighbor selection of nn random edge switches.

  3. 3.

    For each chain run one step of the simulated annealing algorithm and cool each chain τiτiαi\tau_{i}\leftarrow\tau_{i}*\alpha_{i}

  4. 4.

    Rank order the chains by best solution. The best current solution gets the lowest temperature. This is the “cold chain.”

  5. 5.

    Randomly select two other chains, score them and compute an acceptance probability for switching (or more simply one can simply exchange them without the extra computation).

  6. 6.

    Select a number from a uniform variable U[0,1]U\sim[0,1]. If the acceptance probabilty is higher than the randomly drawn number, switch the chains. That is, switch their neighbor solutions, temperatures and cooling rates.

  7. 7.

    Repeat steps 3-6 until the hottest chain has reached the temperature threshold, or we have reached an acceptable bound (e.g. We have found a Ramanujan graph, or reached a weak lower bound for λ2\lambda_{2}).

3.3 Some Bounds and Asymptotics

For this section we will present the results as they were originally stated and then show the results for normalized eigenvalues. We will also let a graph G=(V,E)G=(V,E) have degree of regularity dd throughout.

3.3.1 Eigenvalues

The original bound for an expander graph to be a Ramanujan graph is

|λ2|<2d1|\lambda_{2}|<2\sqrt{d-1}

In our case, of course, this means

|λ2|<2d1d|\lambda_{2}|<\frac{2\sqrt{d-1}}{d}

Additionally from [N, W1] we have several other bounds. There is a weak bound in which we have

|λ2|2d1d(112r)|\lambda_{2}|\geq\frac{2\sqrt{d-1}}{d}\left(1-\frac{1}{2r}\right) (2)

where rr\in\mathbb{N}. This particular rr is chosen so that kr1k\leq r-1 where

k=logd1(|V|)k=\log_{\sqrt{d-1}}(|V|)

The basic construction comes from finding an eigenvector corresponding to a particular vertex within GG. With a small inspection one can see that as |V||V|\rightarrow\infty this bound becomes the original Ramanujan bound. In our case, we will look for eigenvalues which cross the (slightly) higher bound

|λ2|2d1d(112d)|\lambda_{2}|\leq\frac{2\sqrt{d-1}}{d}\left(1-\frac{1}{2d}\right)

We will demonstrate that for smaller graphs(up to roughly 2000 vertices) we can often get below this bound.

There is one additional much stronger bound

|λ2|2d1d2d11dm/2|\lambda_{2}|\geq\frac{2\sqrt{d-1}}{d}-\frac{2\sqrt{d-1}-1}{d\lfloor m/2\rfloor} (3)

where mm is the diameter of the graph. In [N] this is a strict lower bound. Again, one can see as |V||V|\rightarrow\infty we again approach the Ramanujan bound. This bound as we will show empirically can not be crossed, and even approaching this bound is difficult except for complete graphs or particularly tiny graphs. For example, we have enough computing fire power that we can check every regular graph of size |V|14|V|\leq 14.

Remark.

We can precompute the value of the diameter (mm) of the graph by a simple counting argument. This is done by assuming we have a dd-ary tree. The distance from the root to any leaf is the radius which is half the diameter.

r=m2logd(|V|)r=\frac{m}{2}\geq\lceil\log_{d}(|V|)\rceil (4)

3.3.2 The Number of Regular Graphs

For smaller graphs we have exact calculations of the number of regular graphs [OEIS1, OEIS2]. We also have in [MW] (p58 theorem 1) the number of dd-regular graphs on nn vertices is

|𝒢n,d|(nd)!exp(1d2/4)(nd/2)!2nd/2(1+o(1))|\mathcal{G}_{n,d}|\sim\frac{(nd)!\exp(1-d^{2}/4)}{(nd/2)!2^{nd/2}}\left(1+o(1)\right) (5)

Rearranging this a bit we get the logarithmic count of dd-regular graphs on nn vertices is

log(|𝒢n,d|)nd2(log(nd)1)+log(2)2+(1d2)4\log(|\mathcal{G}_{n,d}|)\sim\frac{nd}{2}(\log(nd)-1)+\frac{\log(2)}{2}+\frac{(1-d^{2})}{4} (6)

3.3.3 Cycles in Random Regular Graphs

We see in [BB, W2] that the number of cycles of length kk in a dd-regular random graph is asymptotically a Poisson random variable XkX_{k}\simPois(λk)(\lambda_{k}) with mean

λk=(d1)k2k\lambda_{k}=\frac{(d-1)^{k}}{2k} (7)

3.4 Known Constructions

There are several well-known constructions for families of Ramanujan graphs, in particular, LPS, Morgenstern, Paley, MSS, Zig-Zag, and Super-Singular Isogeny graphs. Additionally [F,BB] points out that with high probability a dd-regular random graph is Ramanujan or near Ramanujan (ie λ22d1+ε\lambda_{2}\leq 2\sqrt{d-1}+\varepsilon)

The known constructions cover the following cases

Construction Degree of Regularity Conditions
LPS [LPS] p+1p+1 p1mod4p\equiv 1\mod 4
Margulis-Gabber-Galil [Mar, GG] 4 n2n^{2} vertices or infinite
Morgenstern [Mor] q+1q+1 q=pnq=p^{n} for pp prime
Zig-Zag [RVW] d22d_{2}^{2} d1,d2d_{1},d_{2} are degrees of regularity of the two graphs to be multiplied
Paley [Pa, ER] qn12\frac{q^{n}-1}{2} or p2n12\frac{p^{2n}-1}{2} q1mod4q\equiv 1\mod 4 prime, p3mod4p\equiv 3\mod 4 prime
SuperSingular Isogeny Graphs [Pi, EHLMP] +1\ell+1 \ell prime.
Bipartite Graphs [MPS] any Graph must be Bipartite

We see now that the smallest positive integer for which a family of constructions is not known is d=7d=7 for graphs with chromatic number 3 or more. We also have a few other small unknown cases d=11,13,15,19,21,22,23,24d=11,13,15,19,21,22,23,24 Additionally, we see that there are some graphs with specific numbers of vertices which are not known in constructions. For example, the Zig-Zag product requires the number of vertices to be composite and Paley graphs have vertices which are elements of a finite field so we have powers of primes. In the case where p1mod4p\equiv 1\mod 4 the smallest degree of regularity for a Paley graph is (p1)/2(p-1)/2 which quickly becomes quite large. We will explore some relatively smaller graphs for visualization purposes and some moderate sized graphs for the purposes of numerical demonstration.

Remark.

The methods of [Mar,GG] cover 4-regular graphs, but with a perfect square number of vertices. The MCSA finds a 17 vertex Ramanujan graph which is 4-regular in 0.17s\sim 0.17s using a flag to stop at finding such a graph. Additionally, the MCSA finds a near optimal graph of 17 vertices (λ20.6204\lambda_{2}\approx 0.6204) in 53.45s\sim 53.45s. The Ramanujan threshold for a 4-regular graph is 0.866\approx 0.866. Among 17 vertex 4-regular graphs there are 1.15×1046\approx 1.15\times 10^{46} according to [MW]. This is a small demonstration of the efficacy of MCSA. In the next section we shall explore some numerical results more deeply.

3.5 Some Numerical Results

To demonstrate the efficacy of the heuristic search involved, let’s begin with some well-known graphs which are near optimal, the fullerenes [AKS]. In particular we’ll look explicitly at the dodecahedron and the “bucky-ball.” These are well known 3-regular (cubic) graphs with 20 and 60 vertices respectively. To get our eyes adjusted to the way we will draw graphs, here are depictions of the respective fullerene graphs.

Refer to caption
(a)
Refer to caption
(b)
Figure 6: The Dodecahedron and the Bucky Ball

In our scenario we initialize two graphs, a 20 vertex 3-regular and a 60 vertex 3-regular which look like this.

Refer to caption
(a)
Refer to caption
(b)
Figure 7: 3-regular graphs from explicit construction

These graphs are nowhere near expanders, much less optimal expanders. In particular the normalized threshold for a cubic graph to Ramanujan is λ222/30.9428\lambda_{2}\leq 2\sqrt{2}/3\approx 0.9428. In our case the initialized graphs have λ20.96737\lambda_{2}\approx 0.96737 for the 20 vertex graph and λ20.99634\lambda_{2}\approx 0.99634 for the 60 vertex graph.

Again, from [F,BB] we know with high probability that a random regular graph will be Ramanujan. So let’s follow two progressions randomly switching edges for each of these graphs and see how often they fall below the required threshold.

Refer to caption
(a)
Refer to caption
(b)
Figure 8: Eigenvalues of 20 and 60 vertex graphs via random switching

A couple of immediate observations. The smaller the graph, the easier it is to be a spectral expander. This agrees with our intuition about edge expanders as we require very few moves with a small number of vertices to reach any vertex via random walk when the graph is “small.” Larger graphs, however, require more moves and we see this in the fact that a single random switch affects λ2\lambda_{2} far less in the 60 vertex case than in the 20 vertex case. We also see that a vast majority of random regular graphs are below the Ramanujan threshold. In particular in two random trials of 499 graphs, we have 345 such graphs below the threshold in the 20 vertex case and 432 in the 60 vertex case. Additionally we have 68 and 196 graphs below the bucky ball line respectively. However, nothing gets below the dodecahedron line.

Consider now two graphs that we have generated with our Metropolis coupled simulated annealer. These are noth first run algorithms, and thus if we had tuned our parameters very specifically, we could have achieved lower eigenvalues.

Refer to caption
(a) λ20.76759\lambda_{2}\approx 0.76759
Refer to caption
(b) λ20.8576\lambda_{2}\approx 0.8576
Figure 9: Expanders of 20 and 60 vertex graphs via MCSA

Again we notice that neither of these graphs can quite hit the dodecahedon threshold, but they have both surpassed the bucky ball threshold easily as well as exceeding any graph achieved by single random switches.

Now for just a moment let’s turn our attention to 7-regular graphs. This is one of the cases which is not explicitly covered in known constructions. Drawing a graph with more than 60 or so vertices becomes rather unattractive on a page this small, so we will stick to 50 vertices for the sake of demonstration. In a timed run, we flagged the algorithm to stop once it had a achieved a Ramanujan graph. This particular 50 vertex, 7-regular graph cost the author’s laptop 1.1373 seconds of cpu time. The normalized threshold for a 7-regular graph is

λ2=2670.69985\lambda_{2}=\frac{2\sqrt{6}}{7}\approx 0.69985
Refer to caption
Figure 10: A quick Ramanujan graph with λ20.598987\lambda_{2}\approx 0.598987

As we can see, this is significantly lower than the required Ramanujan threshold. This is even below a weak optimal expander as defined in Equation 2.

Now consider a graph that we did not flag.

Refer to caption
Figure 11: A near optimal graph with λ20.5374037\lambda_{2}\approx 0.5374037

In the case of 7-regular graphs the thresholds we’re dealing with are

Ramanujan 0.69985\approx 0.69985
weak optimal 0.649865\approx 0.649865
strict lower bound 170.142857\frac{1}{7}\approx 0.142857

In nearly every case attempted by the author the heuristic optimizer was able to find a graph close to (and in many cases below) the weak optimal expansion constant. In every case, we were able to find a Ramanujan graph, but again, this is not surprising based on the work of [F] However, we were never able to find a graph which met the strict lower bound as given by [N]. In simple numerical trials we were able to find Ramanujan graphs with degree of regularity 7 for every (even) number of vertices between 8 and 2000. This work, however, does not answer the question of whether there is an explicit construction for such graphs.

While the drawing of a graph with 2000 vertices is not very attractive, we can still show the histogram of normalized eigenvalues to show the spectral expansion. Below is a histogram of a 2000 vertex 7-regular graph discovered by Metropolis coupled simulated annealing. The author has also added a spreadsheet of its adjacency matrix into github (email author for address) so that researchers can explore its random properties further at their desire.

Refer to caption
Figure 12: Histogram of 2000 vertex 7-regular Ramanujan graph normalized eigenvalues; λ20.69407\lambda_{2}\approx 0.69407

Appendix: Additional Algorithms

Algorithm 4 Partial Annealing
1:procedure PartialAnneal(matrix, trials, temperature, cooling_rate, switches)
2:     AA = matrix
3:     TT = temperature
4:     λ0\lambda 0 = computeSecondEigenvalue(A)(A)
5:     solution0 = A
6:     best_λ\lambda = λ0\lambda 0
7:     best_solution = solution0
8:     for k in 1:trials do
9:         solution1 = getNeighbor(solution0, switches)
10:         λ1\lambda 1 = computeSecondEigenvalue(solution1)
11:         if λ1<\lambda 1< best_λ\lambda then
12:              best_λ\lambda = λ1\lambda 1
13:              best_solution = solution1 \triangleright Keep the global best in storage
14:         end if
15:         if λ1<λ0\lambda 1<\lambda 0 then
16:              solution0 = solution1
17:              λ0\lambda 0 = λ1\lambda 1
18:         else
19:              ap = acceptance_probability(λ0\lambda 0, λ1\lambda 1, TT)
20:         end if
21:         if ap >> rand() then
22:              solution0 = solution1
23:              λ0=λ1\lambda 0=\lambda 1
24:         end if
25:     end for
26:     T=T*=cooling_rate
27:     return best_solution, best_λ\lambda, TT
28:end procedure
Algorithm 5 Define Coupling
1:procedure DefineCoupling((vertices, degree, chains, min_cooling, max_cooling))
2:     graphs = [generateRegularGraph(vertices, degree) for k in range(chains)]
3:     initial_temperatures = ones(chains)
4:     cooling_rates = [start = min_cooling, end = max_cooling, spacing = (max_cooling - min_cooling) / chains]
5:     return graphs, initial_temperatures, cooling_rates
6:end procedure
Algorithm 6 Perform One Step
1:procedure PerformOneStep(graphs, temperatures, cooling_rates)
2:     λ\lambda_list = [][]
3:     for k in 1: length(graphs) do
4:         G0=G0=graphs[k][k]
5:         τ0\tau 0 = temperatures[k][k]
6:         TT_decay = cooling_rates[k][k]
7:         G1G1, λ1\lambda 1 τ1\tau 1 = PartialAnneal(G0G0, T=τ0T=\tau 0, cooling_rate = TT_decay, switches =k=k)
8:         λ\lambda_list λ\leftarrow\lambda_list +λ1+\lambda 1
9:         temperatures[k][k] = τ1\tau 1
10:         graphs[k]=G1[k]=G1
11:     end for
12:     ReverseRankOrder = argsort(λ(\lambda_list))
13:     graphs = graphs[ReverseRankOrder]
14:     temperatures = temperatures[ReverseRankOrder] \triangleright Now randomly swap a pair of graphs
15:     if length(graphs) >2>2 then
16:         randomLocations = sampleFrom([1:length(graphs)], number = 2, without replacement)
17:         swap(graphs[randomLocations[1]],graphs[randomLocations[2]])
18:     end if
19:     return graphs, temperatures, minimum(λ\lambda_list)
20:end procedure
Algorithm 7 Coupled Annealing
1:procedure CoupledAnnealing(vertices, degree, chains, min_cooling, max_cooling, TT_min)
2:     graphs, tautaus, cooling_rates = DefineCoupling(vertices, degree, chains, min_cooling, max_cooling)
3:     best_λ\lambda = computeSecondEigenvalue(graphs[1])
4:     best_GG = graphs[1]
5:     while maximum(τ\taus) >T>T_min do
6:         graphs, τ\taus, current_λ\lambda = performOneStep(graphs, τ\taus, cooling_rates)
7:         if current_λ<\lambda< best_λ\lambda then
8:              best_λ=\lambda= current_λ\lambda
9:              best_GG = graphs[1]
10:         end if
11:     end while
12:     return best_GG, best_λ\lambda
13:end procedure

References

  • [A1] Alexander, C., A Note on Consistent Rotation Maps of Graph Cartesian Products, arXiv:2104.01472, 2021
  • [A2] Alexander, C., Consistent Rotation Maps Induce a Unitary Shift in Discrete Time Quantum Walks,arXiv:2104.05884, 2021
  • [AKS] Andova, V., Kardoš,F., Škrekovski, Fullerene Graphs and Some Relevant Graph Invariants,Mathematical Chemistry Monographs, 978-86-6009-027-2, hal-00994783, 2014
  • [AMN] Alexander, C., Mann, D., Neninger, T. The Limiting Eigenvalue Distribution of Iterated kk-regular Graph Cylinders arxiv:1807.07624
  • [BB] Béla Bollobás, Random Graphs, 2nd edition, Cambridge University Press, section 2.4: Random Regular Graphs, 2001
  • [EHLMP] Eisentrager, K., Hallgren, S., Lauter, K., Morrison, T., Petit, C., Supersingular Isogeny Graphs and Endomorphosm Rings, Advances in Cryptography, 37th Annual INternational Conference on the Theory and Applications of Cryptography Techniques, doi:10.1007/978-3-319-7837207_11, 2018
  • [ER] Erd os, P., Rényi, A., Asymmetric Graphs, Acta Mathematica Scientiarum Hungaricae 14, doi:10.1007/BF01895716, 1963
  • [F] Friedman, Joel (2003). ”Relative expanders or weakly relatively Ramanujan graphs”. Duke Math. J. 118 (1): 19–35. doi:10.1215/S0012-7094-03-11812-8. MR 1978881.
  • [GG] Gabber, O’, Galil, Z., Explicit Constructions of Linear Size Superconcentrators .Journal of Computer and System Science,Vol.22, 1981.
  • [LPS] Lubotzky, A., Phillips, R., Sarnak, P. ”Ramanujan graphs”. Combinatorica. 8 (3): 261–277. doi:10.1007/BF02126799, 1988
  • [Mar] Margulius, G.A.Margulis. Explicit Construction of Concentrators. Prob.Per.Infor., Vol.9(4),1973
  • [Mor] Morgenstern, M. Existence and Explicit Constructions of q+1q+1 Regular Ramanujan Graphs for Every Prime Power qq, Journal of Combinatorial Theory, Series B doi:10.1006/jctb.1994.1054, 1994
  • [MPS] Marcus,A., Spielman,D., Srinivasta, N., Interlacing Families I: Bipartite Ramanujan Graphs of All Degrees Foundations of Computer Science, 2013
  • [N] Nilli, A. (1991), ”On the second eigenvalue of a graph”, Discrete Mathematics, 91 (2): 207–210, doi:10.1016/0012-365X(91)90112-F, MR 1124768
  • [Pa] Paley, R. On Orthogonal Matrices, Journal of Mathematical Physics 12, 1933
  • [Pi] Pizer, A., Ramanujan Graphs and Hecke Operators, Bulletin of the American Mathematical Society, New Series 23 doi:10.1090/S0273-0979-1990-15918, 1990
  • [OEIS1] Number of regular graphs with nn unlabeled nodes. (Formerly M0303) http://oeis.org/A005176
  • [OEIS2] Number of connected regular graphs with nn nodes. (Formerly M0303) http://oeis.org/A005177
  • [W] N. Wormald, ”Models of Random Regular Graphs,” in Surveys in Combinatorics, Cambridge University Press (1999), pp 239-298
  • [MNL] B. Mau, M. Newton, B. Larget, Bayesian Phylogenetic Inference via Markov Chain Monte Carlo Methods Biometrics. 55 (1): 1–12.,1999
  • [MW] B. McKay and N. Wormald, ”Uniform Generation of Random Regular Graphs of Moderate Degree,” Journal of Algorithms, Vol. 11 (1990), pp 52-67
  • [RVW] Reingold, O., Vadhan, S., Widgerson, A.Entropy Waves, the Zig-Zag Product, and New Constant-Degree Expanders and Extractors, 41st Annual Symposium on Foundations of COmputer Science, arXiv:math/0406038, doi:10.1109/SFCS.2000.892006, 2000
  • [W1] The Alon-Bopanna Bound, https://en.wikipedia.org/wiki/Alon-Boppana_bound
  • [W2] Random Regular Graphs https://en.wikipedia.org/wiki/Random_regular_graph#cite_note-5
  • [W3] Ramanujan Graph https://en.wikipedia.org/wiki/Ramanujan_graph