Recursive tree network

A toy model for a growing network is the recursive tree. The tree starts as a single node and at each step in the growth process, one new node is added which makes a single connection, at random, to an existing node.

Assume that the network has grown large enough so that its statistical properties are effectively constant. The fractions of nodes that have connections to exactly 7 other nodes is given by some fraction a b \dfrac ab , where a a and b b are positive coprime integers. What is the value of a + b a + b ?


The answer is 129.

This section requires Javascript.
You are seeing this because something didn't load right. We suggest you, (a) try refreshing the page, (b) enabling javascript if it is disabled on your browser and, finally, (c) loading the non-javascript version of this page . We're sorry about the hassle.

2 solutions

Josh Silverman Staff
Dec 16, 2013

Let's call the number of nodes with degree q q at time t t , N q ( t ) N_q(t) .

According to the way the network is grown, the total number of nodes at time t t is given by N ( t ) = q N q ( t ) = 1 + t N(t) = \sum\limits_qN_q(t) = 1+t .

Also, we have the following relation between the number of nodes of degree q q at a given time, and the probability that a given node has degree q q at a given time: p q ( t ) N q ( t ) 1 + t \displaystyle p_q(t) \equiv \frac{N_q(t)}{1+t}

At each step in the growth process, the number of nodes of degree q q can increase or decrease by 1. It can increase if the new node attaches to an existing node of degree q 1 q-1 . It can also decrease if the new node attaches to an existing node of degree q q , turning it into a node of degree q + 1 q+1 . Every individual node has a chance 1 1 + t \frac{1}{1+t} of being picked for attachment at every round and thus a degree class has a chance N q ( t ) 1 + t \displaystyle \frac{N_q(t)}{1+t} for one of its members being picked. We therefore have:

N q ( t + 1 ) = N q 1 ( t ) 1 + t + N q ( t ) ( 1 1 1 + t ) + δ 1 , q N_q(t+1) = \frac{N_{q-1}(t)}{1+t} + N_q(t)\left(1-\frac{1}{1+t}\right) + \delta_{1,q}

(The δ 1 , q \delta_{1,q} because a node of degree 1 is added at each time step).

We can rewrite this in terms of the probabilities, p q ( t ) p_q(t) :

( t + 2 ) p q ( t + 1 ) = p q 1 ( t ) + t p q ( t ) + δ 1 , q \left(t+2\right)p_q(t+1) = p_{q-1}(t) + tp_q(t) + \delta_{1,q}

At long times, the network statistics become more or less constant and we have

p q ( t ) = p q ( t + 1 ) p_q(t) = p_q(t+1)

This leads to

2 p q = p q 1 + δ 1 , q 2p_q = p_{q-1} + \delta_{1,q}

After time zero, p 0 = 0 p_0 = 0 and so, for q = 1 q = 1 , we have

2 p 1 = 0 + δ 1 , 1 2p_1 = 0 + \delta_{1,1}

so that p 1 = 1 2 p_1 = \frac{1}{2} . Similarly, we have 2 p j = p j 1 + 0 2p_j = p_{j-1} + 0 , j > 1 \forall j > 1 . Therefore, p d = 1 2 d \boxed{p_d = \frac{1}{2^d}} for degree d > 0 d > 0 and p 0 = 0 \boxed{p_0 = 0} .

Great solution.

I reached the correct answer by considering what happens if we simultaneously attach a new node to every existing node, and I hoped that this was just a scaled-up version of attaching nodes one at a time .. not very convincing :)

Matt McNabb - 7 years, 5 months ago

Log in to reply

that sounds pretty slick, if you have any time to write it up, i'd love to see it

Josh Silverman Staff - 7 years, 5 months ago

Log in to reply

It's pretty straightforward. If there were previously n 1 n_1 nodes with one connection, and you attach N N new nodes (one to each existing node), then there are now N N nodes with one connection, n 1 n_1 nodes with two connections, etc., so we get n 1 = N 2 n_1 = \frac{N}{2} and the same logic leads to n i + 1 = n i 2 n_{i+1} = \frac{n_i}{2} .

Matt McNabb - 7 years, 5 months ago

intresting Concept

MineBl0ck . - 1 year, 3 months ago
Laurent Shorts
Apr 25, 2016

A program to test with a random generated tree:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
from random import random

N=100000
degrees = N*[1]

for i in xrange(2, N):
    degrees[ int(random() * i) ] += 1

degree = 1
tot = 0
while tot < N or int(round(N/(2**degree)))>0:
        nb = len([1 for i in degrees if i == degree])
        tot += nb
        print degree, ":", nb, "(theory:", int(round(N/(2**degree))), ")"
        degree += 1

0 pending reports

×

Problem Loading...

Note Loading...

Set Loading...