---
title: Discrete Ricci Flow Algorithms
url: https://www.emergentmind.com/topics/discrete-ricci-flow-algorithm
type: topic
---

# Discrete Ricci Flow Algorithms

A discrete Ricci flow algorithm is a discrete analogue of Ricci flow in which the evolving object is not a smooth Riemannian metric tensor on a continuum manifold, but a finite set of geometric variables such as Kähler potentials in a fixed class, circle-packing or discrete conformal factors on a triangulated surface, edge lengths on a simplicial or piecewise-flat complex, or edge weights on a weighted graph. In current usage, the term therefore denotes a family of algorithms rather than a single construction. Representative instances include the Ricci iteration toward Kähler–Einstein or cscK metrics, unified surface Ricci flow on triangular meshes, Regge–Ricci and piecewise-flat flows in three dimensions, and Ollivier- or LLY-based flows on weighted graphs [1705.06253, 2311.15524, 1401.0401, 1302.0804, 2010.01802].

## 1. Scope, variables, and discrete geometric data

The defining feature across these algorithms is that curvature is represented by finite-dimensional data and used to update finite-dimensional metric variables. On compact Kähler manifolds, one works in the space of smooth Kähler potentials
$$
\mathcal H := \{\varphi \in C^\infty(M): \omega_\varphi := \omega_0 + i\partial\bar\partial \varphi > 0\},
$$
with Ricci form, scalar curvature, and Mabuchi-type functionals driving an implicit discrete evolution [2311.15524]. On triangulated surfaces, the state variable is typically a discrete conformal factor $u_i$ at each vertex, with edge lengths reconstructed from $u_i$, background geometry, and scheme parameters $(\varepsilon,\eta)$ [1401.0401]. On piecewise-flat manifolds, the state variables are primal edge lengths $\{\ell_i\}$, and curvature is concentrated on codimension-$2$ hinges through deficit angles [1302.0804, 1603.03113]. On graphs, the state is a positive edge-weight function $w:E\to(0,\infty)$, and curvature is computed edgewise from optimal transport or related discrete curvature notions [1809.00320, 2505.15395].

The update rule depends on the setting. In graph formulations inspired by Ollivier, the continuous prototype is
$$
\frac{d}{dt}\ell_{uv}(t)=-\kappa(u,v;t)\,\ell_{uv}(t),
$$
or its discrete version
$$
\ell_{uv}^{(t+1)}=\ell_{uv}^{(t)}(1-\eta\,\kappa(u,v;t)),
$$
possibly followed by normalization [2509.22362]. In Kähler geometry, the discrete step is typically an implicit Euler scheme for a geometric flow, so the new metric appears inside the Ricci term itself [2311.15524, 1705.06253]. In simplicial Regge-type constructions, the update is an ODE for edge lengths or dual-edge lengths expressed through discrete Ricci tensors averaged over hybrid volumes [1302.0804]. This diversity is fundamental: the phrase “discrete Ricci flow” does not identify a unique discretization, a unique curvature, or a unique target geometry.

A recurrent misconception is to treat graph Ricci flow, simplicial Regge–Ricci flow, and Kähler Ricci iteration as interchangeable. They are not. Graph algorithms evolve weighted shortest-path geometries and neighborhood transport data; simplicial algorithms evolve piecewise-flat metrics through deficit angles and dual cells; Kähler algorithms evolve metrics inside a fixed Kähler class through complex Monge–Ampère equations. The common thread is curvature-driven metric deformation, not a shared numerical representation.

## 2. Ricci iteration in Kähler geometry

In the Kähler setting, a discrete Ricci flow algorithm is often a backward Euler discretization of a continuous parabolic flow. For the pseudo-Calabi flow, the intrinsic flow is
$$
\partial_t\omega_t=-\operatorname{Ric}(\omega_t)+HRic(\omega_t),
$$
where $HRic(\omega_t)$ is the harmonic projection of $\operatorname{Ric}(\omega_t)$ with respect to $\omega_t$. Rubinstein’s discretization studied by Zhang is
$$
\frac{\omega_{i+1}-\omega_i}{\tau}=-\operatorname{Ric}(\omega_{i+1})+HRic(\omega_{i+1}),
$$
with fixed step size $\tau>0$ [2311.15524]. Taking trace with respect to $\omega_{i+1}$ yields the twisted cscK equation
$$
s_{\omega_{i+1}}=\hat s+\frac{\operatorname{tr}_{\omega_{i+1}}(\omega_i)-n}{\tau},
$$
so constant scalar curvature metrics are fixed points.

At the potential level, if $\omega_i=\omega_0+i\partial\bar\partial u_i$ and
$$
(\omega_0+i\partial\bar\partial u_i)^n=e^{F_i}\omega_0^n,
$$
then each step solves the coupled elliptic system
$$
(\omega_0+i\partial\partialbar u_{i+1})^n=e^{F_{i+1}}\omega_0^n,
$$
$$
\Delta_{\omega_{i+1}}\!\Big(F_{i+1}+\frac{u_i}{\tau}\Big)
=\operatorname{tr}_{\omega_{i+1}}\!\Big(\operatorname{Ric}(\omega_0)-\frac{\omega_0}{\tau}\Big)+\frac{n}{\tau}-\hat s,
$$
with normalization such as $E_{\omega_0}(u_{i+1})=0$ or $\int_M u_{i+1}\omega_0^n=0$ [2311.15524]. This realizes each iteration step as a complex Monge–Ampère/Laplace solve rather than an explicit curvature descent.

The principal structural results are existence, monotonicity, and convergence. There exists $\tau_0\in(0,\infty]$, depending only on $M$ and $[\omega_0]$, such that for any $\tau\in(0,\tau_0)$ the Ricci iteration has a unique solution at each step, and one can take $\tau_0=\infty$ when the K-energy is bounded from below. Along the iteration,
$$
K_{\omega_0}(\omega_{i+1})\le K_{\omega_0}(\omega_i),
$$
with equality at some step iff the sequence is stationary and $\omega_0$ is cscK. If $[\omega_0]$ admits a cscK metric, then for any $\tau>0$ there exist biholomorphisms $g_i\in\operatorname{Aut}^0(M,J)$ such that $g_i^*\omega_i\to\omega_*$ smoothly, where $\omega_*$ is cscK; in the unique cscK case, convergence is smooth without composing by automorphisms [2311.15524].

In the Fano case, Darvas and Rubinstein analyze the Kähler–Ricci iteration
$$
\frac{\omega_{(k+1)\tau}-\omega_{k\tau}}{\tau}
=-\operatorname{Ric}(\omega_{(k+1)\tau})+\mu\,\omega_{(k+1)\tau},
$$
which for $\tau=1$ becomes the inverse Ricci step
$$
\operatorname{Ric}(\omega_{k+1})=\omega_k.
$$
In potentials, the Fano $\tau$-iteration is
$$
\omega_{\varphi_{k+1}^\tau}^n
=e^{\,f_\omega-\varphi_k^\tau-(1-\tau)\varphi_{k+1}^\tau}\,\omega^n,
$$
and the paper proves smooth convergence modulo holomorphic automorphisms to a Kähler–Einstein metric whenever one exists [1705.06253]. The cscK algorithm in arbitrary Kähler classes and the KE iteration in $c_1(M)$ are thus closely related, but they target different fixed-point equations.

## 3. Triangulated surfaces and discrete conformal flows

For triangulated surfaces, a major line of work formulates discrete Ricci flow as an evolution of vertex-based conformal factors. In the unified framework of surface Ricci flow, a discrete surface is a triangular mesh $\Sigma=(V,E,F)$ in background geometry $G\in\{\mathbb R^2,\mathbb H^2,\mathbb S^2\}$. Each vertex carries a circle radius $\gamma_i$ and a scheme coefficient $\varepsilon_i\in\{+1,0,-1\}$, each edge carries a conformal-structure coefficient $\eta_{ij}\ge 0$, and the optimization variables are
$$
u_i=\log\gamma_i \quad\text{(Euclidean)},\qquad
u_i=\log\tanh(\gamma_i/2)\quad\text{(hyperbolic)},\qquad
u_i=\log\tan(\gamma_i/2)\quad\text{(spherical)}.
$$
This single parameterization covers Thurston’s circle packing, tangential circle packing, inversive distance circle packing, discrete Yamabe flow, virtual radius circle packing, and mixed-type schemes [1401.0401].

The discrete Gauss curvature at a vertex is
$$
K_i=2\pi-\sum_{f\ni i}\alpha_i^f,
$$
with $\pi$ replacing $2\pi$ for boundary vertices. The mesh Ricci energy is
$$
E_\Sigma(u_1,\ldots,u_n)=\int^{(u_1,\ldots,u_n)}\sum_{i=1}^n (K_i^*-K_i(u))\,du_i,
$$
and its gradient satisfies
$$
\frac{\partial E_\Sigma}{\partial u_i}=K_i(u)-K_i^*.
$$
Accordingly, the Ricci flow is the negative gradient flow
$$
\dot u_i=K_i^*-K_i(u),
$$
while Newton iteration uses
$$
\Delta u=-H^{-1}(K-K^*),
$$
with Hessian assembled either from face Hessians or, in Euclidean power-Delaunay settings, from dual-edge weights [1401.0401].

Convexity properties depend on the background geometry. In the Euclidean setting, the Ricci energy is convex on the subspace $\sum_i u_i=0$ for power-Delaunay meshes, and the Hessian is SPD there. In the hyperbolic setting, the Hessian is SPD on all $u$. In the spherical setting, the energy is generally not convex, and the practical approach stated in the paper is to compute in Euclidean background and stereographically project to the sphere [1401.0401]. This nonconvexity is one of the recurring caveats in discrete surface Ricci flow.

A hyperbolic variant replaces classical angle-deficit curvature by an area-normalized curvature. For a circle-packing metric $r:V\to(0,\infty)$ with edge lengths determined by
$$
\cosh l_{ij}=\cosh r_i\,\cosh r_j+\sinh r_i\,\sinh r_j\,\cos\Phi_{ij},
$$
the normalized discrete Gaussian curvature is
$$
R_i=\frac{K_i}{A_i},\qquad
A_i=2\pi(\cosh r_i-1)=4\pi\sinh^2(r_i/2).
$$
Using the coordinate
$$
u_i=\log\tanh(r_i/2),
$$
the normalized discrete Ricci flow is
$$
\frac{du_i}{dt}=-R_i(u)=-\frac{K_i(u)}{A_i(u)}.
$$
The paper proves that a zero-curvature circle-packing metric exists if and only if the normalized discrete Ricci flow converges, and that the flow converges if the initial curvatures are all negative [1505.05076].

A different surface algorithm appears for discrete surfaces of revolution. There the discrete metric on each rotationally symmetric face is
$$
g_{11}=(f(n+1)-f(n))^2\cos^2\frac{\pi}{l}+(h(n+1)-h(n))^2,\qquad
g_{22}=(f(n+1)+f(n))^2\sin^2\frac{\pi}{l},
$$
and the normalized discrete Ricci flow is
$$
\frac{\partial}{\partial t}g_{11}(n,t)=(r(t)-2K(n,t))g_{11}(n,t),\qquad
\frac{\partial}{\partial t}g_{22}(n,t)=(r(t)-2K(n,t))g_{22}(n,t),
$$
with
$$
r(t)=\frac{\sum_{0\le i\le k-1}2K(i,t)A(x)(i,t)}{\sum_{0\le i\le k-1}A(x)(i,t)}.
$$
The total area $\sum_i A(x)(i,t)$ is constant in $t$, and the numerical flows approach explicitly parametrized discrete constant Gaussian curvature surfaces of revolution [2312.08113].

## 4. Simplicial, piecewise-flat, and surgery-based formulations

In higher-dimensional piecewise-flat geometry, discrete Ricci flow is built from Regge calculus. A simplicial geometry $\mathcal S$ is determined by its edge lengths, curvature is concentrated on hinges $h=\sigma_{d-2}$, and the circumcentric dual lattice $\mathcal S^*$ provides orthogonal dual cells and hybrid volumes. The hinge deficit angle is
$$
\epsilon_h=2\pi-\sum_i\theta_i,
$$
and the sectional curvature associated to a hinge is
$$
K_h=\frac{\epsilon_h}{h^*},
$$
where $h^*$ is the dual polygon area [1302.0804].

The Regge–Ricci flow equation is most naturally written on dual edges:
$$
\frac{1}{\lambda}\frac{\partial\lambda}{\partial t}=-Rc_\lambda.
$$
Tracing this to a primal edge $\ell$ yields
$$
\left\langle \frac{1}{\lambda}\frac{\partial\lambda}{\partial t}\right\rangle_\ell=-Rc_\ell,
$$
with averaging weighted by reduced hybrid volumes. The resulting system is sparse and local, though it requires repeated reconstruction of circumcenters, dual cells, hybrid volumes, and derivatives $\partial\lambda/\partial\ell$ [1302.0804].

A related three-dimensional construction defines discrete scalar, sectional, and Ricci curvatures directly on piecewise-flat triangulations. For Voronoi or barycentric duals,
$$
R_v=\frac{1}{|V_v|}\sum_{h\subset \operatorname{star}(v)} |h|\,\epsilon_h,
$$
and the recommended edge-orthogonal sectional curvature is
$$
K_\ell=\frac{1}{|V_\ell|}\left(|\ell|\,\epsilon_\ell+\sum_h \frac12 |h|\,\cos^2\theta_h\,\epsilon_h\right).
$$
The discrete Ricci curvature along an edge is then
$$
\operatorname{Rc}_\ell=\frac14(R_{v_1}+R_{v_2})-K_\ell,
$$
and the piecewise-flat Ricci flow is
$$
\frac{1}{|\ell|}\frac{d|\ell|}{dt}=-\operatorname{Rc}_\ell,
$$
or, in normalized form,
$$
\frac{1}{|\ell|}\frac{d|\ell|}{dt}=-\operatorname{Rc}_\ell+\frac13\widetilde R_S.
$$
The paper reports convergence to smooth Ricci flow for $S^3$, the $3$-cylinder, Gowdy, and Nil-3 test geometries [1603.03113].

A further specialization to piecewise-linear $3$-geometries diagonalizes the flow through an explicitly constructed Forman-Ricci tensor. The governing edge ODE is
$$
\frac{1}{\ell_e}\frac{d\ell_e}{dt}=-Rc_e=-K_e+\frac12 R_e,
$$
with $R_e$ the average of endpoint scalar curvatures and $K_e$ a discrete sectional curvature assembled from neighboring hinge curvatures and $\cos^2$ weights [1709.08494]. In the axially symmetric neckpinch geometry studied there, cubic-spline-based adaptive mesh redistribution and surgery through a Type-1 neck pinch yield the expected Thurston decomposition into two lobes, each collapsing toward a $3$-sphere geometry. This use of surgery is geometrically closer to Hamilton–Perelman flow than graph thresholding procedures, even though both are sometimes described as “Ricci flow with surgery.”

## 5. Weighted-graph Ricci flow

On graphs, discrete Ricci flow algorithms are built from edgewise curvatures derived from transport between local probability measures. In the undirected weighted-graph formulation used for network alignment, if $G=(V,E)$ has edge weights $w:E\to(0,\infty)$ and weighted shortest-path metric $d$, Ollivier–Ricci curvature on an edge $x$–$y$ is
$$
\kappa^w(x,y)=1-\frac{W_1(m_x^\alpha,m_y^\alpha)}{d(x,y)},
$$
where $m_x^\alpha$ distributes mass $\alpha$ at $x$ and $(1-\alpha)/\deg(x)$ uniformly on neighbors, and $W_1$ is the $1$-Wasserstein distance under the current weighted metric [1809.00320]. The graph Ricci flow update is
$$
w_{i+1}(x,y)=w_i(x,y)-\varepsilon \kappa_i(x,y)w_i(x,y),
$$
followed by renormalization
$$
w_{i+1}(x,y)\leftarrow w_{i+1}(x,y)\cdot \frac{|E|}{\sum_{uv\in E} w_{i+1}(u,v)}.
$$
After convergence, the weighted shortest-path distance under the final weights is the Ricci flow metric $d_{RF}$ [1809.00320].

For community detection, Ni et al. use Ollivier–Ricci curvature with lazy random walk and exponential neighbor weighting,
$$
m_x^{(\alpha,p)}(i)=
\begin{cases}
\alpha,& i=x,\\[2mm]
\dfrac{1-\alpha}{C_x}\exp(-d(x,i)^p),& i\in\pi(x),\\
0,& \text{otherwise},
\end{cases}
$$
and the discrete flow
$$
w_{xy}^{(t+1)}=d^{(t)}(x,y)-\varepsilon\,\kappa_{xy}^{(t)}\,d^{(t)}(x,y),
$$
with renormalization to preserve total edge length. Negatively curved inter-community edges are stretched, positively curved intra-community edges shrink, and “surgery” removes large-weight edges to extract connected components as communities [1907.03993].

The continuous counterpart of normalized Ollivier flow on weighted graphs is
$$
\frac{dw_e}{dt}=-\kappa_e(t)w_e(t)+w_e(t)\sum_{h\in E(G)}\kappa_h(t)w_h(t),
$$
with $\sum_e w_e(t)=1$ preserved for all $t\ge 0$. For connected weighted graphs, positive initial weights summing to $1$, and an injective Lipschitz $\gamma$, the paper proves existence and uniqueness for all $t\in[0,\infty)$ [2010.01802]. On a finite star graph with at least three leaves and $\gamma(w)=1/w$, the normalized flow converges to a constant-weighted star; on paths, leaf edges decrease and internal edges increase, and with edge contraction as surgery any weighted path converges to a path of length $2$ [2010.01802].

A different graph algorithm freezes curvature between surgery events. In the piecewise-linear Ricci curvature flow on weighted graphs, the continuous flow is defined on each interval $[t_{i-1},t_i)$ by
$$
w_e'(t)=-\kappa_e(t_{i-1})\,w_e(t),
$$
so
$$
w_e(t)=w_e(t_{i-1})\exp\!\big(-\kappa_e(t_{i-1})(t-t_{i-1})\big).
$$
At checkpoint times, an $A$-surgery removes edges satisfying
$$
\frac{w_e(t)}{\min_{e'\in E^e} w_{e'}(t)}\ge A.
$$
The framework supports arbitrarily selected homogeneous edge curvatures, including Ollivier, Lin–Lu–Yau, Forman, Menger, and Haantjes; it has global existence and uniqueness; and after the last surgery, each connected component has constant Ricci curvature across its edges [2505.15395]. A key algorithmic distinction is that curvature is recomputed only at initialization and after surgeries, not at every iteration.

For directed weighted graphs, the balancing-factor formulation blends outflow and inflow at each node:
$$
\mathcal P(x,z)=\beta(x)P(x,z)+(1-\beta(x))P'(x,z),
$$
with nodewise $\beta:V\to[0,1]$. Using the directed LLY curvature
$$
\kappa(x,y)=\lim_{\alpha\to 1}\frac{\kappa_\alpha(x,y)}{1-\alpha},
$$
the normalized discrete update is
$$
w_e^{(t+1)}=w_e^{(t)}-s\,w_e^{(t)}\bigl(\kappa_e^{(t)}-\overline\kappa^{(t)}\bigr),\qquad
\overline\kappa^{(t)}=\sum_h \kappa_h^{(t)}w_h^{(t)},
$$
with $\sum_e w_e^{(t)}=1$ preserved. The paper establishes existence and uniqueness for the continuous flow and gives an explicit Euler scheme for numerical computation [2509.19989].

Two further graph variants change the role of the flow rather than its basic transport geometry. In controlled network flow, the closed-loop equation is
$$
\frac{d}{dt}\mu_t(x,y)=\big[-\kappa(x,y)+\psi(\mu_t,\mu^*)\big]\mu_t(x,y),
$$
with Lyapunov-stable feedback
$$
\psi(\mu_t,\mu^*)=\beta_t^2(x,y)\,\delta_t(x,y),\qquad \beta_t^2(x,y)\ge 2,
$$
used to regulate weights toward a target configuration and thereby alter entropy and robustness [1910.04560]. In Ricci-Filtration for retrieval-augmented generation, the graph nodes are a query and retrieved chunks, all present edges are initialized with $w^{(0)}_{ij}=1$, normalized discrete Ricci flow is run for $M$ iterations, and a chunk $j$ is kept iff
$$
w_{qj}^{(M)}\le \eta,
$$
with default $\eta=1$ on the mean-normalized scale [2606.15482].

## 6. Fixed points, convergence mechanisms, and applications

Across these constructions, fixed points are curvature-balanced states, but the meaning of “balanced” varies sharply. In Kähler geometry, fixed points are cscK or Kähler–Einstein metrics, and convergence is expressed in smooth topology, often modulo automorphisms [2311.15524, 1705.06253]. In triangulated-surface algorithms, the target is prescribed discrete Gauss curvature, typically constant, with convex Ricci energies and SPD Hessians providing rapid Newton convergence in Euclidean or hyperbolic regimes [1401.0401, 1505.05076]. In simplicial and piecewise-flat three-dimensional algorithms, the target is a piecewise-flat metric whose edgewise Ricci data approximate smooth Einstein or uniform-curvature behavior, with surgery used to pass singularities such as neckpinches [1709.08494, 1603.03113]. On graphs, equilibrium can mean uniformized curvature, constant curvature on each connected component after surgeries, or a task-dependent weight separation that reveals communities or stabilizes distances [1809.00320, 2505.15395].

The main convergence mechanisms are likewise heterogeneous. Kähler iterations are governed by monotonicity of the Mabuchi K-energy or Ding functional and by elliptic regularity [2311.15524, 1705.06253]. Unified surface Ricci flow is governed by convexity of discrete Ricci energy and Hessian symmetry [1401.0401]. Controlled graph flow uses Lyapunov functions, while normalized Ollivier flow on weighted graphs uses ODE well-posedness on the positive simplex [1910.04560, 2010.01802]. Piecewise-linear graph flow uses homogeneity plus finite surgery to force constant curvature within each component after the last surgery [2505.15395]. This suggests that “discrete Ricci flow algorithm” should be understood less as a single numerical method than as a design pattern in which curvature determines a local metric update and a problem-specific functional, normalization, or surgery rule determines long-time behavior.

The application landscape is correspondingly broad. Weighted-graph Ricci flow has been used to define a robust Ricci flow metric for network alignment, with landmark-based coordinates and matching by Hungarian or greedy solvers [1809.00320]. Geometric community detection uses thresholding of stretched edges after graph Ricci flow [1907.03993, 2505.15395]. In representation learning, one paper does not run an explicit curvature flow on graphs; rather, it evaluates whether neural feature graphs evolve like a Ricci flow through local Ricci evolution coefficients $\rho(i)$ and layer coefficients $\rho(\ell)$ [2509.22362]. In retrieval-augmented generation, Ricci-Filtration uses normalized discrete Ricci flow to remove noisy chunks before reranking [2606.15482]. In complex differential geometry, Ricci iteration provides a discrete route to cscK and Kähler–Einstein metrics, including a new method of uniformization of the Riemann sphere [2311.15524, 1705.06253].

Several recurring caveats are explicit in the literature. The long-time existence of the pseudo-Calabi flow itself is still an open question, whereas the corresponding Ricci iteration exists for all steps and decreases K-energy [2311.15524]. In the unified surface theory, spherical background energy is generally not convex [1401.0401]. In graph settings, some algorithms recompute curvature at every iteration, while others obtain efficiency by event-driven caching and recomputation only after surgery [1809.00320, 2505.15395]. These are not superficial implementation choices; they encode different mathematical models of what it means to discretize Ricci flow.

Source: https://www.emergentmind.com/topics/discrete-ricci-flow-algorithm