Next Article in Journal
Advances in General Topology and Its Application
Next Article in Special Issue
The Recursive Structures of Manin Symbols over Q, Cusps and Elliptic Points on X0 (N)
Previous Article in Journal
Neutrosophic Mean Estimation of Sensitive and Non-Sensitive Variables with Robust Hartley–Ross-Type Estimators
Previous Article in Special Issue
Ricci Curvature on Birth-Death Processes
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Bakry–Émery Curvature Sharpness and Curvature Flow in Finite Weighted Graphs: Implementation

1
Department of Mathematics, The University of Manchester, Manchester M13 9PL, UK
2
Yau Mathematical Sciences Center, Tsinghua University, Beijing 100190, China
3
School of Mathematical Sciences and CAS Wu Wen-Tsun Key Laboratory of Mathematics, University of Science and Technology of China, Hefei 230026, China
4
Max Planck Institute for Mathematics in the Sciences, 04103 Leipzig, Germany
5
Department of Mathematical Sciences, Durham University, Durham DH1 3LE, UK
*
Author to whom correspondence should be addressed.
Axioms 2023, 12(6), 577; https://doi.org/10.3390/axioms12060577
Submission received: 19 April 2023 / Revised: 3 June 2023 / Accepted: 7 June 2023 / Published: 11 June 2023
(This article belongs to the Special Issue Discrete Curvatures and Laplacians)

Abstract

:
In this paper, we discuss the implementation of a curvature flow on weighted graphs based on the Bakry–Émery calculus. This flow can be adapted to preserve the Markovian property and its limits as time goes to infinity turn out to be curvature sharp weighted graphs. After reviewing some of the main results of the corresponding paper concerned with the theoretical aspects, we present various examples (random graphs, paths, cycles, complete graphs, wedge sums and Cartesian products of complete graphs, and hypercubes) and exhibit various properties of this flow. One particular aspect of our investigations is asymptotic stability and instability of curvature flow equilibria. The paper ends with a description of the Python functions and routines freely available in an ancillary file on arXiv or via github. We hope that the explanations of the Python implementation via examples will help users to carry out their own curvature flow experiments.
MSC:
05C21; 05C50; 51K10; 53C21; 53E20

1. Introduction

This paper is concerned with computational aspects of a curvature flow on weighted graphs based on the Bakry–Émery calculus. This curvature flow was originally introduced in our paper [1]. The current paper focuses on properties for various concrete examples of graphs as well as stability investigations of the flow limits. Many observations in this paper are gained with the help of our curvature flow software, which is freely available as an ancillary file of [2] or via github at https://github.com/georgestagg/graph-curvature-server (accessed on 6 June 2023). A summary of our findings is presented in Section 4.
A weighted graph in this paper is a finite simple mixed combinatorial graph G = ( V , E ) with vertex set V and edge set E = E 1 E 2 of one- and two-sided edges, together with a weighting scheme of transition rates p x y 0 for x , y V (which can be represented by a generally non-symmetric matrix P after an enumeration of the vertices). Transition rates p x y can only be positive if x = y or if there is a one- or two-sided edge from x to y. One-sided edges are denoted by ordered pairs ( x , y ) E 1 V 2 , and two-sided edges are denoted by sets { x , y } E 2 . One- or two-sided edges ( x , y ) E 1 or { x , y } E 2 with vanishing transition rates p x y = 0 are called degenerate and a weighted graph ( G , P ) is called non-degenerate if it does not have degenerate edges. A weighted graph ( G , P ) is called Markovian, if we have y V p x y = 1 for all x V . In this case, P is a stochastic matrix and we can view the transition rates p x y as transition probabilities of a lazy random walk (with non-zero laziness if there exists a vertex x V with p x x > 0 ). Our curvature flow does not affect the underlying combinatorial graph G, but it changes the weighting scheme. We will focus on a version of our flow that preserves the Markovian property. In other words, starting with an initial Markovian weighted graph ( G , P 0 ) , this flow will provide a family of Markovian weighting schemes { P ( t ) } t 0 with P ( 0 ) = P 0 , depending on the continuous time parameter t.
Before we introduce our curvature flow, we need to briefly discuss the relevant Bakry–Émery curvature background. This curvature notion is based on the weighted Laplacian Δ = Δ P , acting on functions f : V R as follows:
Δ P f ( x ) = y V p x y ( f ( y ) f ( x ) ) .
The Laplacian gives rise to the following symmetric bilinear “carré du champ operators” Γ and Γ 2 :
2 Γ ( f , g ) = Δ ( f g ) f Δ g g Δ f , 2 Γ 2 ( f , g ) = Δ Γ ( f , g ) Γ ( f , Δ g ) Γ ( g , Δ f ) .

1.1. Bakry–Émery Curvature and Curvature Sharpness

Bakry–Émery curvature depends on a dimension parameter N and is well-defined at every vertex x V that is not isolated, that is, there exists another vertex y V with p x y > 0 . For isolated vertices, there is some ambiguity on how to define their curvature, and we decided to assign to such a vertex the curvature value 0. (Another natural choice of curvature for an isolated vertex x V would be K N ( x ) = for all N ( 0 , ] . An argument for that choice is that an isolated vertex can be viewed as a discrete analogue of a limit of round spheres with radii shrinking to 0, whose curvatures would diverge to infinity.) The definition of Bakry–Émery curvature reads as follows:
Definition 1
(Bakry–Émery curvature). The Bakry–Émery curvature of a non-isolated vertex x V for a fixed dimension N ( 0 , ] is the supremum of all values K R , satisfying the curvature-dimension inequality
Γ 2 ( f ) ( x ) 1 N ( Δ f ( x ) ) 2 + K Γ ( f ) ( x )
for all functions f : V R . We use the simplified notation Γ ( f ) = Γ ( f , f ) and Γ 2 ( f ) = Γ 2 ( f , f ) . We denote the curvature at x V by K N ( x ) = K P , N ( x ) . If  x V is isolated, that is, we have p x y = 0 for all y V \ { x } , we set K N ( x ) = K P , N ( x ) = 0 for all N ( 0 , ] .
This curvature notion is motivated by Bochner’s identity (see, e.g., [3] (Prop. 4.15)), a fundamental pointwise formula in the smooth setting of n-dimensional Riemannian manifolds involving gradients, Laplacians, Hessians, and Ricci curvature. It was introduced for the smooth setting in [4]. The curvature was then reintroduced several times in the setting of graphs, see [5,6,7]. For further research about Bakry–Émery curvature on finite graphs, see, e.g., [8,9,10,11,12,13,14,15,16,17,18,19].
By the definition, the inequality
Γ 2 ( f ) ( x ) 1 N ( Δ f ( x ) ) 2 + K N ( x ) Γ ( f ) ( x )
holds for every function f, and therefore, also holds for the combinatorial distance function d ( x , · ) . Here, d ( x , y ) is the length of a shortest directed path from x to y (if there is no such path, we set d ( x , y ) = ). If we have equality at x in (2) for this particular function f = d ( x , · ) , we say that the vertex x V is N-curvature sharp. Curvature sharpness will be particularly important in our considerations. Curvature sharpness was originally introduced in [20] (Definition 1.4). The (equivalent) definition given in this paper is inspired by [21] (Proof of Theorem 1.2). For more details about relations between different curvature sharpness definitions see Section 3 of [1].
Definition 2
(Curvature sharpness). Let ( G , P ) be a weighted graph and N ( 0 , ] . A vertex x V is called N-curvature sharp if we have
Γ 2 ( f ) ( x ) = 1 N ( Δ f ( x ) ) 2 + K N ( x ) Γ ( f ) ( x )
for the distance function f = d ( x , · ) . Moreover, a vertex x V is curvature sharp if it is curvature sharp for some dimension N ( 0 , ] . A weighted graph ( G , P ) is called curvature sharp, if every vertex of G is curvature sharp.
Note that each function f : V R with Γ ( f ) ( x ) 0 gives rise to an upper curvature bound K P , N f ( x ) via the inequality (2). Namely, we have
K N ( x ) K P , N f ( x ) : = 1 Γ ( f ) ( x ) Γ 2 ( f ) ( x ) 1 N ( Δ f ( x ) ) 2 .
A vertex x V is therefore N-curvature sharp if its Bakry–Émery curvature K N ( x ) agrees with the specific upper curvature bound K P , N d ( x , · ) ( x ) . We would also like to mention the following monotonicity property of curvature sharpness: If x V is N-curvature sharp that this vertex is also curvature sharp for any dimension N (see [1] (Prop. 3.1)).
In the next subsection, we present an important reformulation of Bakry–Émery curvature at x V using a specific matrix Q ( x ) , which will be important in the definition of the curvature flow.

1.2. Reformulation of Curvature via a Schur Complement

The combinatorial distance function allows us to define distance spheres and distance balls,
S r ( x ) = { z V : d ( x , z ) = r } , B r ( x ) = { z V : d ( x , z ) r } .
Let x V be a non-isolated vertex. It turns out that the Bakry–Émery curvature K N ( x ) is determined locally, that is, can be derived solely from the information about the 2-ball
B 2 ( x ) = { x } S 1 ( x ) S 2 ( x ) .
More precisely, denoting S 1 ( x ) = { y 1 , , y m } and S 2 ( x ) = { z 1 , , z n } , there exist a column vector Δ ( x ) and a symmetric matrix Γ ( x ) of size m and a symmetric matrix Γ 2 ( x ) of size m + n such that, for functions f , g : V R with f ( x ) = g ( x ) = 0 ,
Δ f ( x ) = Δ ( x ) f m , Γ ( f , g ) ( x ) = f m Γ ( x ) g m , Γ 2 ( f , g ) ( x ) = f m + n Γ 2 ( x ) g m + n ,
where f m = ( f ( y 1 ) , , f ( y m ) ) and
f m + n = ( f ( y 1 ) , , f ( y m ) , f ( z 1 ) , , f ( z n ) ) ,
and g n , g m + n , accordingly. Using the ( n + m ) -block decomposition
Γ 2 ( x ) = Γ 2 ( x ) S 1 Γ 2 ( x ) S 1 , S 2 Γ 2 ( x ) S 2 , S 1 Γ 2 ( x ) S 2
and employing the Schur complement
Q ( x ) = Γ 2 ( x ) S 1 Γ 2 ( x ) S 1 , S 2 Γ 2 ( x ) S 2 Γ 2 ( x ) S 2 , S 1
for matrices Γ 2 ( x ) with positive semidefinite Γ 2 ( x ) S 2 -blocks with A the pseudoinverse of A (for a given matrix A R N × M , its pseudoinverse A R M × N is defined by the following conditions: A A A = A , A A A = A , and  A A R N × N and A A R M × M are both symmetric matrices), we can reformulate Bakry–Émery curvature at x V for dimension N ( 0 , ] as follows (see Section 2.4 in [1]):
Let x V be a non-isolated vertex. K N ( x ) is then the maximum of all K R such that
Q ( x ) 1 N Δ ( x ) Δ ( x ) K Γ ( x ) 0 ,
where A B means that A B is positive semidefinite.
This curvature translation was motivated originally by the aim to reformulate the computation of Bakry–Émery curvature as an eigenvalue problem (see [22,23,24]).
The symmetric matrix Q ( x ) of a non-isolated vertex x V is of size m and is—in the non-degenerate case—closely related to another symmetric matrix A ( x ) , which, in turn, can be viewed as a discrete counterpart of the Ricci curvature tensor at a point x M of a Riemannian manifold ( M , g ) (see formula (1.2) and Section 7 in [24]). In the case of a Markovian weighted graph, curvature sharpness at a vertex x V can also be alternatively expressed with the help of the matrix Q ( x ) as follows.
Theorem 1
(see Theorem 1.3 in [1]). Let ( G , P ) be a Markovian weighted graph and x V be a non-isolated vertex with S 1 ( x ) = { y 1 , , y m } . Then, the following statements are equivalent:
(1) 
x is curvature sharp;
(2) 
x is curvature sharp for dimension N = 2 ;
(3) 
We have
Q ( x ) 1 m = 1 2 K P , d ( x , · ) ( x ) p x ,
where p x = ( p x y 1 , , p x y m ) and 1 m is the all-one column vector of size m.
Note that the term K d ( x , · ) ( x ) in (5) is the upper curvature bound introduced in (4) (in the special case N = ), that is,
K P , d ( x , · ) ( x ) = Γ 2 ( d ( x , · ) ) ( x ) Γ ( d ( x , · ) ) ( x ) .

1.3. Curvature Flow

Let ( G , P 0 ) be a fixed initial weighted graph with N = | V | . For every non-isolated vertex x V , the size of the corresponding symmetric matrix Q ( x ) agrees with the degree of the vertex x, that is, the number of one- and two-sided edges emanating from x, and the entries of Q ( x ) are determined by the transition rates of edges of the 2-ball B 2 ( x ) . Our curvature flow associates to this initial data a smooth matrix-valued function P : [ 0 , ) R N × N with P ( 0 ) = P 0 . The corresponding symmetric Q-matrices at time t [ 0 , ) depend on the weighting schemes P ( t ) , and we denote them henceforth by Q x ( t ) for all x V . Our curvature flow is now defined as follows.
Definition 3
(Curvature flow). Let ( G , P 0 ) be a finite weighted graph. The associated curvature flow is given by the following differential equations for all non-isolated vertices x V and all t 0 :
p x x ( t ) = 0 ,
p x ( t ) = 4 Q x ( t ) 1 m + 2 C x ( t ) p x ( t ) ,
where S 1 ( x ) = { y 1 , , y m } and
p x ( t ) = ( p x y 1 ( t ) , , p x y m ( t ) ) .
In the case of an isolated vertex x V , its curvature flow is given by the simple equation p x x ( t ) = 0 , that is p x x ( t ) is a constant function in t.
We note that the curvature flow Equation (6) guarantees that the diagonal entries of the weighting scheme do not change. The functions C x ( t ) in the curvature flow Equation (7) play the role of a normalization since, for the choice C x 0 , various transition rates will be unbounded as the time parameter t 0 increases. Note that in the smooth case of closed Riemannian manifolds ( M , g 0 ) , a suitable normalization leads to volume perseverance of ( M , g t ) under the Ricci curvature flow. Our aim is to preserve the Markovian property, and it was shown in our first paper that the curvature flow preserves this property if we choose the normalization functions
C x ( t ) = K P ( t ) , d ( x , · ) ( x ) .
Let us give the explicit formulas for the curvature flow Equation (7) for this particular choice of C x ( t ) , where y , y , y always represent vertices in S 1 ( x ) (see [1] (Formula (66)):
p x y ( t ) = p x y ( t ) 4 p y x ( t ) 2 y y p y y ( t ) + 4 D x y p x y ( t ) p y x ( t ) + 1 D x y , y p x y ( t ) p y y ( t ) p y y ( t ) + y y p x y ( t ) p y y ( t ) ( ) .
Here, we use D x = y p x y ( t ) = 1 p x x ( t ) . Note that (6) guarantees that D x 1 is independent of the time parameter t.
The following theorem collects some fundamental properties of the normalized curvature flow.
Theorem 2
(see Theorem 1.5 and Prop. 1.6 in [1]). Let ( G , P 0 ) be a Markovian weighted graph. Then, the curvature flow ( G , P ( t ) ) t 0 associated with ( G , P 0 ) with normalization (8) is well defined for all t 0 and preserves the Markovian property. If ( G , P 0 ) is non-degenerate, then ( G , P ( t ) ) is also non-degenerate for all t 0 . Moreover, if the flow converges for t to P = lim t P ( t ) , then the weighted graph ( G , P ) is curvature sharp.
We would like to emphasize that, even in the Markovian case, a flow limit P = lim t P ( t ) of a non-degenerate weighted graph ( G , P 0 ) is in most cases no longer non-degenerate, despite the fact that all weighting schemes P ( t ) for finite t 0 are non-degenerate. In other words, some transition probabilities converge to zero under our normalized curvature flow, as time tends to infinity.

1.4. Other Discrete Curvature Flows

We presented already other curvature flows in [1] and briefly recall them here for the readers’ convenience.
To our knowledge, the curvature flow on discrete Markov chains in this paper is the first one that is based on Bakry–Émery curvature. Other curvature flow investigations for discrete Ricci-type curvature are the following:
  • Combinatorial Ricci flows on surfaces [25];
  • Ollivier Ricci flow ([26,27], Problem N) and [28,29];
  • Forman-Ricci curvature flow [30,31];
  • Stochastic Ricci flow for balanced Forman curvature [32,33];
  • Entropic super Ricci flow [34,35];
  • Resistance curvature flow [36].

2. Curvature Flow Examples

In this section, we investigate normalized curvature flows on some unmixed combinatorial graphs G = ( V , E ) . By unmixed we mean that G does not have one-sided edges. We assume in all examples and statements in this section that our graphs G = ( V , E ) are finite, simple, unmixed, and connected and that our initial weighting schemes P 0 = P ( 0 ) = ( p x y ( 0 ) ) x , y V are non-degenerate Markovian without laziness (even if we do not mention this). Curvature flow limits ( G , P ) with P = lim t P ( t ) are necessarily curvature sharp by Theorem 2 above. We do not know of any initial Markovian weighted graph that does not converge as t . Moreover, we know that every finite connected graph with at least two vertices admits many curvature sharp Markovian weighting schemes without laziness (see [1] (Theorem 1.10)). These facts give rise to the following conjecture.
Conjecture 1
(see Conjecture 1.7 in [1]). The curvature flow ( G , P ( t ) ) t 0 with normalization (8) converges for any initial condition ( G , P 0 ) as t .
Let us now address some practical aspects of the curvature flow implementation. The Python code is freely available as an ancillary file of [2] or via github at https://github.com/georgestagg/graph-curvature-server (accessed on 6 June 2023). The solution of the curvature flow is computed numerically by the Runge–Kutta (RK4) method, which is based on a time discretization with time increments d t > 0 . In the following examples, we choose the step sizes d t = 0.1 and d t = 0.3 . In order to distinguish between the theoretical curvature flow and its implementation, we refer to the latter as the numerical curvature flow. Since a numerical curvature flow cannot run forever, a suitable numerical convergence criterion needs to be introduced. Our convergence criterion is based on the parameter lim tolerance > 0 . We say that a numerical curvature flow solution ( P ( t ) ) t 0 has converged numerically at time t (with respect to the parameter lim tolerance ) if all the entries of P ( t ) differ from the corresponding entries of P ( t + 10 ) and P ( t + 20 ) by less than lim tolerance . The numerical flow limit is then defined to be P ( t ) . In all the following examples, we set lim tolerance = 0.001 .
In this section, we are particularly interested in numerical flow limits that are not numerically totally degenerate. An unmixed weighted graph ( G , P ) is called numerically totally degenerate if there are no edges with numerical non-zero transition rates in both directions, where we consider a transition rate p x y as numerically non-zero (with respect to a parameter threshold > 0 ), if and only if p x y threshold . In all the following examples we set threshold = 0.001 .

2.1. Random Graphs

In this subsection, we investigate the numerical curvature flow for random weighted graphs ( G , P 0 ) with vertex set V. The relevance of this example is that it provides insights into flow limits for general graphs without any special symmetries. At the same time, readers are familiarized with our software tool, enabling them to run examples of their own interest. The edge set E of the random graph G is generated by an Erdös-Rényi process [37], that is, any pair of vertices is independently and randomly connected by a two-sided edge with a probability p [ 0 , 1 ] . Similarly, we choose a random initial weighting scheme P 0 with the property that all non-zero transition rates p v v ( 0 ) lie in the interval [ threshold , 1 ] , for some positive parameter threshold > 0 . We are interested in the properties of the numerical flow limits of these graphs. If the parameter p > 0 in the Erdös-Rényi process is too small, these flow limits are always numerically totally degenerate. A reasonable choice to obtain not numerically totally degenerate flow limits for such random graphs with, say, 10 vertices in roughly half of the cases, is p = 0.7 .
Example 1
(A random graph with 10 vertices). Let ( G , P 0 ) be the unmixed weighted Markovian graph with vertex set V = { v 0 , , v 9 } and
P 0 = 0 0.1 0.08 0.17 0 0.28 0.21 0.08 0 0.08 0.08 0 0 0.16 0 0.2 0.07 0.3 0.04 0.15 0.27 0 0 0 0 0 0.3 0 0 0.43 0.02 0.19 0 0 0.17 0.17 0.11 0.34 0 0 0 0 0 1 0 0 0 0 0 0 0.04 0.21 0 0.41 0 0 0.34 0 0 0 0.06 0.29 0.14 0.12 0 0.3 0 0.09 0 0 0.08 0.31 0 0.19 0 0 0.23 0 0.19 0 0 0.13 0 0 0 0 0 0.25 0 0.62 0.1 0.33 0.38 0 0 0 0 0 0.19 0
This randomly generated initial graph is illustrated on the left-hand side of Figure 1. The numerical curvature flow of ( G , P 0 ) has numerical convergence time t max = 20.7 (with respect to lim tolerance = 0.001 ). The numerical flow limit ( G , P ( t max ) ) is presented on the right hand side of Figure 1. Let us briefly explain the illustration of the edges of this flow limit: Edges with numerical non-zero transition rates in both directions are displayed in green. Edges with only one-sided numerical non-zero transition rates are displayed as dashed red lines with arrows. Edges whose transition rates shrink in both directions numerically to zero under the curvature flow are displayed as dotted black lines. The corresponding non-zero transition rates are written along these edges. The vertices of the green edges of the flow limit in Figure 1 are given by
W = { v 0 , v 1 , v 3 , v 5 , v 6 , v 7 } .
Since there are no numerical non-zero transition rates from these vertices to the other vertices v 2 , v 4 , v 8 , v 9 V \ W , the vertex set W together with the green edges and their transition rates represent a highly connected non-degenerate Markovian weighted subgraph ( G W , P W ) . The combinatorial graph G W with vertex set W can be viewed as a double cone over the complete graph K 4 of the four vertices v 0 , v 1 , v 3 , v 6 with the vertices v 5 , v 7 as its cone tips. The transition rates of the weighting scheme P W towards all vertices in K 4 are 0.25 = 1 / 4 , all transition rates towards v 5 are x = 0.05 and all transition rates towards v 7 are y = 0.2 . Note that such a weighted double cone over K 4 with these transition rates for any choice of x , y > 0 satisfying x + y = 1 / 4 is curvature sharp (this follows readily from the geometric criterion in [1] (Theorem 3.15), since the weighting scheme is volume homogeneous in all vertices and reversible with π ( v 5 ) = 4 x / 5 , π ( v 7 ) = 4 y / 5 and π | K 4 1 / 5 ). Therefore, not only is the flow limit itself curvature sharp in Theorem 2 but also the highly connected non-degenerate weighted subgraph ( G W , P W ) .
Figure 2 presents the transition rates of the vertices v 3 , v 7 under the curvature flow as functions over the interval [ 0 , t max ] . While most transition rates converge to strictly positive limits, the transition rates p v 3 v 4 ( t ) and p v 8 v 9 ( t ) shrink to zero. Consequently, the corresponding edges on the right-hand side of Figure 1 are represented by a dashed red line and a black dotted line, respectively.
Let us finally consider the curvatures t K P ( t ) , N ( v j ) of the vertices v j under the curvature flow. We focus primarily on the vertices v 1 and v 9 and the dimension parameter N = . Figure 3 presents the ∞-curvature (in blue) and upper curvature bound K P ( t ) , d ( v , · ) ( v ) (in orange) of v { v 1 , v 9 } as functions over the interval [ 0 , t max ] . Note that the absence of laziness implies that the upper curvature bounds K P ( t ) , d ( v , · ) ( v ) are all 0 (see [1] (19)). For both vertices, the curvature and upper curvature bound functions are numerically asymptotic as t t max , indicating that v 1 and v 9 of the flow limit are ∞-curvature sharp. (In fact, all vertices in this example are ∞-curvature sharp with respect to the flow limit.) This is not always the case, but Theorem 1 confirms that all vertices of a flow limit ( G , P ) are at least N-curvature sharp for dimension N = 2 . Moreover, the initial and final ∞-curvatures of all vertices under the curvature flow are presented in Table 1. The final curvatures of all vertices in K 4 assume the highest values 0.875 , followed by the final curvature values 0.773 and 0.476 of the vertices v 7 and v 5 , respectively. All other vertices in V \ V 0 have much lower final curvatures with values 0.125 .
Example 1 and its illustrations were generated by the following code. Axioms 12 00577 i001
Let us explain the commands of this program in detail. After initializing various parameters in lines 1–11, a random graph G = ( V , E ) is generated in line 13 via an Erdös-Renyi process with probability p = 0.7 . A corresponding random non-degenerate Markovian weighting scheme without laziness is generated in line 14, with each non-zero transition rate satisfying p v v ( 0 ) [ threshold , 1 ] . The numerical convergence time t max 0 is determined in lines 16–18. In most cases, the convergence time does not exceed 100. (If convergence is not achieved by t lim = 10000 , the curvature flow computation stops at that time and notifies the user.) The numerical curvature flow on the interval [ 0 , t max ] is solved again in line 21. Initial and final weighting schemes are displayed by the commands in lines 23 and 24, respectively, providing the illustrations given in Figure 1. The transition rates of the vertices v 3 and v 8 are displayed by the command in line 25, providing the illustrations given in Figure 2. The curvatures and upper curvature bounds at time steps j · k · t max d t , j = 0 , 1 , , are computed in lines 27 and 28, respectively, with the choice k = 1 . They are displayed for the vertices v 1 and v 9 via the command in line 29, providing the illustrations given in Figure 3.
When running this program, users may be faced with the following message:
‘norm_tolerance’ has been exceeded at one or more vertices, at time t = … Would you like to:
A = Stop calculation and return list of P-matrices so far
B = Apply manual normalization now, and apply it again when necessary without asking (you will still be notified when it is applied)
C = Apply manual normalization now, and ask again before reapplying it
Please enter A, B or C here:
The reason behind this message is the following. The computation of the numerical curvature flow is based on a time discretization. Therefore, the solution will increasingly depart from the Markovian property after each time increment d t = 0.1 . If the sum of entries of one of the rows of P ( t ) at time t differs from one by more than norm tolerance = 0.001 , the program informs the user that a normalization of the weighting scheme is needed for the continuation of the flow calculations. After choosing the option ‘B’, the program will continue with its flow calculations without further interruptions, and the user is simply notified about the times at which the program applies further artificial normalizations of the transition rates. The user can suppress this message entirely by changing line 2 of the program into “stoch_corr = True”, in which case the program applies stochastic corrections automatically, each time with the message
Transition rates have been artificially normalized at time t = …
The numerical observations of Example 1 suggest that similar properties may also hold in general in the theoretical setting. Firstly, we call an edge { x , y } E in an unmixed weighted graph ( G , P ) non-degenerate if p x y , p y x > 0 . An unmixed weighted graph ( G , P ) is called totally degenerate if it does not have any non-degenerate edges. Secondly, we denote the vertices of all non-degenerate edges of a flow limit ( G , P ) by W V , and  G W denotes the subgraph of G consisting of the vertices W and all non-degenerate edges of ( G , P ) . Moreover, P W denotes the restriction of the weighting scheme P to the vertex set W. We call G W the non-degenerate subgraph of ( G , P ) and we conjecture the following:
Conjecture 2.
If the normalized curvature flow of a nondegenerate unmixed Markovian weighted graph ( G , P 0 ) converges to a not totally degenerate limit ( G , P ) , then the non-degenerate subgraph G W coincides with the induced subgraph (of G) of the subset W V and all transition rates from W to V \ W are zero. ( G W , P W ) is a non-degenerate Markovian weighted graph, which is itself curvature sharp.
Figuratively speaking, the curvature flow converges towards the non-degenerate Markovian subgraph ( G W , P W ) consisting of highly connected components. Moreover, each vertex of V \ W is usually connected to the set W by a sequence of edges with one-sided non-zero transition rates pointing towards the set W, and we generally expect that the -curvature values of the vertex set W in ( G , P ) are significantly larger than the -curvature values of the set V \ W in ( G , P ) .
In Example 1, the weighted Markovian subgraph ( G W , P W ) has only one connected component, but we will see in the next subsection in the case of paths and cycles that ( G W , P W ) may be composed of more than just one connected component.

2.2. Paths and Cycles

Paths and cycles are the easiest examples of graph families and are therefore natural examples to study. We will see that both families have flow limits of very similar types. Let G = ( V , E ) be a path of length N 2 , that is, V = { v 0 , , v N 1 } with a two-sided edge between v i and v j if and only if | i j | = 1 . If  N = 2 , G is a trivial case of a star graph and any Markovian weighting scheme satisfying p 01 = p 21 = 1 and p 10 + p 12 = 1 is curvature sharp (see [1], Example 4.3). For that reason, we consider only paths of lengths N 3 . A cycle of length 3 is the complete graph K 3 , and a full list of all curvature sharp weighting schemes was given in [1], Prop. 1.9, so we consider only cycles of length N 4 . The following example provides some insights into some features of curvature flow limits of weighted paths and cycles.
Example 2
(A path and a cycle of length 12). Figure 4 presents numerical curvature flow limits of a Markovian weighted path with vertices 12 vertices (left-hand side) and of a weighted cycle with 12 vertices (right-hand side). The non-zero transition rates of the initial weighting scheme P 0 = ( p j i ) 0 i , j 11 for the path limit in Figure 4 were chosen as follows:
p 0 , 1 p 1 , 2 p 2 , 3 p 3 , 4 p 4 , 5 p 5 , 6 p 6 , 7 p 7 , 8 p 8 , 9 p 9 , 10 p 10 , 11
1 0.25 0.72 0.46 0.23 019 0.84 0.71 0.62 0.9 0.55
p 1 , 0 p 2 , 1 p 3 , 2 p 4 , 3 p 5 , 4 p 6 , 5 p 7 , 6 p 8 , 7 p 9 , 8 p 10 , 9 p 11 , 10
0.75 0.28 0.54 0.77 0.81 0.16 0.29 0.38 0.1 0.45 1
The non-degenerate subgraph G W of the path limit consists of W = { v 1 , v 2 , v 3 , v 9 , v 10 , v 11 } as its vertex set together with the four green edges. Moreover, G W has two paths of length 2 as its connected components. For each vertex v V \ W , there exists a directed path to one of the components of G W via a sequence of one-sided transition rates. For example, the vertices v 5 , v 6 , v 7 , v 8 are connected to the vertex v 9 W via such one-sided paths, and v 4 , v 5 are connected to the vertex v 3 via such one-sided paths.
The cycle limit on the right-hand side of Figure 4 is totally degenerate with no green edges, and all one-sided non-zero transition rates are oriented in a clockwise direction. The experiments show that Figure 4 exhibits generic limit properties: flow limits of weighted paths are never totally degenerate and their non-degenerate subgraphs G W consist of disjoint paths of length 2 . Such types of limits also appear in the case of weighted cycles. However, in contrast to the path case, sometimes a cycle limit is totally degenerate with all its one-sided transition rates oriented either clockwise or anti-clockwise. The code for running the curvature flow for paths and cycles of length n reads as follows:
Axioms 12 00577 i002
Before we provide the following result about path limits, let us first introduce the notion of a two-sided degenerate edge of weighted graphs ( G , P ) : An edge { x , y } E of G is called two-sided degenerate if its transition rates vanish in both directions, that is, p x y = p y x = 0 . Similarly, an edge is called numerically two-sided degenerate, if its transition rates in both directions are < threshold . Such edges are displayed in the routine display_weighted_graph as dotted black lines (see, e.g., the edges { v 2 , v 9 } and { v 8 , v 9 } on the right hand side of Figure 1).
Proposition 1
(Flow limits of paths of length 3 ). Let ( G , P 0 ) be a weighted path of length N 3 with consecutive vertices v 0 , , v N 1 . Let P ( t ) be its corresponding curvature flow converging to a limit P = lim t P ( t ) , such that ( G , P ) does not have two-sided degenerate edges. Then, this limit is neither totally degenerate nor is it not non-degenerate (that is, it contains both green and dashed red edges). Moreover, the components of the non-degenerate subgraph G W are paths of lengths 2 , and they are separated from each other by at least two degenerate edges. If a component of G W is a path of length 1, that is, just one edge { v j , v j + 1 } , then we have p j , j + 1 = p j + 1 , j = 1 .
Proof. 
By the last statement of Theorem 2, we only need to prove these statements for curvature sharp weighting schemes P = ( p i j ) 0 i , j N of paths of length N 3 . Such weighting schemes can never be non-degenerate by [1] (Prop. 1.11).
For the proof that curvature sharp weighting schemes can never be totally degenerate, we note that we cannot have two consecutive degenerate edges { v j , v j + 1 } , { v j + 1 , v j + 2 } E with p j , j + 1 = 1 = p j + 2 , j + 1 (since this would imply p j + 1 , j = p j + 1 , j + 2 = 0 , contradicting to p j + 1 , j + p j + 1 , j + 2 = 1 ). Therefore, since p 01 = 1 , any totally degenerate weighting scheme would require p j , j + 1 = 1 for any j 0 , in particular, p N 2 , N 1 = 1 , but this contradicts the fact that we also have p N 1 , N 2 = 1 and that the edge { v N 1 , v N 2 } needs to be degenerate.
A curvature sharp weighting scheme cannot have more than two consecutive non-degenerate edges. This can be seen as follows: At any vertex v j with p j , j 1 , p j , j + 1 > 0 we must have p j 1 , j = p j + 1 , j . This follows from the arguments in the proof of [1] (Lemma 4.1) (namely, since the vertex v j is not contained in any triangle, we have p j 1 , j = p y + 1 , j = p j , j 1 p j 1 , j + p j , j + 1 p j + 1 , j .) If 0 < p j 1 , j = p j + 1 , j < 1 , we could iterate this argument backward and forward and would end up with the fact that all entries of the matrix P above the diagonal and below the diagonal would lie in ( 0 , 1 ) , which is a contradiction to p 01 = 1 . So, we must have p j 1 , j = p j + 1 , j { 0 , 1 } . Therefore, we cannot have two consecutive indices j { 0 , , N 1 } with 0 < p j 1 , j = p j + 1 , j < 1 , which would exist in the case of three consecutive non-degenerate edges. So, the components of G W are paths of length 2 .
Moreover, any gap between two consecutive non-degenerate edges must be at least two edges: this follows from the fact that if a non-degenerate edge { v j , v j + 1 } is followed by a degenerate edge { v j + 1 , v j + 2 } , then we must have p j + 1 , j + 2 = 0 : if we had p j + 1 , j + 2 > 0 , then we had p j + 1 , j , p j + 1 , j + 2 > 0 and, therefore, 0 < p j + 1 , j = p j + 2 , j + 1 and { v j + 1 , v j + 2 } would be non-degenerate, which is a contradiction. Similarly, if a degenerate edge { v k , v k + 1 } is followed by a non-degenerate edge { v k + 1 , v k + 2 } , we must have p k + 1 , k = 0 . Combining both facts implies that there cannot be a single degenerate edge separating two components of G W . These arguments also show that components of G W that are single edges { v j , v j + 1 } must satisfy p j , j + 1 = p j + 1 , j = 1 since the adjacent degenerate edges have one-sided transition rates pointing towards this component.    □
Similar arguments to the above can be used to prove that for cycles, the components of any flow limit of a weighted cycle are again paths of length 2 , unless the limit is non-degenerate. Such non-degenerate limits exist for cycles, namely the simple random walks, but experiments show that simple random walks are very unstable stationary solutions of the curvature flow. Small perturbations of simple random walks do not converge back to the simple random walk (unless our cycle is K 3 ) but converge usually to a degenerate limit. Finally, if a totally degenerate cycle limit does not have two-sided degenerate edges, then its transition rates must all be either oriented clockwise or anti-clockwise; otherwise, we would necessarily have a vertex with transition rates of both incident degenerate edges pointing towards this vertex. This would fail to satisfy the Markovian condition at this vertex.
Paths and cycles of length N 3 have the property that no edge is contained in a triangle. We would like to finish the section with a general statement about the curvature flow for edges not contained in triangles.
Proposition 2.
Let ( G , P 0 ) be a weighted Markovian graph without laziness and ( P ( t ) ) t 0 be its associated normalized curvature flow. If we have, for some t 0 0 and an edge e = { x , y } E , p x y ( t 0 ) = 0 and e is not contained in a triangle of G, then we have
p x y ( t ) = 0 for all t t 0 .
Proof. 
This proposition is an easy consequence of the flow Equation (9). Since we assume no laziness, we have p y y ( t ) = 0 , and since e is not contained in a triangle, the last term of (9), denoted by ( ) , is zero and the statement follows now from the uniqueness of the solution satisfying p x y ( t 0 ) = 0 .    □

2.3. Complete Graphs

Complete graphs are the natural choice for the study of the behavior of curvature flows of highly connected graphs. For these graphs, the simple random walks turn out to be the flow limits of non-degenerate initial weighting schemes. The simple random walk on any complete graph is a non-degenerate curvature sharp Markovian weighting scheme. Our experiments show that any non-degenerate initial weighting scheme P 0 on K n converges to the simple random walk, that is p j k = 1 n 1 . The following example shows that convergence to the simple random walk appears even if the initial weighting scheme is degenerate. This is not in contradiction to Proposition 2 since, in a complete graph K n , n 3 , every edge is contained in a triangle. Example 3 is the only exception in this section where we allow an initial weighting scheme to have degenerate edges.
Example 3
(A degenerate weighted complete graph with six vertices). Let ( G , P 0 ) be the complete weighted Markovian graph with vertex set V = { v 0 , , v 5 } and
P 0 = 0 0.2 0.1 0.2 0 0.5 0.1 0 0.3 0.25 0.25 0.1 0.2 0 0 0.3 0.15 0.35 0.3 0.5 0.1 0 0.1 0 0.2 0.3 0.3 0.2 0 0 0.6 0.1 0.1 0.2 0 0 ,
as illustrated in Figure 5. Note that the edges { v 0 , v 4 } , { v 1 , v 2 } , { v 3 , v 5 } and { v 4 , v 5 } of this initial weighting scheme are degenerate, with the latter being two-sided degenerate. The numerical curvature flow has numerical convergence time t max = 18.5 (with respect to lim tolerance = 0.001 ) with the simple random walk as its numerical flow limit. Figure 6 presents the transition rates of the vertices v 2 and v 5 . Of particular interesting are the functions p 2 , 1 ( t ) and p 5 , 4 ( t ) for t [ 0 , t max ] , since their initial values are zero.
Based on our experiments, we conjecture the following, which is a strengthening of [1] (Conjecture 1.8).
Conjecture 3
(Curvature flow of complete graphs). Let P 0 be a Markovian weighting scheme without laziness on a complete graph K n = ( V , E ) with n 2 such that, for every proper subset W V , there exist x , x W and y , y V \ W with p x y > 0 and p y x > 0 . Then, the curvature flow has a limit P , which is the simple random walk.

2.4. Wedge Sums of Complete Graphs

Let G 1 = ( V 1 , E 1 ) and G 2 = ( V 2 , E 2 ) be two combinatorial graphs and x 1 V 1 and x 2 V 2 . By merging the vertices x 1 and x 2 into one new vertex x, which inherits the incident edges of both vertices x 1 and x 2 , we obtain a new combinatorial graph in which we denote the wedge sum of G 1 and G 2 . In this subsection, we consider the flow limits of wedge sums of complete graphs. The study of these graphs leads to an interesting dynamical aspect of our curvature flow, namely that its limits concentrate on one of the components of these wedge sums.
Example 4
(A wedge sum of a K 4 , K 5 , K 2 , and K 3 ). We consider the curvature flow on the wedge sum G = ( V , E ) of complete graphs presented in Figure 7 with random initial weighting schemes P = P 0 . The adjacency matrix A of this graph is generated with our code in the following way:Axioms 12 00577 i003
Our experiments show that, depending on the initial weighting scheme P 0 , the curvature flow converges to a limit that is concentrated in one of the complete graphs. More precisely, the limit weighting scheme P represents a simple random walk on one of the complete graphs while, from all other vertices, there is a directed path of { 0 , 1 } transition rates towards this particular complete graph. Figure 8, Figure 9 and Figure 10 show the numerical curvature flow limits of various random initial weighting schemes. We carried out several runs of 100,000 numerical curvature flows with random initial weighting schemes to describe the limit behavior of these flows quantitatively. The results are presented in Table 2. While more than 80 % of limits concentrate on the largest clique K 5 , it is somewhat surprising that more limits concentrate on K 3 than on the larger subgraph K 4 . Not a single flow limit ended up concentrating on K 2 . The mean numerical convergence time is shortest for K 3 , followed by K 4 and K 5 (with respect to lim tolerance = 0.001 ). While most convergence times are below 100, there were maximal numerical convergence times well above 500.
The limit behavior described in the above example seems to be common for many wedge sums of complete graphs. It is, however, not always true that flow limits concentrate on just one of the constituents of a wedge sum. A path of length 2 can be viewed as a wedge sum of consecutive K 2 ’s, and we have seen in Section 2.2 that flow limits will concentrate on more than only one of these K 2 ’s (see left-hand side of Figure 4). Another special case of a wedge sum is a dumbbell which is our next example.
Example 5
(A symmetric weighted dumbbell). The weighted graph ( G , P 0 ) in this example is a wedge sum of a K 5 , K 2 and another K 5 , together with a simple random walk as initial weighting scheme (see line 4 in the code). This situation can be set up by the following code:Axioms 12 00577 i004
The numerical convergence time is 79 and the limit of the numerical curvature flow concentrates on the “bridge” K 2 between the two K 5 ’s, as illustrated in Figure 11. (To obtain the flow limit illustrated at the right-hand side of this figure, users should choose lim tolerance = 0.0001 .)
This limit could have been predicted assuming that the initial weighted graph symmetry across the “bridge” is preserved under the curvature flow and that the limit concentrates on only one of the complete graphs K 5 , K 2 , K 5 . If instead of the simple random walk, a random initial weighting scheme would have been chosen on the dumbbell G, the limit would have usually concentrated on one of the two K 5 ’s.

2.5. Cartesian Products of Complete Graphs

It is tempting to assume that simple random walks are always the preferred curvature flow limits in relation to complete graphs. However, this is not always the case as the following example shows. Namely, we have the following result for Cartesian products of complete graphs:
Theorem 3.
Let G be the Cartesian product of two complete graphs K n + 1 and K m + 1 with the non-lazy simple random walk P as the initial weighting scheme. Then, the curvature flow P ( t ) converges to a limit as t with limit transition rates
a = m + 3 2 n m + 3 n + 3 m , b = n + 3 2 n m + 3 n + 3 m ,
where a are the transition rates along edges between ( x , x ) and ( y , x ) with x , y K n + 1 , x y and x K m + 1 (“horizontal edges”), and  b are the transition rates along edges between ( x , x ) and ( x , y ) with x K n + 1 and x , y K m + 1 , x y (“vertical edges”).
Proof. 
By symmetry of the configuration, we have only two types a ( t ) and b ( t ) of transition rates for the curvature flow at time t 0 (for horizontal and vertical edges, respectively) with
a ( 0 ) = b ( 0 ) = 1 n + m
and
n a ( t ) + m b ( t ) = 1 ,
due to the Markovian property. This implies that b ( t ) = 1 n a ( t ) m and b ( t ) = n a ( t ) m , and we only need to consider an ordinary differential equation for a with initial condition a ( 0 ) = 1 n + m . We can also assume without loss of generality that n m . We derive from the explicit description (9) of the curvature flow that
a ( t ) = a ( t ) 4 a ( t ) 2 ( n 1 ) a ( t ) + 4 ( n a 2 ( t ) + m b 2 ( t ) ) + n ( n 1 ) a 2 ( t ) + m ( m 1 ) b 2 ( t ) + ( n 1 ) a 2 ( t ) = n ( n + 3 ) a 3 ( t ) + m ( m + 3 ) a ( t ) 1 n a ( t ) m 2 ( n + 3 ) a 2 ( t ) = a ( t ) n 2 n + 3 + 3 n m a 2 ( t ) 3 n + 3 + 6 n m a ( t ) + 1 + 3 m .
If this differential equation converges as t , its limit a must satisfy
a 0 , 1 n , m + 3 2 n m + 3 n + 3 m ,
that is
( a , b ) 0 , 1 m , 1 n , 0 , m + 3 2 n m + 3 n + 3 m , n + 3 2 n m + 3 n + 3 m ,
with
b = lim t b ( t ) = lim t 1 n a ( t ) m = 1 n a m .
Our assumption n m implies that we have
1 n + m m + 3 2 n m + 3 n + 3 m < 1 n
and that the right hand side of (10) is strictly positive for a ( t ) in the interval
1 n + m , m + 3 2 n m + 3 n + 3 m ,
zero at a ( t ) = m + 3 2 n m + 3 n + 3 m , and strictly negative for a ( t ) on the interval
m + 3 2 n m + 3 n + 3 m , 1 n .
These monotonicity properties force the function a ( t ) to converge to the limit a = m + 3 2 n m + 3 n + 3 m .    □
Example 6
(Flow limit of K 3 × K 4 with simple random walk). The following code computes the numerical flow limit for K 3 × K 4 with the simple random walk as initial weighting scheme.
Axioms 12 00577 i005
The initial transition rates are all equal to 1 / 5 = 0.2 , and the transition rates of the numerical limit are 0.22 2 / 9 and 0.19 5 / 27 , as predicted by the above theorem.

2.6. Totally Degenerate Flow Limits

As mentioned before, many curvature limits are totally degenerate. Therefore, it is worth investigating the properties of those particular limits.
Example 7
(The octahedron with a totally degenerate flow limit). Let G = ( V , E ) with V = { v 0 , , v 5 } be the unmixed graph representing the octahedron, as illustrated in Figure 12 (left hand side). While the simple random walk without laziness is a stationary solution of the normalized curvature flow, any small perturbation of this initial weighting scheme leads to another curvature sharp limit, which is totally degenerate. For example, the initial weighting scheme
P 0 = 0 0.26 0 0.24 0.25 0.25 0.25 0 0.25 0 0.25 0.25 0 0.25 0 0.25 0.25 0.25 0.25 0 0.25 0 0.25 0.25 0.25 0.25 0.25 0.25 0 0 0.25 0.25 0.25 0.25 0 0
converges to the totally degenerate limit illustrated in Figure 12 (right-hand side) under the numerical curvature flow.
The following considerations show that the limit in Example 7 is essentially the only totally degenerate curvature sharp weighting scheme without two-sided degenerate edges for the octahedron (see Proposition 3 below). We start with a general unmixed combinatorial graph G = ( V , E ) without isolated vertices. A totally degenerate weighting scheme P assigns to each edge { x , y } E either a direction ( x y if p x y > 0 and y x if p y x > 0 , illustrated by a red dashed line with an arrow) or the edge is two-sided degenerate (that is p x y = p y x = 0 , illustrated by a black dotted line). A first observation is that none of the vertices x V can be a sink: the Markovian property requires that at least one edge incident to x must be outward directed. The following lemma presents a useful property of triangles.
Lemma 1.
Let ( G , P ) be a totally degenerate curvature sharp Markovian weighted graph without laziness. Then, the directions of a triangle T = { x , y , z } V without two-sided degenerate edges cannot be oriented, that is, its edges cannot have the orientations x y z x or x z y x .
Proof. 
Assume that a totally degenerate curvature sharp Markovian weighting scheme without laziness contains a triangle T = { x , y , z } with p x z , p z y , p y x > 0 , that is, we have an orientation x z y x . This means, in particular, that p x y = 0 . We can read off the flow equation (9) that curvature sharpness of a totally degenerate Markovian weighting scheme means
p x y ( 2 y y p y y + y , y p x y p y y ) + y y p x y p y y = 0 .
Since we have p x y = 0 , this means
0 p x z p z y y y p x y p y y = 0 ,
in contradiction to p x z , p z y > 0 . The orientation x y z x can be ruled out similarly.    □
The main tool in the proof of the following proposition can be found in [38] (Exercise 25.14). Assume a tessellation of the two-dimensional sphere carries an orientation along all its edges. For every vertex v of the tessellation, let ind ( v ) = 1 c ( v ) / 2 , where c ( v ) is the number of changes in the orientation of edges adjacent to v (in cyclic order). For a face f, let ind ( f ) = 1 c ( f ) / 2 , where c ( f ) is the number of changes in the orientation (clockwise vs. anti-clockwise) of edges of f. Then, we have
v ind ( v ) + f ind ( f ) = 2 .
Proposition 3.
Let G = ( V , E ) be the octahedron, as illustrated in Figure 12 (left-hand side). Then, G has essentially only one totally degenerate non-lazy curvature sharp Markovian weighting scheme without two-sided degenerate edges, namely, we have (up to a permutation of the vertices corresponding to a graph automorphism)
p v 0 , v 1 = p v 1 , v 2 = p v 2 , v 3 = p v 3 , v 0 = 1
and
p v 4 , v 0 = p v 4 , v 1 = p v 4 , v 2 = p v 4 , v 3 = 1 / 4 , p v 5 , v 0 = p v 5 , v 1 = p v 5 , v 2 = p v 5 , v 3 = 1 / 4 .
Proof. 
We can think of the octahedron as a tessellation of the sphere by eight triangles, all of them not oriented, by Lemma 1. This means that ind ( f ) = 0 for all faces of the octahedron. Therefore, we must have
v ind ( v ) = 2 ,
that is, at least two vertices of the octahedron must have ind ( v ) = 1 , which means that each of them must be a source or a sink. The Markovian property rules out sinks, and two sources cannot be adjacent (otherwise they would be connected by a non-degenerate edge). Therefore, the octahedron must have two sources at distance 2, which we denote by v 4 , v 5 . Their edges are all directed towards a cycle of length 4. The directions of the edges in this cycle must be directed, for otherwise there would be a sink in this cycle, which is not possible. We denote this oriented cycle by v 0 v 1 v 2 v 3 v 0 , and we must have
p 01 = p 12 = p 2 , 3 = p 3 , 0 = 1 ,
where we used the notation p i j = p v i , v j for simplicity. Applying formula (12) to ( x , y ) = ( v 4 , v 0 ) yields
p 40 ( 2 ( p 01 + p 03 ) + i = 0 3 p 4 i ) + p 41 p 10 + p 43 p 30 = p 40 ( 2 + 1 ) + p 43 = 0 ,
that is p 40 = p 43 . Similarly, we can show that all transition rates p 4 i must coincide and, therefore, p 40 = p 41 = p 42 = p 43 = 1 / 4 . The same arguments apply to the vertex v 5 , finishing the proof of the proposition.    □
Conjecture 4
(Flow limits of the octahedron). The normalized curvature flow on the octahedron for any non-degenerate initial weighting scheme without laziness different from the simple random walk always converges to a limit described in Proposition 3.

3. Asymptotically Stable and Unstable Curvature Sharp Markovian Weighting Schemes

Our curvature flow can be viewed as a continuous dynamical system with its limits as equilibrium states. This leads naturally to stability questions at these equilibria, which is the concern of this section. Further information about the relevance and the background theory of stability theory for dynamical systems can be found, for example, in [39] (Chapter 9).
Since every curvature sharp Markovian weighting scheme on a given combinatorial graph is a stationary solution of the normalized curvature flow, the question arises whether such a stationary solution P s is asymptotically stable, that is, whether any closeby Markovian weigthing scheme P converges back to this equilibrium P s as t . This can be decided via the linearization of the curvature flow equations around such an equilibrium. In the next subsection, we will describe this linearization in full detail before we consider various examples in the following subsection.

3.1. Linearization of the Curvature Flow Equations at Equilibria

Let P s be a curvature sharp Markovian weighting scheme of a finite simple mixed combinatorial graph G = ( V , E ) . We consider Markovian weighting schemes P near P s with the same laziness, that is, p x x = p x x s for all x V . Let E dir = { ( x , y ) V × V : d ( x , y ) = 1 } . The linearization of F at the equilibrium P s of the normalized curvature flow is given for each component function F x y , ( x , y ) E dir , by
D F x y ( P s ) ( q u v ) ( u , v ) E dir ) = 4 p y x s 2 y y p y y s + 4 D x y p x y s p y x s + 1 D x y , y p x y s p y y s p y y s q x y + p x y s 4 q y x 2 y y q y y + 4 D x y p x y s q y x + p y x s q x y + 1 D x y , y p x y s q y y + p y y s q x y = y S 1 ( x ) B x y ( x y ) q x y + y S 1 ( x ) z B 1 ( x ) B x y ( y z ) q y z .
Here, y , y are vertices in S 1 ( x ) and the potentially non-zero B-coefficients are given by
B x y ( x y ) = 4 p y x s p y y s 2 y y p y y s + 1 D x 4 p x y s p y x s + 4 y p x y s p y x s + p x y s y p y y s + y , y p x y s p y y s ,
B x y ( x y ) = 4 D x p x y s p y x s + 1 D x p x y s y p y y s + p y y s if y y ,
B x y ( y x ) = 4 p x y s 1 D x p x y s 1 ,
B x y ( y x ) = 4 D x p x y s p x y s if y y ,
B x y ( y y ) = p x y s 1 D x p x y s 2 if y y ,
B x y ( y y ) = p x y s 1 D x p x y s + 1 if y y ,
B x y ( y y ) = 1 D x p x y s p x y s if y y and y y , y .
All other B-coefficients are chosen to be zero. Note, however, that the transition probabilities ( p x y ) y S 1 ( x ) are not independent, and therefore, the choice of the B-coefficients is not unique, as explained in the following remark.
Remark 1.
Since we have v S 1 ( u ) q u v = 0 for all u V , there is a degree of freedom in the choice of the B-coefficients. For example, in the case that G is an unmixed complete graph, we can replace B x y ( u , v ) by B x y ( u , v ) = C u + B x y ( u , v ) with arbitrary constants C u . This allows us to modify the B-coefficients B x y ( y y ) and B x y ( y y ) in (17) and (19) to vanish, and we can use instead
D F x y ( P s ) ( ( q u v ) ( u , v ) E dir ) = y x B x y ( x y ) q x y + y x B x y ( y x ) q y x + y x , y B x y ( y y ) q y y
with
B x y ( x y ) = 4 p y x s p y y s 2 y y p y y s + 1 D x 4 p x y s p y x s + 4 y p x y s p y x s + p x y s y p y y s + y , y p x y s p y y s , B x y ( x y ) = 4 D x p x y s p y x s + 1 D x p x y s y p y y s + p y y s if y x , y , B x y ( y x ) = p x y s 3 D x p x y s 2 , B x y ( y x ) = 3 D x p x y s p x y s if y x , y , B x y ( y y ) = p x y s if y x , y .
Note that in the case of the unmixed complete graph, we have S 1 ( x ) = V \ { x } and, in the formulas for the B -coefficients, y y represent all vertices different from x, as before.
To end up with a uniquely defined Jacobi matrix of F, we need to restrict transition probabilities that are independent. For that, we introduce the subset E ess E dir of “essential” transition probabilities by removing, for each x V with outgoing directed edges, that is S 1 ( x ) , one pair ( x , y ) from E dir . The cardinality of E ess is M : = | E 1 | + 2 | E 2 | | V 0 | , where V 0 V is the subset of vertices x V for which we have S 1 ( x ) . Any choice ( p u v ) ( u , v ) E ess determines then a weighting scheme P by setting p u v = D u v S 1 ( u ) \ { v } p u v for the directed edge ( u , v ) E ess . Similarly, any choice ( q u v ) ( u , v ) E ess also determines the parameters q u v with ( u , v ) E ess by setting q u v = v S 1 ( u ) \ { v } q u v . Then, D F ( ( p u v s ) ( u , v ) E ess ) is a square matrix of size M, and the weighting scheme P s corresponding to ( p u v s ) ( u , v ) E ess is asymptotically stable if and only if the real parts of all eigenvalues of this square matrix are negative, and the weighting scheme P s is unstable if and only if at least one of the real parts of these eigenvalues is positive.
Let us reformulate this restriction in terms of matrix multiplications. We start by enumerating the vertices of the graph G = ( V , E ) : V = { v 0 , , v N } . We also introduce the following enumeration on the directed edges in E dir : Let 1 = j 0 and a j 0 , , a k 0 be the edges of the type ( v 0 , ) (where second vertices are chosen with increasing indices) in E dir , j 1 = k 0 + 1 and a j 1 , , a k 1 be the edges of the type ( v 1 , ) in E dir , and so on. For all vertices v l V with S 1 ( v l ) = , we set j l = k l 1 + 1 and k l = k l 1 . We remove the edges a k 0 , a k 1 , , a k N from E dir to obtain E ess . For simplicity, we use the notation p j s and q j for p a j s and q a j , and we can write for all a j E ess ,
D F a j ( ( p k s ) a k E ess ) ( ( q k ) a k E ess ) = l = 0 N k = j l k l B a j ( a k ) q k = l = 0 N k = j l k l 1 ( B a j ( a k ) B a j ( a k l ) ) q k ,
where the last expression involves only parameters q k corresponding to essential directed edges a k E ess . Consequently, the Jacobi matrix D F ( ( p k s ) a k E ess ) ( ( q k ) a k E ess ) can be written as
D F ( ( p k s ) a k E ess ) = P 1 B P 2
where B is the square matrix of size k N with B j k = B a j ( a k ) for a j , a k E dir , P 1 is obtained from the identity matrix I k N by removing the rows k 0 , k 1 , , k N , and  P 2 = P 1 P 3 with P 3 a k N × M matrix whose first k 0 1 columns are all the standard basis vector e k 0 , the next k 1 j 1 columns are all the standard basis vector e k 1 , and so on.

3.2. Examples of Asymptotically Stable and Unstable Equilibria

In this subsection, we investigate curvature sharp weighting schemes of various examples of unmixed combinatorial graphs.
Example 8
(Curvature sharp weighting schemes on a cycle). Let C N = ( V , E ) be a cycle of length N 4 , that is, V = { v 0 , v 1 , , v N 1 } and v i v i + 1 with indices i modulo N. For simplicity, we refer to vertex v i henceforth as i. We assume P s to be a non-lazy curvature sharp weighting scheme on C N , and we remove the directed edges ( i , i + 1 ) E dir to obtain E ess , and the only coefficients B a j ( a k ) with a j E ess and a k E dir , which may be potentially non-zero are (see (13)–(16)),
B i , i 1 ( i , i 1 ) = 4 p i , i 1 s + 8 p i , i 1 s p i 1 , i s + 4 p i , i + 1 s p i + 1 , i s , B i , i 1 ( i , i + 1 ) = 4 p i , i 1 s p i + 1 , i s , B i , i 1 ( i 1 , i ) = 4 ( p i , i 1 s ) 2 4 p i , i 1 s , B i , i 1 ( i + 1 , i ) = 4 p i , i 1 s p i , i + 1 s .
This implies
D F i , i 1 ( ( p k s ) a k E ess ) ( ( q k ) a k E ess ) = ( B i , i 1 ( i , i 1 ) B i , i 1 ( i , i + 1 ) ) q i , i 1 + B i , i 1 ( i + 1 , i ) q i + 1 , i B i , i 1 ( i 1 , i ) q i 1 , i 2 = 4 ( ( p i , i 1 s ) 2 p i , i 1 s ) q i 1 , i 2 + 4 ( p i , i 1 s + 2 p i , i 1 s p i 1 , i s + p i , i + 1 s p i + 1 , i s p i , i 1 s p i + 1 , i s ) q i , i 1 + 4 p i , i 1 s p i , i + 1 s q i + 1 , i .
In the case of the simple random walk p i , i 1 s = p i , i + 1 s = 1 / 2 , i { 0 , , N 1 } , this simplifies to
D F i , i 1 ( ( p k s ) a k E ess ) ( ( q k ) a k E ess ) = q i 1 , i 2 + q i + 1 , i ,
and the corresponding matrix D F ( ( p k s ) a k E ess ) coincides with the adjacency matrix of C N whose largest eigenvalue is 2. Therefore, the simple random walk on C N , N 4 , is an unstable equilibrium. This is in contrast to the simple random walk on C 3 = K 3 , which is asymptotically stable, as we will see in Example 10.
In the case of the totally degenerate clockwise weighting scheme p i , i 1 = 1 and p i , i + 1 = 0 (see right-hand side of Figure 4), we have
D F i , i 1 ( ( p k s ) a k E ess ) ( ( q k ) a k E ess ) = 4 q i , i 1 ,
that is, D F ( ( p k s ) a k E ess ) = 4 Id N , and this curvature sharp Markovian weighting scheme is asymptotically stable. This agrees with the fact that many initial weighting schemes end up in this limit under the curvature flow. The same holds true for the corresponding totally degenerate anti-clockwise weighting scheme with p i , i + 1 = 1 and p i , i 1 = 0 .
Example 9
(Flow limits of the octahedron). We know from Example 7 that stationary solutions of the normalized curvature flow on the octahedron are the simple random walk without laziness as well as the totally degenerate weighting scheme given as matrix P s in the following code (see also the right-hand side of Figure 12). The linearization D F ( P s ) is analyzed in line 10 of the program, and the function equilibrium_type with the parameters chosen in lines 6 and 7 returns one of the values 1 , 0 , 1 (corresponding to “asymptotically stable”, ”undecided”, “unstable”, respectively), followed by a list of its eigenvalues. That is, after execution of line 10, result[0] is one of the values 1 , 0 , 1 and result[1] is a list of the 18 eigenvalues λ j of D F ( P s ) .Axioms 12 00577 i006
The program provides us with the following list of complex eigenvalues:
λ j 1 1 + i 1 i 2 2 + i 2 i 3 4
multiplicity22222224
This shows that the totally degenerate curvature sharp weighting scheme P s on the octahedron is asymptotically stable. This is expected since the initial weighting scheme P 0 in (11) of Example 7 converges to this limit under the normalized numerical curvature flow.
Running the same code for the simple random walk without laziness instead (by uncommenting line 3 and commenting out lines 4 and 5 in the above code) shows that this second curvature sharp weighting scheme is unstable. The eigenvalues, in this case, are all real-valued, one of them 0.5 , and given as follows:
λ j 0.5 0 0.75 1 1.5
multiplicity33264
Example 10
(Simple random walk on a complete graph). Let K n + 1 = ( V , E ) be the complete unmixed graph with n + 1 3 vertices. Instead of the B-coefficients, we make use of the B -coefficients introduced in Remark 1. The simple random walk p x y = 1 n for x y is a curvature sharp Markovian weighting scheme, and the non-zero B -coefficients are then given by
B x y ( x y ) = ( n + 1 ) ( 3 n ) n 2 , B x y ( x y ) = 2 n + 3 n 2 , B x y ( y x ) = 3 2 n n 2 , B x y ( y x ) = 3 n 2 , B x y ( y y ) = 1 n ,
where y V is an arbitrary vertex different from x , y . Let { v 0 , v 1 , , v n } be the vertex set of K n + 1 and, as in the previous example, we refer to vertex v i as i, for simplicity.
Let us now consider the case n = 2 . The process of removing edges from E dir described earlier leads to the following remaining edges in E ess :
a 1 = ( 0 , 1 ) , a 3 = ( 1 , 0 ) , a 5 = ( 2 , 0 ) .
Choosing the simple random walk p 01 s = p 10 s = p 20 s = 1 / 2 , we have
D F ( p 01 s , p 10 s , p 20 s ) = e 1 e 3 e 5 B e 1 e 2 e 3 e 4 e 5 e 6 = B 01 ( 01 ) B 01 ( 02 ) B 01 ( 10 ) B 01 ( 12 ) B 01 ( 20 ) B 01 ( 21 ) B 10 ( 01 ) B 10 ( 02 ) B 10 ( 10 ) B 10 ( 12 ) B 10 ( 20 ) B 10 ( 21 ) B 20 ( 01 ) B 20 ( 02 ) B 20 ( 10 ) B 20 ( 12 ) B 20 ( 20 ) B 20 ( 21 ) = 1 1 4 1 4 1 4 1 1 4 1 4 1 4 1 ,
which is a negative definite matrix with eigenvalues 1 2 , 5 4 , 5 4 , showing that the simple random walk on K 3 is an asymptotically stable equilibrium. This result can be numerically verified via the following code:Axioms 12 00577 i007
The program returns the eigenvalues of the linearized flow matrix of K 3 at the simple random walk. Note, however, that the computed matrix is based here on the B-coefficients instead of the B -coefficients, so this matrix is slightly different from the one given above, while the eigenvalues are the same.
In the case n = 3 , we have p 01 s = p 02 s = p 10 s = p 12 s = p 20 s = p 21 s = p 30 s = p 31 s = 1 / 3 and the returned matrix by the program (after changing n=2 into n=3 in line 1 of the code) is as follows:
D F ( p 01 s , p 02 s , p 10 s , p 12 s , p 20 s , p 21 s , p 30 s , p 31 s ) = 1 0 1 / 3 0 1 / 3 1 / 3 1 / 3 1 / 3 0 1 1 / 3 1 / 3 1 / 3 0 0 1 / 3 1 / 3 0 1 0 1 / 3 1 / 3 1 / 3 1 / 3 1 / 3 1 / 3 0 1 0 1 / 3 1 / 3 0 0 1 / 3 1 / 3 1 / 3 1 0 0 1 / 3 1 / 3 1 / 3 0 1 / 3 0 1 1 / 3 0 1 / 3 1 / 3 0 1 / 3 0 1 / 3 1 0 0 1 / 3 1 / 3 1 / 3 1 / 3 0 0 1 .
Its eigenvalues are 2 3 with multiplicity 6 and 2 with multiplicity 2. This shows that the simple random walk on K 4 is again an asymptotically stable equilibrium.
Since numerical experiments show that all non-degenerate Markovian weighting schemes without laziness on K n + 1 converge to the simple random walk, we expect that the simple random walk on K n + 1 is an asymptotically stable equilibrium for all n 2 (see also our Conjecture 3, which is an even stronger statement). To this end, our code provides the following numerical results: The eigenvalues of D F ( P s ) for the simple random walk without laziness on the complete graph K n + 1 are real-valued and given by:
  • 7 16 with multiplicity 4, 3 4 with multiplicity 6, and  7 4 with multiplicity 5 for n = 4 ;
  • 8 25 with multiplicity 5, 4 5 with multiplicity 10, and  8 5 with multiplicity 9 for n = 5 ;
  • 1 4 with multiplicity 6, 5 6 with multiplicity 15, and  3 2 with multiplicity 14 for n = 6 ;
  • 10 49 with multiplicity 7, 6 7 with multiplicity 21, and  10 7 with multiplicity 20 for n = 7 .
These results give rise to the following conjecture:
Conjecture 5.
The non-lazy simple random walk P s on the unmixed complete graph K n + 1 , n 2 , is asymptotically stable and the eigenvalues of D F ( P s ) are given by
n 1 n with multiplicity n 2 , n + 3 n 2 with multiplicity n , n + 3 n with multiplicity n 2 1 .
As n , we have n 1 n 1 , n + 3 n 2 1 n 0 and n + 3 n 1 .
Example 11
(Simple random walks on hypercubes). We know from [1] (Corollary 1.14) that the simple random walk without laziness on a hypercube Q d = ( K 2 ) d is curvature sharp, and it is the only non-degenerate curvature sharp weighting schemes without laziness if and only if d is odd. For  d = 2 , a non-degenerate curvature sharp weighting scheme on Q 2 different from the simple random walk is given in line 4 of the following code:Axioms 12 00577 i008
All eigenvalues λ j of the corresponding linearized flow matrix provided by this code via line 6 seem to be real. Two of them are numerically zero and the other two are given by ± λ with a non-zero real λ. So this equilibrium is unstable.
Our experiments for arbitrary weighting schemes on Q d , d 2 , close to the simple random walk show that the numerical flow converges usually to a degenerate limit. This agrees with our observation that the linearized flow matrix at the simple random walk always seems to have real eigenvalues with some of them being positive. These eigenvalues can be obtained via the following code:
Axioms 12 00577 i009
Let us finish this section with a conjecture that we verified numerically for d = 2 , 3 , , 9 :
Conjecture 6.
The non-lazy simple random walk P s on the hypercube Q d , d 2 , is unstable and the eigenvalues of the corresponding linearized curvature flow matrix are all real with the largest eigenvalue λ max equals
λ max = 4 d .

4. Conclusions and Open Questions

In Section 2, we investigated curvature flows of various concrete examples. Our findings and possible directions for further research are as follows:
(a)
Random graphs: We observed an edge density threshold for Erdös-Rényi graphs. For values below this threshold, the flow usually converges to a totally degenerate limit, while for values above this threshold, the flow limit concentrates on a non-degenerate cluster (see Conjecture 2). Further research could encompass curvature flows of random regular graphs with simple random walks as their initial weighting schemes.
(b)
Paths and cycles: Our observed limits for these graphs are usually directed graphs with isolated clusters of three vertices (see Figure 4 and Proposition 1).
(c)
Complete graphs and their wedge sums and Cartesian products: In the case of complete graphs, non-degenerate initial weighting schemes seem to converge always to simple random walks (see Conjecture 3). In wedge sums of complete graphs, curvature flow limits usually concentrate totally on one of its components, which is most often the largest component (see Table 2). This observation might motivate further research on the largest clusters of general highly connected graphs. We also describe the flow limit of Cartesian products of complete graphs with the simple random walk as its initial weighting scheme (see Theorem 3). A natural question here is the limit behavior of Cartesian products of graphs with curvature sharp initial weighting schemes.
(d)
Octahedron: In the case of the octahedron, there is a unique totally degenerate flow limit (up to symmetries), which has two sources and a directed 4-cycle (see Figure 12 and Proposition 3). The shape of totally degenerate flow limits for general graphs is obscure and would benefit from further investigations.
As mentioned already in [1], curvature flow limits are always curvature sharp. A rough interpretation of curvature sharpness at a vertex is that its Ricci curvature is constant in all directions (see [1] Equation (8)). Section 3 was concerned with a dynamical aspect of these curvature flow limits, namely their stability properties. Our findings are the following:
(e)
Cycles: Simple random walks on cycles C n for n 4 are unstable, and totally degenerate directed weighting schemes are asymptotically stable (see Example 8).
(f)
Complete graphs: We have strong numerical evidence that simple random walks on complete graphs K n are asymptotically stable (numerically verified for n = 3 , , 8 ); see Example 10. Moreover, our numerics provide explicit information about all eigenvalues of the linearized curvature flow as stated in Conjecture 5.
(g)
Hypercubes: Simple random walks of hypercubes Q d for d 2 seem to be unstable and our experiments give rise to a conjecture about the largest eigenvalue of the linearized curvature flow (see Conjecture 6).
(h)
Octahedron: The totally degenerate flow limit of the octahedron is asymptotically stable (see Example 9).
(i)
Edge-transitive graphs: In view of (e), (f), and (g), an interesting research direction would be to investigate the stability of the simple random walk for general edge-transitive graphs.
Let us end this section with some final reflections: After having introduced a discrete curvature flow based on the Bakry–Émery calculus in [1], the main concern of this paper was to gain further insights into this flow from a dynamical viewpoint using a specially developed Python software. The most pressing and still open question is whether our curvature flow is always convergent as time tends to infinity (see Conjecture 1), or whether other limiting behavior may occur such as periodic orbits. Moreover, this could be just the starting point of various further questions, for example, whether every curvature flow allows for asymptotically stable limits—a natural technique here might be to use particular Lyapunov functions (see, e.g., [39] (Section 9.3)). The dynamical viewpoint also gives rise to other questions such as the existence of heteroclinic orbits between equilibria. All these questions may lead to further research in the future.

5. Implementation of the Curvature Flow and Useful Tools

This section provides a short description of a program, written in Python, which allows users to carry out their own curvature flow experiments. This program is provided as an ancillary file of [2] or via github at https://github.com/georgestagg/graph-curvature-server (accessed on 6 June 2023) and can be used in combination with the “Graph Curvature Calculator”, which can be freely accessed at http://www.mas.ncl.ac.uk/graph-curvature (accessed on 6 June 2023).
The Graph Curvature Calculator is a powerful but easy-to-use interactive Web tool to draw graphs and to compute various types of curvatures such as Bakry–Émery curvature on its vertices or Ollivier Ricci curvature on its edges (for details see [40]). This Web tool allows users to obtain the adjacency matrix of the graph under consideration, which can then be used as input for the curvature flow code.
The curvature flow code provides functions and routines, which can be divided into six categories:
  • Functions related to graphs and their adjacency matrices;
  • Functions related to weighting schemes;
  • Functions testing combinatorial and weighted graphs;
  • Curvature flow computation routines;
  • Curvature computation routines;
  • Display routines.
Each category is discussed in one of the following subsections.

5.1. Functions Related to Graphs and Their Adjacency Matrices

Recall that the topology of a given Markov chain ( G , P ) is contained in the combinatorial graph G = ( V , E ) . This information is provided by the adjacency matrix A = A G of the graph. Firstly, we go through some useful functions performing operations with these adjacency matrices. Every graph generated by one of the functions below is returned as such an adjacency matrix; in particular, as a NumPy array. The names of these functions are as follows:
  • rand_adj_mat(n, p, connected=False);
  • complete(n);
  • path(n);
  • cycle(n);
  • wedge_sum(A, B, i, j);
  • bridge_at(A, B, i, j);
  • hypercube(n);
  • cart_prod(A, B);
  • onespheres(A).
rand_adjmat(n, p) returns a random adjacency matrix with n vertices, where p is the probability that an edge exists between any two vertices. Therefore, higher values of p usually lead to better-connected graphs. Choosing connected=True instead guarantees that the returned adjacency matrix provides a connected combinatorial graph.
The functions complete(n), path(n) and cycle(n) return the adjacency matrix of a complete graph with n vertices, a path of length n and a cycle of length n, respectively.
wedge_sum(A, B, i, j) produces an adjacency matrix of a graph that is the wedge sum of two pointed graphs represented by the adjacency matrices A and B and the ith vertex of A and the jth vertex of B, that is, the new graph is obtained from the disjoint union of these two graphs by only identifying these two vertices and keeping all other edges and vertices disjoint.
There is also bridge_at(A, B, i, j), which returns an adjacency matrix of the graph formed by connecting the graphs represented by A and B by a single edge at the ith vertex of A and the jth vertex of B.
The function hypercube(n) returns the adjacency matrix of the n-dimensional hypercube.
The Cartesian product of two graphs represented by adjacency matrices A and B is returned by the function cart_prod(A, B). (The n-dimensional hypercube can also be alternatively generated as the Cartesian product of n complete graphs K 2 .)
Finally, for a graph G = ( V , E ) given by the adjacency matrix A and the vertex set V = { 0 , 1 , , n 1 } , the function onespheres(A) returns a list of lists whose i-th entry is a list of all neighbors of vertex i V , and whose n-th entry is a list of the combinatorial degrees of the vertices in V. This function is mainly used in the execution of other functions.

5.2. Functions Related to Weighting Schemes

The weighting scheme of a Markov chain ( G , P ) is provided via the weighted matrix P = P G . The functions in this category are the following:
  • randomizer(A, threshold=0.001, laziness=False);
  • srw(A, laziness=False);
  • cart_prod_prob(P, Q, p, q).
randomizer(A) and srw(A) are two useful functions that can be used to give weighted matrices from an adjacency matrix.
The function randomizer(A) returns a weighting scheme for the graph G with random, numerically non-degenerate transition rates, that is, no transition rate is chosen to be below the parameter threshold. Usually, the returned weighting schemes are without laziness, but choosing laziness=True returns weighting schemes with all vertices having laziness ≥ threshold.
srw(A) returns the weighting scheme corresponding to the non-lazy simple random walk on the graph G = ( V , E ) represented by the adjacency matrix A. Choosing laziness=True, the transition rates of a vertex v V with degree n to its neighbors are chosen to be 1 n + 1 and its laziness is also chosen to be 1 n + 1 .
The function cart_prod_prob(P, Q, p, q) is a “weighted” analog of the function cart_prod from the previous subsection for the Cartesian product of two weighting schemes P, Q with weights p, q, with  p + q = 1 . If P and Q are of size n and m, respectively, this function returns the matrix p P I n + q I m Q of size n m , where I n is the identity matrix of size n and A B is the Kronecker product of A and B.

5.3. Functions Testing Combinational and Weighted Graphs

For combinatorial graphs given by their adjacency matrices A and weighted graphs given additionally by their weighting scheme P, we have the following test functions:
  • is_connected(A);
  • is_weakly_connected(A, threshold=0.001);
  • is_totally_degenerate(A, P, threshold=0.001);
  • is_markovian(P, norm_tolerance=0.001);
  • is_curvature_sharp(A, P, norm_tolerance=0.001, threshold=0.001);
  • equilibrium_type(A, P, eigenvalues=False, jacobi_matrix=False,
    norm_tolerance=0.001, threshold=0.001).
The function is_connected(A) returns True if and only if the adjacency matrix A represents a connected graph.
The function is_weakly_connected(P) is a “weighted” analog, which returns True if and only if the weighted matrix P represents a weakly connected graph. It does this by forming an adjacency matrix with a 1 in the ( i , j ) th entry if and only if P[i, j] > threshold or P[j, i] > threshold and then testing for connectedness.
Recall that a weighted graph ( G , P ) is called numerically totally degenerate if there are no two-sided edges with numerical non-zero transition rates in both directions and no one-sided edges with numerical non-zero transition rate, where we consider a transition rate p x y as numerically non-zero if and only if p x y  threshold. The function is_totally_degenerate(A,P) tests this property.
The function is_markovian(P) tests whether the entries of each of the columns of P add up numerically to 1 up to an error norm _ tolerance .
Numerical curvature sharpness (up to an error threshold ) of Markovian weighted graphs given by (A,P) is tested by is_curvature_sharp(A,P). If (A,P) fails to be Markovian (with respect to norm_tolerance), this function returns NONE and gives notice to the user by an error message.
For dynamical investigations of curvature flow equilibria, we have the function equilibrium_type(A,P), which always returns a list of length three. The function checks first whether (A,P) satisfies the Markovian property and is numerically curvature sharp. If this is not the case, it returns a list of three NONE values. Otherwise, the function investigates the real parts of the eigenvalues λ j of the linearized curvature flow matrix at the equilibrium P. The first entry of the return list is 1 , 0 or 1 depending on the maximum max j Re ( λ j ) . If this maximum is threshold , the return value is 1 (for “unstable”) and if this maximum is threshold , the return value is 1 (for “asymptotically stable”). Otherwise, the dynamical nature of the equilibrium cannot be numerically decided and the function returns the value 0. The following two entries of the return list are usually NONE unless the user made the choices eigenvalues=True or jacobi_matrix=True. In the first case, the second entry of the return list is a list of all eigenvalues of the linearized curvature flow matrix, and in the second case the third entry of the return is the linearized curvature flow matrix itself.

5.4. Curvature Flow Computation Routines

At the heart of the program are the curvature flow routines solving the initial value ordinary differential Equations (6) and (7). The relevant routines are the following:
  • curv_flow(A, P, t_max, dt=0.3, C=zeroes),
  • norm_curv_flow(A, P, t_max, dt=0.3, stoch_corr=True, norm_tolerance=0.001),
  • norm_curv_flow_lim(A, P, dt=0.3, stoch_corr=True, norm_tolerance=0.001, lim_tolerance=0.001, t_lim=10000).
The initial Markov chain ( G , P 0 ) with G = ( V , E ) is entered by the adjacency matrix A describing the topology of the graph G and the weighting scheme P containing the initial probability transitions p x y ( 0 ) .
The first routine curv_flow(A,P) computes the non-normalized numerical curvature flow with coefficients C x ( t ) = 0 in (7). If users decide to choose other coefficient functions, they need to modify the input parameter C=zeroes. Note that zeroes(A,P) is a function returning simply a list of zeroes of length | V | . Users can investigate modifications of the curvature flow by choosing their own coefficient functions with input values (A,P) and returning a list of length | V | of real values. Using the discretization parameter dt=0.3 for the discrete time steps starting at t=0, the curvature flow routine creates a list P_list of weighting schemes (represented by NumPy arrays of size | V | × | V | ) at each time increment using the Runge–Kutta algorithms RK4. There are two internal subroutines involved, which we would like to mention briefly. Pvecs_to_P translates a weighting scheme given by a list of lists (where each inner list contains the transition rates of the corresponding vertex) into the corresponding NumPy array. Pvecs_prime computes, for a given weighting scheme P, the right-hand side of the ordinary differential equations describing the curvature flow. The representation of this right-hand side is again a list of lists, as described before. The computation stops just before the discrete time steps exceed the limit time t_max and the routine returns P_list. Note that in this general setting, transition rates can assume arbitrary values and even negative ones or diverge to infinity in finite time which may lead to system error messages. Users need to be aware of this possibility.
The normalized curvature flow, using the coefficients C x ( t ) = K P ( t ) , d ( x , · ) ( x ) (see (8)), is numerically computed by the routine norm_curv_flow(A,P). This special flow is the main focus of this paper and could also be mimicked by choosing C=K_inf in curv_flow. The function K_inf(A,P) returns a list of upper curvature bounds for all vertices of the Markovian weighted graph represented by (A,P) (see [1] (Formula (66)) for an explicit expression of this function in terms of transition rates). During the numerical computations of subsequent time steps, the Markovian property of the corresponding weighting schemes may be slightly violated. If this violation exceeds the threshold norm_tolerance, the routine prepares for a potential correction according to the Boolean variable stoch_corr. If stoch_corr=False, the program stops with a message to the user as discussed in Example 1. Otherwise, the program carries out the following automatic Markovian renormalization of the currently considered weighting scheme: while the diagonal entries (the laziness values) are unchanged, the off-diagonal entries in each row are rescaled by a suitable factor to guarantee that the resulting matrix becomes stochastic again. As before, this routine returns a list P_list of consecutive weighting schemes up to the time limit t_max.
While the user needs to specify the time limit t_max in the above two routines, the third routine norm_curv_flow_lim(A,P) continues computing the normalized numerical curvature flow until a numerical flow limit is reached. This limit is determined by the parameter lim_tolerance. The details for this numerical limit are explained in the introductory part of Section 2. This routine returns a list of length two: the limiting weighting scheme as a NumPy array followed by the numerical convergence time. Since it may happen that a normalized numerical flow does not converge at all (even though we are not aware of any such example), the parameter t_lim provides an upper time limit beyond which the routine will not continue. The parameters stoch_corr and norm_tolerance play the same role as in the routine norm_curv_flow.

5.5. Curvature Computation Routines

The functions in this section calculate Bakry–Émery curvatures and curvature upper bounds of graphs with given weighting schemes at all vertices.
  • curvatures(A, P, N=inf, onesps=[], q=None);
  • calc_curvatures(A, P_list, N=inf, k=1);
  • K_inf(A, P);
  • calc_curv_upper_bound(A, P_list, N=inf, k=1).
The routine curvatures(A,P) computes, for a weighted graph ( G , P ) with G = ( V , E ) and represented by (A,P), the curvatures of all vertices for dimension N = and returns them as a list of length | V | . If users are interested in curvatures for other dimensions, they need to change the parameter N=inf. There are two other inputs that can speed up the curvature calculations: if the number q of vertices in V is given, it can be specified to avoid its repeated recalculation, for example, during a curvature flow process. Similarly, if onespheres(A) has already been calculated earlier, this information can be communicated to the routine via the input variable onesps.
After a curvature flow computation with corresponding list P_list of consecutive weighting schemes, the routine calc_curvatures(A,P_list) computes the corresponding evolution of vertex curvatures by calling curvatures(A,P_list[j]) and returns it as a list of lists. Here, the j-th inner list contains the curvature evolution of the j-th vertex of the graph G = ( V , E ) represented by A. The dimension parameter N=inf plays the same role as before. calc_curvatures computes curvatures only of each k-th weighting scheme provided by P_list. Where appropriate, this can help to reduce computation time.
The routine K_inf(A,P) was already discussed in the previous subsection and provides a list of upper curvature bounds for all vertices of the weighted graph ( G , P ) represented by (A,P).
calc_curv_upper_bound is completely analogous to calc_curvatures, but it calls K_inf instead of curvatures.

5.6. Display Routines

The main display routines for users are the evolution of curvatures at various vertices during the curvature flow, the evolution of transition rates of edges emanating from vertices, and the display of individual weighted graphs with vertices arranged in a circle. The relevant routines are the following:
  • display_curvatures(curv, dt=0.3, is_Markovian=True, N=inf, k=1,
    curv_bound=[], vertex_list=[]);
  • display_trans_rates(A, P_list, dt=0.3, vertex_list=[]);
  • display_weighted_graph(A, P, title=None, threshold=10**(-3),
    display_options=[10, True, 2, []], laziness=False).
Given the evolution of vertex curvatures during a curvature flow process via a list of lists, where the j-th inner list is the curvature evolution of the j-th vertex, display_curvatures(curv) displays the curvature evolution for each consecutive vertex separately, as illustated, for example, in Figure 3. If this information should be only given for specific vertices, this can be specified by the input parameter vertex_list. The time step dt=0.3 and the value of k together determine the labeling of the horizontal time axis. For the role of k, we refer readers to our explanation about the routine calc_curvatures. Upper curvature bounds can be inserted into the displays by the input parameter curv_bound, which needs to be given in the same format as the vertex curvatures. Constant lower and upper curvature bounds 1 and 2 are plotted alongside if the Boolean is_Markovian is chosen to be True and if the dimension parameter N is 2 . These bounds appear, for example, in the illustrations given in Figure 3.
Given the evolution of weighting schemes during a curvature flow process on a graph with adjacency matrix A by a list P_list of NumPy arrays, display_trans_rates(A,P_list) displays the evolution of transition rates of emanating edges for each consecutive vertex separately, as illustrated, for example, in Figure 2. The input parameters dt and vertex_list play the same role as in the previous routine.
Finally, there is the routine display_graph(A,P) with input parameters A and P representing a weighted graph ( G , P ) . This routine produces a MatPlotLib plot of this weighted graph, with the vertices arranged counter-clockwise in a circle. The plot uses the following convention to illustrate different types of edges:
  • Green, solid lines represent numerically non-degenerate edges, that is { x , y } E with both p x y , p y x  threshold;
  • Red, dashed lines with an arrow represent numerically degenerate edges, that is, { x , y } E with exactly one of p x y and p y x strictly less than threshold;
  • Black, dotted lines represent edges with numerically vanishing transition rates in both directions, that is { x , y } E with both p x y , p y x strictly less than threshold.
Users can add a title to the display by specifying the input parameter title. For Markovian weighted graphs with non-vanishing laziness, the option laziness=True labels each vertex with its corresponding laziness.
The input parameter display_options of the display_graph routine remains to be discussed. This parameter is a list of four entries. The first entry determines the size of the plot. Usually, the transition rates are printed above the edges, but if the second entry is chosen to be False, this information about the transition rates is omitted. Otherwise, the transition rates are given to a number of decimal places determined by the third entry. The default positions of these transition rates are 1 6 of the way along the edges, with the number closest to the vertex x in the edge ( x , y ) being p x y , but this can be altered manually to avoid overlapping by specification in the fourth entry of display_options. For example, if one wishes the p 45 label to be moved to a position 1 4 of the way from vertex 4 to vertex 5 and the p 62 label to be moved to a position 1 5 of the way from vertex 6 to vertex 2, this fourth entry should be chosen to be [[4, 5, 1/4, 1/6], [6, 2, 1/5, 1/6]].
This completes the description of the functions and routines in the accompanying Python program to this article.

Author Contributions

All authors of this paper contributed equally to the project, with the exception of the Python code, which was generated by B.S. funded by an LMS Undergraduate Research Bursary. All authors have read and agreed to the published version of the manuscript.

Funding

Shiping Liu is supported by the National Key R and D Program of China 2020YFA0713100 and the National Natural Science Foundation of China (No. 12031017). We would like to thank the London Mathematical Society for their support of Ben Snodgrass via the Undergraduate Research Bursary URB-2021-02, during which the curvature flow was implemented and which lead to many of the research results presented in this paper. David Cushing is supported by the Leverhulme Trust Research Project Grant number RPG-2021-080. Supanat Kamtue is supported by Shuimu Scholar Program of Tsinghua University No. 2022660219.

Data Availability Statement

All numerical results in this paper can be reproduced via the freely accessible Python programme. We did not store this data but generated it on the fly.

Acknowledgments

Florentin Münch expresses his gratitude for Durham University and the University of Newcastle for their hospitality and support during his UK research visit. We would also like to express our gratitude for various useful and constructive suggestions by the referees which improved the presentation of our paper.

Conflicts of Interest

The authors declare no conflict of interest.

References

  1. Cushing, D.; Kamtue, S.; Liu, S.; Münch, F.; Peyerimhoff, N.; Snodgrass, H.B. Bakry-Émery curvature sharpness and curvature flow in finite weighted graphs. I. Theory. arXiv 2022, arXiv:2204.10064. [Google Scholar]
  2. Cushing, D.; Kamtue, S.; Liu, S.; Münch, F.; Peyerimhoff, N.; Snodgrass, H.B. Bakry-Émery curvature sharpness and curvature flow in finite weighted graphs. II. Implementation. arXiv 2022, arXiv:arxiv.2212.12401. [Google Scholar]
  3. Gallot, S.; Hulin, D.; Lafontaine, J. Riemannian Geometry, 3rd ed.; Springer: Berlin/Heidelberg, Germany, 2004. [Google Scholar]
  4. Bakry, D.; Émery, M. Hypercontractivité de semi-groupes de diffusion. C. R. Acad. Sci. Paris Sér. I Math. 1984, 299, 775–778. [Google Scholar]
  5. Elworthy, K.D. Manifolds and graphs with mostly positive curvatures. In Stochastic Analysis and Applications (Lisbon, 1989); Progress in Probability; Birkhäuser Boston: Boston, MA, USA, 1991; Volume 26, pp. 96–110. [Google Scholar]
  6. Schmuckenschläger, M. Curvature of nonlocal Markov generators. In Convex Geometric Analysis (Berkeley, CA, 1996); Mathematical Sciences Research Institute Publications; Cambridge University Press: Cambridge, MA, USA, 1999; Volume 34, pp. 189–197. [Google Scholar]
  7. Lin, Y.; Yau, S.T. Ricci curvature and eigenvalue estimate on locally finite graphs. Math. Res. Lett. 2010, 17, 343–356. [Google Scholar] [CrossRef] [Green Version]
  8. Bauer, F.; Chung, F.; Lin, Y.; Liu, Y. Curvature aspects of graphs. Proc. Am. Math. Soc. 2017, 145, 2033–2042. [Google Scholar] [CrossRef]
  9. Chung, F.; Lin, Y.; Yau, S.T. Harnack inequalities for graphs with non-negative Ricci curvature. J. Math. Anal. Appl. 2014, 415, 25–32. [Google Scholar] [CrossRef]
  10. Fathi, Z.; Lakzian, S. Bakry-Émery Ricci curvature bounds for doubly warped products of weighted spaces. J. Geom. Anal. 2022, 32, 75. [Google Scholar] [CrossRef] [PubMed]
  11. Fathi, M.; Shu, Y. Curvature and transport inequalities for Markov chains in discrete spaces. Bernoulli 2018, 24, 672–698. [Google Scholar] [CrossRef] [Green Version]
  12. Hua, B.; Lin, Y. Graphs with large girth and nonnegative curvature dimension condition. Comm. Anal. Geom. 2019, 27, 619–638. [Google Scholar] [CrossRef] [Green Version]
  13. Ma, L. Bochner formula and Bernstein type estimates on locally finite graphs. arXiv 2013, arXiv:1304.0290. [Google Scholar]
  14. Man, S. Logarithmic Harnack inequalities for general graphs with positive Ricci curvature. Differ. Geom. Appl. 2015, 38, 33–40. [Google Scholar] [CrossRef]
  15. Pouryahya, M.; Elkin, R.; Sandhu, R.; Tannenbaum, S.; Georgiou, T.; Tannenbaum, A. Bakry-Émery Ricci curvature on weighted graphs with applications to biological networks. In Proceedings of the International Symposium on Mathematical Theory of Networks and Systems, Bayreuth, Germany, 12–15 July 2016; Volume 22, p. 52. [Google Scholar]
  16. Robertson, S.J. Harnack Inequality for Magnetic Graphs. arXiv 2019, arXiv:1910.04019. [Google Scholar]
  17. Salez, J. Sparse expanders have negative curvature. arXiv 2021, arXiv:2101.08242. [Google Scholar] [CrossRef]
  18. Salez, J. Cutoff for non-negatively curved Markov chains. arXiv 2021, arXiv:2102.05597. [Google Scholar] [CrossRef]
  19. Shi, Y.; Yu, C. Comparisons of Dirichlet, Neumann and Laplacian eigenvalues on graphs and applications. arXiv 2020, arXiv:2011.04160. [Google Scholar]
  20. Cushing, D.; Liu, S.; Peyerimhoff, N. Bakry-Émery curvature functions on graphs. Can. J. Math. 2020, 72, 89–143. [Google Scholar] [CrossRef] [Green Version]
  21. Klartag, B.; Kozma, G.; Ralli, P.; Tetali, P. Discrete curvature and abelian groups. Can. J. Math. 2016, 68, 655–674. [Google Scholar] [CrossRef] [Green Version]
  22. Siconolfi, V. Coxeter groups, graphs and Ricci curvature. Sém. Lothar. Combin. 2020, 84B, 67. [Google Scholar]
  23. Siconolfi, V. Ricci curvature, graphs and eigenvalues. Linear Algebra Appl. 2021, 620, 242–267. [Google Scholar] [CrossRef]
  24. Cushing, D.; Kamtue, S.; Liu, S.; Peyerimhoff, N. Bakry-Émery curvature on graphs as an eigenvalue problem. Calc. Var. Partial Differential Equations 2022, 61, 62. [Google Scholar] [CrossRef]
  25. Chow, B.; Luo, F. Combinatorial Ricci flows on surfaces. J. Differ. Geom. 2003, 63, 97–129. [Google Scholar] [CrossRef]
  26. Ollivier, Y. Ricci curvature of Markov chains on metric spaces. J. Funct. Anal. 2009, 256, 810–864. [Google Scholar] [CrossRef] [Green Version]
  27. Ollivier, Y. A survey of Ricci curvature for metric spaces and Markov chains. In Probabilistic Approach to Geometry; Advanced Studies in Pure Mathematics; Mathematical Society of Japan: Tokyo, Japan, 2010; Volume 57, pp. 343–381. [Google Scholar] [CrossRef]
  28. Ni, C.C.; Lin, Y.Y.; Luo, F.; Gao, J. Community detection on networks with Ricci flow. Sci. Rep. 2019, 9, 9984. [Google Scholar] [CrossRef] [Green Version]
  29. Bai, S.; Lin, Y.; Lu, L.; Wang, Z.; Yau, S.T. Ollivier Ricci-flow on weighted graphs. arXiv 2020, arXiv:2010.01802. [Google Scholar]
  30. Weber, M.; Saucan, E.; Jost, J. Characterizing complex networks with Forman-Ricci curvature and associated geometric flows. J. Complex Netw. 2017, 5, 527–550. [Google Scholar] [CrossRef]
  31. Forman, R. Bochner’s method for cell complexes and combinatorial Ricci curvature. Discret. Comput. Geom. 2003, 29, 323–374. [Google Scholar] [CrossRef]
  32. Topping, J.; Di Giovanni, F.; Chamberlain, B.P.; Dong, X.; Bronstein, M.M. Understanding over-squashing and bottlenecks on graphs via curvature. arXiv 2021, arXiv:2111.14522. [Google Scholar]
  33. Bober, J.; Monod, A.; Saucan, E.; Webster, K.N. Rewiring Networks for Graph Neural Network Training Using Discrete Geometry. arXiv 2022, arXiv:2207.08026. [Google Scholar]
  34. Erbar, M.; Maas, J. Ricci curvature of finite Markov chains via convexity of the entropy. Arch. Ration. Mech. Anal. 2012, 206, 997–1038. [Google Scholar] [CrossRef]
  35. Erbar, M.; Kopfer, E. Super Ricci flows for weighted graphs. J. Funct. Anal. 2020, 279, 108607. [Google Scholar] [CrossRef]
  36. Devriendt, K.; Lambiotte, R. Discrete curvature on graphs from the effective resistance. arXiv 2022, arXiv:2201.06385. [Google Scholar] [CrossRef]
  37. Erdos, P.; Rényi, A. On random graphs. I. Publ. Math. Debrecen 1959, 6, 290–297. [Google Scholar] [CrossRef]
  38. Pak, I. Lectures on Discrete and Polyhedral Geometry. 2010. Available online: https://www.math.ucla.edu/~pak/geompol8.pdf (accessed on 6 June 2023).
  39. Hirsch, M.W.; Smale, S. Differential Equations, Dynamical Systems, and Linear Algebra; Pure and Applied Mathematics; Academic Press: New York, NY, USA; Harcourt Brace Jovanovich, Publishers: London, UK, 1974; Volume 60. [Google Scholar]
  40. Cushing, D.; Kangaslampi, R.; Lipiäinen, V.; Liu, S.; Stagg, G.W. The Graph Curvature Calculator and the Curvatures of Cubic Graphs. Exp. Math. 2022, 31, 583–595. [Google Scholar] [CrossRef] [Green Version]
Figure 1. Curvature flow of a random graph with 10 vertices with initial weighting scheme P 0 (left-hand side) and final weighting scheme P ( t max ) (right-hand side).
Figure 1. Curvature flow of a random graph with 10 vertices with initial weighting scheme P 0 (left-hand side) and final weighting scheme P ( t max ) (right-hand side).
Axioms 12 00577 g001
Figure 2. Transition rates of vertices v 3 and v 8 of a random graph with 10 vertices under the curvature flow.
Figure 2. Transition rates of vertices v 3 and v 8 of a random graph with 10 vertices under the curvature flow.
Axioms 12 00577 g002
Figure 3. Curvatures (blue) and upper curvature bounds (orange) of vertices v 1 and v 9 of a random graph with 10 vertices for the dimension under the curvature flow.
Figure 3. Curvatures (blue) and upper curvature bounds (orange) of vertices v 1 and v 9 of a random graph with 10 vertices for the dimension under the curvature flow.
Axioms 12 00577 g003
Figure 4. Examplesof numerical curvature flow limits of a path and of a cycle of length 12.
Figure 4. Examplesof numerical curvature flow limits of a path and of a cycle of length 12.
Axioms 12 00577 g004
Figure 5. Curvature flow of a complete graph with six vertices with degenerate initial weighting scheme P 0 (left-hand side) and numerical flow limit P ( t max ) , the simple random walk (right-hand side).
Figure 5. Curvature flow of a complete graph with six vertices with degenerate initial weighting scheme P 0 (left-hand side) and numerical flow limit P ( t max ) , the simple random walk (right-hand side).
Axioms 12 00577 g005
Figure 6. Transition rates of vertices v 2 and v 5 of a complete graph with six vertices under the curvature flow.
Figure 6. Transition rates of vertices v 2 and v 5 of a complete graph with six vertices under the curvature flow.
Axioms 12 00577 g006
Figure 7. A wedge sum of a K 4 , K 5 , K 2 and a K 3 .
Figure 7. A wedge sum of a K 4 , K 5 , K 2 and a K 3 .
Axioms 12 00577 g007
Figure 8. Initial weighting scheme (left) and numerical flow limit a simple random walk on K 3 (right).
Figure 8. Initial weighting scheme (left) and numerical flow limit a simple random walk on K 3 (right).
Axioms 12 00577 g008
Figure 9. Initial weighting scheme (left) and numerical flow limit a simple random walk on K 4 (right).
Figure 9. Initial weighting scheme (left) and numerical flow limit a simple random walk on K 4 (right).
Axioms 12 00577 g009
Figure 10. Initial weighting scheme (left) and numerical flow limit a simple random walk on K 5 (right).
Figure 10. Initial weighting scheme (left) and numerical flow limit a simple random walk on K 5 (right).
Axioms 12 00577 g010
Figure 11. Curvature flow of a dumbbell as a wedge sum of a K 5 , K 2 and another K 5 with simple random walk initial weighting scheme P 0 (left-hand side) and numerical flow limit concentrated on K 2 (right-hand side).
Figure 11. Curvature flow of a dumbbell as a wedge sum of a K 5 , K 2 and another K 5 with simple random walk initial weighting scheme P 0 (left-hand side) and numerical flow limit concentrated on K 2 (right-hand side).
Axioms 12 00577 g011
Figure 12. Left-hand side: An octahedron with vertices v 0 , , v 5 . Right-hand side: A numerical flow limit of the octahedron with a small perturbation of simple random walk as initial weighing scheme.
Figure 12. Left-hand side: An octahedron with vertices v 0 , , v 5 . Right-hand side: A numerical flow limit of the octahedron with a small perturbation of simple random walk as initial weighing scheme.
Axioms 12 00577 g012
Table 1. Vertex curvatures for the dimension of a random graph with 10 vertices at the beginning and the end of the curvature flow.
Table 1. Vertex curvatures for the dimension of a random graph with 10 vertices at the beginning and the end of the curvature flow.
j K P ( 0 ) , ( v j ) K P ( t max ) , ( v j )
0 0.406 0.875
1 0.293 0.875
2 0.168 0.125
3 0.346 0.875
4 0.34 0
5 0.527 0.476
6 0.404 0.875
7 0.202 0.773
8 0.246 0.11
9 0.236 0.125
Table 2. Statistics of flow limit concentrations on the complete subgraphs K 4 , K 5 , K 2 and K 3 of their wedge sum, together with mean convergence times.
Table 2. Statistics of flow limit concentrations on the complete subgraphs K 4 , K 5 , K 2 and K 3 of their wedge sum, together with mean convergence times.
K 4 K 5 K 2 K 3
concentration of flow limits 8.7 % 80.5 % 0 % 10.8 %
mean convergence time 18.9 24.7 17.7
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Cushing, D.; Kamtue, S.; Liu, S.; Münch, F.; Peyerimhoff, N.; Snodgrass, B. Bakry–Émery Curvature Sharpness and Curvature Flow in Finite Weighted Graphs: Implementation. Axioms 2023, 12, 577. https://doi.org/10.3390/axioms12060577

AMA Style

Cushing D, Kamtue S, Liu S, Münch F, Peyerimhoff N, Snodgrass B. Bakry–Émery Curvature Sharpness and Curvature Flow in Finite Weighted Graphs: Implementation. Axioms. 2023; 12(6):577. https://doi.org/10.3390/axioms12060577

Chicago/Turabian Style

Cushing, David, Supanat Kamtue, Shiping Liu, Florentin Münch, Norbert Peyerimhoff, and Ben Snodgrass. 2023. "Bakry–Émery Curvature Sharpness and Curvature Flow in Finite Weighted Graphs: Implementation" Axioms 12, no. 6: 577. https://doi.org/10.3390/axioms12060577

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop