การค้นหาสามเหลี่ยมเปิด
มาลองค้นหาสามเหลี่ยมเปิดกัน โดยจำไว้ว่าสามเหลี่ยมเปิดคือพื้นฐานของระบบแนะนำเพื่อน หาก "A" รู้จัก "B" และ "A" รู้จัก "C" ก็มีความเป็นไปได้สูงที่ "B" จะรู้จัก "C" เช่นกัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์เครือข่ายเบื้องต้นด้วย Python
คำแนะนำการฝึกหัด
- เขียนฟังก์ชัน
node_in_open_triangle()ที่รับพารามิเตอร์ 2 ตัวคือGและnเพื่อตรวจสอบว่า node นั้นอยู่ในสามเหลี่ยมเปิดร่วมกับ neighbor ของมันหรือไม่- ใน
forloop ให้วนซ้ำผ่านชุดค่าผสมของความสัมพันธ์สามเหลี่ยมที่เป็นไปได้ทั้งหมด - หาก node
n1และn2ไม่มี เส้นเชื่อมระหว่างกัน ให้กำหนดin_open_triangleเป็นTrueแล้ว break ออกจากifstatement และ returnin_open_triangle
- ใน
- ใช้ฟังก์ชันนี้เพื่อนับจำนวนสามเหลี่ยมเปิดทั้งหมดที่มีอยู่ใน
T- ใน
forloop ให้วนซ้ำผ่านทุก node ในT - หาก node
nปัจจุบันอยู่ในสามเหลี่ยมเปิด ให้เพิ่มค่าnum_open_trianglesขึ้น 1
- ใน
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
from itertools import combinations
# Define node_in_open_triangle()
def node_in_open_triangle(G, n):
"""
Checks whether pairs of neighbors of node `n` in graph `G` are in an 'open triangle' relationship with node `n`.
"""
in_open_triangle = False
# Iterate over all possible triangle relationship combinations
for n1, n2 in ____:
# Check if n1 and n2 do NOT have an edge between them
if not ____:
in_open_triangle = ____
break
return ____
# Compute the number of open triangles in T
num_open_triangles = 0
# Iterate over all the nodes in T
for n in ____:
# Check if the current node is in an open triangle
if ____:
# Increment num_open_triangles
____ += 1
print(num_open_triangles)