跳到内容

此函数通过模拟其演化来创建一个随机图。每次添加一个新顶点时,它都会创建多个到旧顶点的链接,并且旧顶点被引用的概率取决于其入度(优先连接)和年龄。

用法

sample_pa_age(
  n,
  pa.exp,
  aging.exp,
  m = NULL,
  aging.bin = 300,
  out.dist = NULL,
  out.seq = NULL,
  out.pref = FALSE,
  directed = TRUE,
  zero.deg.appeal = 1,
  zero.age.appeal = 0,
  deg.coef = 1,
  age.coef = 1,
  time.window = NULL
)

pa_age(...)

参数

n

图中的顶点数。

pa.exp

优先连接指数,请参见下面的详细信息。

aging.exp

老化的指数,通常是一个非正数,请参见下面的详细信息。

m

每个新顶点创建的边数(第一个顶点除外)。仅当 out.distout.seq 参数都为 NULL 时才使用此参数。

aging.bin

用于衡量顶点年龄的 bin 数量,请参见下面的详细信息。

out.dist

如果 out.seq 为 NULL,则用于生成每个时间步中要添加的边数的离散分布。请参见下面的详细信息。

out.seq

每个时间步中要添加的边数,一个包含与顶点数一样多的元素的向量。请参见下面的详细信息。

out.pref

逻辑常量,是否将不是由顶点发起的边包括在优先连接的基础中。请参见下面的详细信息。

directed

逻辑常量,是否生成有向图。请参见下面的详细信息。

zero.deg.appeal

没有相邻边的顶点的“吸引力”的度数相关部分。另请参见下面的详细信息。

zero.age.appeal

年龄为零的顶点的“吸引力”的年龄相关部分。它通常为零,请参见下面的详细信息。

deg.coef

度数相关的“吸引力”的系数。请参见下面的详细信息。

age.coef

“吸引力”的年龄相关部分的系数。请参见下面的详细信息。

time.window

整数常量,如果为 NULL,则仅将最后 time.windows 时间步中添加的相邻边计为优先连接的基础。另请参见下面的详细信息。

...

传递给 sample_pa_age()

一个新图。

详细信息

这是一个增长图的离散时间步模型。我们从一个在第一时间步包含单个顶点(且没有边)的网络开始。然后在每个时间步(从第二个开始),添加一个新顶点,并启动多个到网络中旧顶点的边。旧顶点连接到的概率与 $$P[i] \sim (c\cdot k_i^\alpha+a)(d\cdot l_i^\beta+b)$$ 成正比。

这里 \(k_i\) 是顶点 \(i\) 在当前时间步中的入度,\(l_i\) 是顶点 \(i\) 的年龄。年龄简单地定义为自添加顶点以来经过的时间步数,扩展是顶点年龄被划分为 aging.bin 个 bin。

\(c\)、\(\alpha\)、\(a\)、\(d\)、\(\beta\) 和 \(b\) 是参数,可以通过以下参数设置:pa.exp (\(\alpha\),强制性参数)、aging.exp (\(\beta\),强制性参数)、zero.deg.appeal (\(a\),可选,默认值为 1)、zero.age.appeal (\(b\),可选,默认值为 0)、deg.coef (\(c\),可选,默认值为 1) 和 age.coef (\(d\),可选,默认值为 1)。

每个时间步启动的边数由 mout.seqout.pref 参数控制。如果给定 out.seq,则将其解释为一个向量,该向量给出每个时间步要添加的边数。它应该具有 n 的长度(顶点数),并且将忽略其第一个元素。如果未给定 out.seq(或 NULL)并且给定 out.dist,则它将用作离散概率分布以生成边数。它的第一个元素给出在某个时间步添加零条边的概率,第二个元素是添加一条边的概率,依此类推。(out.seq 应该包含非负数,但如果它们总和不等于 1,则将对其进行归一化以使其总和等于 1。此行为类似于 sample 命令的 prob 参数。)

默认情况下,生成有向图,但如果 directed 设置为 FALSE,则创建无向图。即使生成了无向图,\(k_i\) 也仅表示不是由顶点本身发起的相邻边,除非 out.pref 设置为 TRUE

如果给定了 time.window 参数(且不为 NULL),则 \(k_i\) 仅表示在前一个 time.window 时间步中添加的相邻边。

此函数可能会生成具有多条边的图。

作者

Gabor Csardi csardi.gabor@gmail.com

示例


# The maximum degree for graph with different aging exponents
g1 <- sample_pa_age(10000, pa.exp = 1, aging.exp = 0, aging.bin = 1000)
g2 <- sample_pa_age(10000, pa.exp = 1, aging.exp = -1, aging.bin = 1000)
g3 <- sample_pa_age(10000, pa.exp = 1, aging.exp = -3, aging.bin = 1000)
max(degree(g1))
#> [1] 195
max(degree(g2))
#> [1] 25
max(degree(g3))
#> [1] 10