Bắt đầu ngayBắt đầu miễn phí

Nhận diện quan hệ tam giác

Giờ bạn đã học về clique, hãy tận dụng kiến thức đó để tìm các cấu trúc trong một mạng. Trước hết, ta sẽ nhắm đến tam giác. Ta quan tâm đến tam giác vì đây là clique phức tạp đơn giản nhất. Hãy viết vài hàm; các bài tập này sẽ dẫn bạn qua tư duy cốt lõi đằng sau các thuật toán trên mạng.

Trong mạng Twitter, mỗi nút có một nhãn 'occupation' đi kèm, trong đó nghề nghiệp của người dùng Twitter được chia thành celebrity, politicianscientist. Một ứng dụng tiềm năng của các thuật toán tìm tam giác là kiểm tra xem những người dùng có nghề nghiệp tương tự có xu hướng nằm chung trong một clique với nhau hay không.

Bài tập này là một phần của khóa học

Nhập môn Phân tích Mạng bằng Python

Xem khóa học

Hướng dẫn bài tập

  • Import combinations từ itertools.
  • Viết hàm is_in_triangle() với hai tham số - Gn - để kiểm tra một nút cho trước có nằm trong quan hệ tam giác hay không.
    • combinations(iterable, n) trả về các tổ hợp kích thước n từ iterable. Điều này hữu ích ở đây vì bạn cần các tổ hợp kích thước 2 từ list(G.neighbors(n)).
    • Để kiểm tra một cạnh có tồn tại giữa hai nút hay không, dùng phương thức .has_edge(node1, node2). Nếu có cạnh, thì nút đã cho nằm trong một quan hệ tam giác và bạn nên trả về True.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

____

# 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
Chỉnh sửa và Chạy Mã