开始使用免费开始使用

识别三角关系

现在您已经了解了团(clique),是时候利用这些知识来在网络中寻找结构了。我们先从三角形入手。我们之所以关注三角形,是因为它是最简单的复杂团。让我们来编写几个函数;这些练习将带您走完整个网络算法背后的基本逻辑。

在 Twitter 网络中,每个节点都有一个与之关联的"职业"('occupation')标签,按该 Twitter 用户的职业将其分为 celebritypoliticianscientist。寻找三角形的算法有一个潜在应用:判断职业相似的用户是否更可能彼此形成一个团。

本练习是课程的一部分

Python 网络分析入门

查看课程

练习说明

  • itertools 导入 combinations
  • 编写函数 is_in_triangle(),包含两个参数 Gn,用于检查给定节点是否处于三角关系中。
    • 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
编辑并运行代码