gvdr

2026-05-11 · paper

A slow walk through Random Dot Product Graphs

Work in progress. I’ll keep adding to this as I go; for now it’s just a starting frame.

In this post, which may well grow into a small series, I want to walk slowly through the two papers I’ve recently put up on arXiv, Random Dot Product Graphs as Dynamical Systems and Intensity Dot Product Graphs, with a couple more on the way. Those papers are written for the working mathematician, the kind of reader who wants the proofs lined up before deciding whether the ideas are worth chewing on. They do that job, I hope. They also fall short of engaging anyone who isn’t a working mathematician, which has always bothered me a little. There are ideas in this corner of network science that I think any curious person could enjoy, if they’re laid out gently enough.

So that’s what I’ll try here. A long, slow explanation, of the kind I’d give to a curious friend who’s patient enough to listen :-) Drawings will come too; words alone aren’t going to do the story justice.

Let’s begin from the very beginning.

A complex network is, in the simplest description we can give it, a collection of interactions. We have a bunch of things, anything we like, people, species, neurons, web pages, machines on the internet, and some pairs of those things are related to each other while others aren’t. Sometimes the relation has a direction. Anita might follow Bob on a social network without Bob following Anita back. Sometimes both directions are possible. The shape of the whole pattern of relations is what we’ll call the network.

When mathematicians sit down to draw a network, they usually do it like this. The things become dots (we call them nodes). The relations become arrows or lines between the dots (we call them edges). Already we have an object on the page to argue about.

Two kinds of question come up when you stare at a real network for a while. The first one is descriptive: what does it look like, are there clusters, hubs, surprises? The second is generative: if I had to invent a simple rule that could have produced something like this, what would the rule be?

The Random Dot Product Graph model, RDPG for short, is one answer to the second question. It’s a recipe.

The recipe

Picture every node as a point sitting somewhere in space. We don’t know exactly where; we don’t even need to know what the space “means”. The position is just a piece of bookkeeping that turns out to be useful.

To every node we attach two arrows. Let’s colour one yellow and one blue. Both arrows start at the node and stick out in some direction, with some length. The yellow arrow describes how that node gives relations to others. The blue arrow describes how that node receives them.

Now take two nodes, Anita and Bob, and ask whether there should be an edge going from Anita to Bob.

Here’s the rule. Look at Anita’s yellow arrow (her “outgoing personality”) and at Bob’s blue arrow (his “incoming personality”). If those two arrows are long, and if they’re pointing roughly in the same direction, that’s a strong sign of compatibility: Anita has a lot to give, Bob has a lot of capacity to receive, and they agree about what kind of interaction this is. In that case, we say the probability for an edge to form from Anita to Bob is high. If either arrow is short, or if the two arrows point in different directions, the probability is low. If they point in opposite directions, it’s as low as can be.

There’s a precise way to turn “long arrows pointing in the same direction” into a single number, and mathematicians have a name for it. They call it the dot product of the two arrows. The dot product is large and positive when the arrows are long and aligned, smaller when they’re shorter or pointing slightly off, zero when they’re at right angles, and negative when they’re pointing in opposite directions. The RDPG model is just the sentence “the probability of an edge is the dot product of the right two arrows”, with a tiny bit of housekeeping to keep that probability between zero and one.

So the full recipe is: give every node a yellow arrow and a blue arrow; for every ordered pair of nodes, flip a coin whose bias is the dot product of the giver’s yellow and the receiver’s blue; collect all the coin flips. The result is a random network.

That’s RDPG. We haven’t done any maths yet (a dot product is just “are these two arrows aligned?”), and we already have a complete recipe for generating networks. What’s lovely is how far this little recipe carries us.

I’ll pick up the story from there next time.

← all posts