삼각형 관계 식별하기
이제 클리크(clique)에 대해 배웠으니, 이를 활용해 네트워크에서 구조를 찾아볼 차례예요. 가장 먼저 삼각형(triangle)을 살펴봅니다. 삼각형은 가장 단순한 복합 클리크이기 때문에 중요해요. 몇 가지 함수를 작성하면서, 네트워크 알고리즘 뒤에 있는 기본 논리를 익혀 보겠습니다.
Twitter 네트워크에서 각 노드에는 'occupation' 레이블이 있으며, 해당 사용자의 직업이 celebrity, politician, scientist로 구분되어 있어요. 삼각형 찾기 알고리즘의 한 가지 활용 예는 비슷한 직업을 가진 사용자들이 서로 클리크를 형성할 가능성이 더 높은지 확인하는 것입니다.
이 연습은 강의의 일부입니다
Python으로 시작하는 네트워크 분석
연습 안내
itertools에서combinations를 임포트하세요.- 두 개의 매개변수
G와n을 받아, 주어진 노드가 삼각형 관계에 속하는지 확인하는 함수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