igraph 参考手册

用于使用 igraph C 库

搜索手册

第 25 章. Graphlets

1.  简介

Graphlet 分解通过潜在重叠的密集社交群体的联合来建模加权无向图。 这是通过一个两步算法完成的。 在第一步中,通过在阈值输入图中查找集团来创建一组候选群体(候选基)。 在第二步中,图被投影到候选基上,从而为候选基中的每个集团产生一个权重系数。

有关 graphlet 分解的更多信息,请参阅 Hossein Azari Soufiani 和 Edoardo M Airoldi:“加权网络的 Graphlet 分解”,https://arxiv.org/abs/1203.2821http://proceedings.mlr.press/v22/azari12/azari12.pdf

igraph 包含三个用于执行图的 graphlet 分解的函数。 第一个是 igraph_graphlets(),它执行该方法的两个步骤并返回一个带有相应权重的子图列表。 另外两个函数对应于算法的第一步和第二步,如果用户希望单独执行它们,它们将很有用:igraph_graphlets_candidate_basis()igraph_graphlets_project()

注意:术语“graphlet”用于文献中的几个不相关的概念。 如果您正在寻找计数诱导子图,请参阅 igraph_motifs_randesu()igraph_subisomorphic_lad()

2. 执行 graphlet 分解

2.1. igraph_graphlets — 计算 graphlets 基并将其投影到图上。

igraph_error_t igraph_graphlets(const igraph_t *graph,
                     const igraph_vector_t *weights,
                     igraph_vector_int_list_t *cliques,
                     igraph_vector_t *Mu, igraph_integer_t niter);

此函数仅调用 igraph_graphlets_candidate_basis()igraph_graphlets_project(),然后根据权重降序排列 graphlets。

参数: 

:

输入图,它必须是一个简单图,忽略边的方向。

weights:

边的权重,一个向量。

cliques:

整数向量的初始化列表。 graphlet 基存储在此处。 列表的每个元素都是顶点 ID 的整数向量,用于编码单个基子图。

Mu:

一个初始化的向量,graphlet 的权重将存储在这里。

niter:

投影步骤要执行的迭代次数。

返回值: 

错误代码。

另请参见:igraph_graphlets_candidate_basis()igraph_graphlets_project()

2.2. igraph_graphlets_candidate_basis — 计算候选 graphlets 基

igraph_error_t igraph_graphlets_candidate_basis(const igraph_t *graph,
                                     const igraph_vector_t *weights,
                                     igraph_vector_int_list_t *cliques,
                                     igraph_vector_t *thresholds);

参数: 

:

输入图,它必须是一个简单图,忽略边的方向。

weights:

边的权重,一个向量。

cliques:

整数向量的初始化列表。 graphlet 基存储在此处。 列表的每个元素都是顶点 ID 的整数向量,用于编码单个基子图。

thresholds:

一个初始化的向量,用于查找基本子图的(最高可能)权重阈值存储在此处。

返回值: 

错误代码。

另请参见:igraph_graphlets()igraph_graphlets_project()

2.3. igraph_graphlets_project — 将图投影到 graphlets 基上。

igraph_error_t igraph_graphlets_project(const igraph_t *graph,
                             const igraph_vector_t *weights,
                             const igraph_vector_int_list_t *cliques,
                             igraph_vector_t *Mu, igraph_bool_t startMu,
                             igraph_integer_t niter);

请注意,投影的图不必与用于计算 graphlet 基的图相同,但假设它具有相同数量的顶点,并且两个图的顶点 ID 匹配。

参数: 

:

输入图,它必须是一个简单图,忽略边的方向。

weights:

输入图中边的权重,一个向量。

cliques:

整数向量的初始化列表。 graphlet 基存储在此处。 列表的每个元素都是顶点 ID 的整数向量,用于编码单个基子图。

Mu:

一个初始化的向量,graphlet 的权重将存储在这里。 如果 startMu 参数为 true,则此向量也用于初始化迭代算法的权重向量。

startMu:

如果为 true,则提供的 Mu 向量将用作迭代的起点。 否则,使用常量 1 向量。

niter:

要执行的迭代次数。

返回值: 

错误代码。

另请参见:igraph_graphlets()igraph_graphlets_candidate_basis()