시작하기무료로 시작하기

삼각형 관계 식별하기

이제 클리크(clique)에 대해 배웠으니, 이를 활용해 네트워크에서 구조를 찾아볼 차례예요. 가장 먼저 삼각형(triangle)을 살펴봅니다. 삼각형은 가장 단순한 복합 클리크이기 때문에 중요해요. 몇 가지 함수를 작성하면서, 네트워크 알고리즘 뒤에 있는 기본 논리를 익혀 보겠습니다.

Twitter 네트워크에서 각 노드에는 'occupation' 레이블이 있으며, 해당 사용자의 직업이 celebrity, politician, scientist로 구분되어 있어요. 삼각형 찾기 알고리즘의 한 가지 활용 예는 비슷한 직업을 가진 사용자들이 서로 클리크를 형성할 가능성이 더 높은지 확인하는 것입니다.

이 연습은 강의의 일부입니다

Python으로 시작하는 네트워크 분석

강의 보기

연습 안내

  • itertools에서 combinations를 임포트하세요.
  • 두 개의 매개변수 Gn을 받아, 주어진 노드가 삼각형 관계에 속하는지 확인하는 함수 is_in_triangle()을(를) 작성하세요.
    • 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
코드 편집 및 실행