用于使用 igraph C 库
Graphlet 分解通过潜在重叠的密集社交群体的联合来建模加权无向图。 这是通过一个两步算法完成的。 在第一步中,通过在阈值输入图中查找集团来创建一组候选群体(候选基)。 在第二步中,图被投影到候选基上,从而为候选基中的每个集团产生一个权重系数。
有关 graphlet 分解的更多信息,请参阅 Hossein Azari Soufiani 和 Edoardo M Airoldi:“加权网络的 Graphlet 分解”,https://arxiv.org/abs/1203.2821 和 http://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()
。
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。
参数:
|
输入图,它必须是一个简单图,忽略边的方向。 |
|
边的权重,一个向量。 |
|
整数向量的初始化列表。 graphlet 基存储在此处。 列表的每个元素都是顶点 ID 的整数向量,用于编码单个基子图。 |
|
一个初始化的向量,graphlet 的权重将存储在这里。 |
|
投影步骤要执行的迭代次数。 |
返回值:
错误代码。 |
另请参见:igraph_graphlets_candidate_basis()
和 igraph_graphlets_project()
。
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);
参数:
|
输入图,它必须是一个简单图,忽略边的方向。 |
|
边的权重,一个向量。 |
|
整数向量的初始化列表。 graphlet 基存储在此处。 列表的每个元素都是顶点 ID 的整数向量,用于编码单个基子图。 |
|
一个初始化的向量,用于查找基本子图的(最高可能)权重阈值存储在此处。 |
返回值:
错误代码。 |
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 匹配。
参数:
|
输入图,它必须是一个简单图,忽略边的方向。 |
|
输入图中边的权重,一个向量。 |
|
整数向量的初始化列表。 graphlet 基存储在此处。 列表的每个元素都是顶点 ID 的整数向量,用于编码单个基子图。 |
|
一个初始化的向量,graphlet 的权重将存储在这里。 如果 |
|
如果为 true,则提供的 Mu 向量将用作迭代的起点。 否则,使用常量 1 向量。 |
|
要执行的迭代次数。 |
返回值:
错误代码。 |
另请参见:igraph_graphlets()
和 igraph_graphlets_candidate_basis()
。
← 第 24 章. 检测社区结构 | 第 26 章. 分层随机图 → |