识别三角关系
现在您已经了解了团(clique),是时候利用这些知识来在网络中寻找结构了。我们先从三角形入手。我们之所以关注三角形,是因为它是最简单的复杂团。让我们来编写几个函数;这些练习将带您走完整个网络算法背后的基本逻辑。
在 Twitter 网络中,每个节点都有一个与之关联的"职业"('occupation')标签,按该 Twitter 用户的职业将其分为 celebrity、politician 和 scientist。寻找三角形的算法有一个潜在应用:判断职业相似的用户是否更可能彼此形成一个团。
本练习是课程的一部分
Python 网络分析入门
练习说明
- 从
itertools导入combinations。 - 编写函数
is_in_triangle(),包含两个参数G和n,用于检查给定节点是否处于三角关系中。combinations(iterable, n)会从iterable中返回大小为n的组合。在这里很有用,因为您需要从list(G.neighbors(n))中取大小为2的组合。- 要检查两节点之间是否存在边,使用
.has_edge(node1, node2)方法。若存在边,则说明给定节点处于三角关系中,函数应返回True。
交互式实操练习
通过完成这段示例代码来试试这个练习。
____
# Define is_in_triangle()
def is_in_triangle(G, n):
"""
Checks whether a node `n` in graph `G` is in a triangle relationship or not.
Returns a boolean.
"""
in_triangle = False
# Iterate over all possible triangle relationship combinations
for n1, n2 in ____:
# Check if an edge exists between n1 and n2
if ____:
in_triangle = ____
break
return in_triangle