# 4.7 Curvature

In ordinary plane geometry, the area of a circle is πr2. But if the circle is drawn on the surface of a sphere of radius a, the area of the spherical region enclosed by the circle is instead: In other words, curvature in the underlying space introduces a correction to the growth rate for the area of the circle as a function of radius. And in general there is a similar correction for the volume of a d-dimensional ball in a curved space (e.g. [1:p1050]) where here R is the Ricci scalar curvature of the space . (For example, for the d-dimensional surface of a (d+1)-dimensional sphere of radius a, .)

Now consider the sequence of “sphere” graphs:

Table[GraphPlot3D[ ResourceFunction["BuckyballGraph"][n, VertexCoordinates -> "Embedded"], ImageSize -> 28 n, PlotTheme -> "LargeGraph", BaseStyle -> {Graphics3DBoxOptions -> {Method -> {"ShrinkWrap" -> True}}}, VertexStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["SpatialGraph", "VertexStyle"], EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["SpatialGraph", "EdgeLineStyle"] ], {n, 6}]

We can compute Vr for each of these graphs. Here are the log differences Δ(r) (the error bars come from the different neighborhoods associated with hexagonal and pentagonal “faces” in the graph):

HypergraphDimensionEstimateList[hg_] := ResourceFunction["LogDifferences"][ MeanAround /@ Transpose[ Values[ResourceFunction["HypergraphNeighborhoodVolumes"][hg, All, Automatic]]]]; ListLinePlot[ Table[HypergraphDimensionEstimateList[ List @@@ EdgeList[ ResourceFunction["BuckyballGraph"][n, VertexCoordinates -> "Embedded"]]], {n, 1, 8}], Frame -> True, PlotRange -> {0, Automatic}, IntervalMarkers -> "Bars", PlotStyle -> ResourceFunction["WolframPhysicsProjectStyleData"][ "GenericLinePlot", "PlotStyles"]]

We immediately see the effect of curvature: even though in the limit the graphs effectively define 2D surfaces, the presence of curvature introduces a negative correction to pure r2 growth in Vr. (Somewhat confusingly, there is only one scale defined for the kind of “pure sphere” graphs shown here, so they all have the same curvature, independent of size.)

A torus, unlike a sphere, has no intrinsic surface curvature. So torus graphs of the form

Graph3D[ResourceFunction["TorusGraph"][{30, 30}], BaseStyle -> {Graphics3DBoxOptions -> {Method -> {"ShrinkWrap" -> True}}}, VertexStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["SpatialGraph3D", "VertexStyle"], EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["SpatialGraph3D", "EdgeLineStyle"]]

give flat log differences for Vr:

CenteredDimensionEstimateList[g_Graph] := ResourceFunction["LogDifferences"][ N[First[Values[ ResourceFunction["GraphNeighborhoodVolumes"][g, GraphCenter[g]]]]]] CenteredDimensionEstimateList[g_Graph, v_] := ResourceFunction["LogDifferences"][ N[First[Values[ResourceFunction["GraphNeighborhoodVolumes"][g, v]]]]] ListLinePlot[ Table[CenteredDimensionEstimateList[ IndexGraph[ResourceFunction["TorusGraph"][{n, n}]], {1}], {n, 20, 100, 20}], Frame -> True, PlotRange -> {0, Automatic}, PlotStyle -> ResourceFunction["WolframPhysicsProjectStyleData"][ "GenericLinePlot", "PlotStyles"], IntervalMarkers -> None]

A graph based on a tiling in hyperbolic space

SeedRandom; Graph3D[UndirectedGraph[ RandomSample[ EdgeList[ResourceFunction["HyperbolicTilingGraph"][3, 8]]]], BaseStyle -> {Graphics3DBoxOptions -> {Method -> {"ShrinkWrap" -> True}}}]

has negative curvature, so leads to a positive correction to Vr:

HypergraphDimensionEstimateList[hg_] := ResourceFunction["LogDifferences"][ MeanAround /@ Transpose[ Values[ResourceFunction["HypergraphNeighborhoodVolumes"][hg, All, Automatic]]]]; ListLinePlot[ HypergraphDimensionEstimateList[ List @@@ EdgeList[ Graph3D[ResourceFunction["HyperbolicTilingGraph"][3, 8]]]], Frame -> True, PlotStyle -> ResourceFunction["WolframPhysicsProjectStyleData"][ "GenericLinePlot", "PlotStyles"], PlotRange -> {0, Automatic}]

(One can imagine getting other examples by taking 3D objects and putting meshes on their surfaces. And indeed if the meshes are sufficiently faithful to the intrinsic geometry of the surfacessay based on their geodesicsthen the Vr(X) for the connectivity graphs of these meshes  will reflect the intrinsic curvatures of the surfaces. In practical computational geometry, though, meshes tend to be based on things like coordinate parametrizations, and so do not reflect intrinsic geometry.)

Many structures produced by our models exhibit curvature. There are cases of negative curvature:

HypergraphDimensionEstimateList[hg_] := ResourceFunction["LogDifferences"][ MeanAround /@ Transpose[ Values[ResourceFunction["HypergraphNeighborhoodVolumes"][hg, All, Automatic]]]]; GraphicsRow[{ResourceFunction[ "WolframModel"][{{x, y}, {y, z}} -> {{w, x}, {w, y}, {x, y}, {y, z}}, {{0, 0}, {0, 0}}, 8, "FinalStatePlot"], ListLinePlot[ Select[Length[#] > 3 &][ HypergraphDimensionEstimateList /@ Drop[ResourceFunction[ "WolframModel"][{{x, y}, {y, z}} -> {{w, x}, {w, y}, {x, y}, {y, z}}, {{0, 0}, {0, 0}}, 12, "StatesList"], 3]], Frame -> True, PlotStyle -> ResourceFunction["WolframPhysicsProjectStyleData"][ "GenericLinePlot", "PlotStyles"], PlotRange -> {0, Automatic}]}]

As well as positive curvature:

res = CloudGet["https://wolfr.am/L1ylk12R"]; GraphicsRow[{ResourceFunction["WolframModelPlot"][ ResourceFunction[ "WolframModel"][{{1, 2, 3}, {4, 2, 5}} -> {{6, 3, 1}, {3, 6, 4}, {1, 2, 6}}, {{0, 0, 0}, {0, 0, 0}}, 800, "FinalState"]], ListLinePlot[res, Frame -> True, PlotStyle -> ResourceFunction["WolframPhysicsProjectStyleData"][ "GenericLinePlot", "PlotStyles"]]}]

The most obvious examples of nested structures have fractional dimension, but no curvature:

HypergraphDimensionEstimateList[hg_] := ResourceFunction["LogDifferences"][ MeanAround /@ Transpose[ Values[ResourceFunction["HypergraphNeighborhoodVolumes"][hg, All, Automatic]]]]; GraphicsRow[{ResourceFunction[ "WolframModel"][{{1, 2}, {3, 2}} -> {{2, 4}, {2, 4}, {4, 1}, {3, 4}}, {{0, 0}, {0, 0}, {0, 0}}, 10, "FinalStatePlot"], ListLinePlot[ Table[HypergraphDimensionEstimateList[ ResourceFunction[ "WolframModel"][{{1, 2}, {3, 2}} -> {{2, 4}, {2, 4}, {4, 1}, {3, 4}}, {{0, 0}, {0, 0}, {0, 0}}, t, "FinalState"]], {t, 1, 12}], Frame -> True, PlotStyle -> ResourceFunction["WolframPhysicsProjectStyleData"][ "GenericLinePlot", "PlotStyles"], PlotRange -> {0, Automatic}]}]

But even though it is not well characterized using ideas from traditional calculus, there is every reason to expect that the limits of our models can exhibit a combination of fractional dimension and curvature.

In general, though, there is no obvious constraint on the possible limiting form of Vr. Curvature can be thought of as associated with the O(r2) term in a Taylor expansion of Vr about r = 0, after factoring out rd. But there is nothing to say that the leading behavior of Vr should match a form like rd. In addition to exponentials like λr it could show an infinite collection of intermediate asymptotic scales, like 2r log(r) or .