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, politician và scientist. 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
Hướng dẫn bài tập
- Import
combinationstừitertools. - Viết hàm
is_in_triangle()với hai tham số -Gvàn- để 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ướcntừiterable. Điều này hữu ích ở đây vì bạn cần các tổ hợp kích thước2từ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