การระบุความสัมพันธ์แบบสามเหลี่ยม
ตอนนี้ที่เรียนรู้เรื่อง clique แล้ว ถึงเวลาลองนำความรู้ที่มีไปค้นหาโครงสร้างในเครือข่ายกัน โดยจะเริ่มจากสามเหลี่ยม (triangles) ซึ่งเป็น clique ที่ซับซ้อนที่สุดในรูปแบบที่เรียบง่ายที่สุด มาเขียนฟังก์ชันกันสักสองสามตัว แบบฝึกหัดชุดนี้จะพาคุณผ่านตรรกะพื้นฐานของอัลกอริทึมเครือข่าย
ในเครือข่าย Twitter แต่ละโหนดมี label ชื่อ 'occupation' ที่บอกอาชีพของผู้ใช้ โดยแบ่งออกเป็น celebrity, politician และ scientist หนึ่งในการประยุกต์ใช้อัลกอริทึมค้นหาสามเหลี่ยมคือการตรวจสอบว่าผู้ใช้ที่มีอาชีพคล้ายกันมีแนวโน้มที่จะอยู่ใน clique เดียวกันมากกว่าหรือไม่
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์เครือข่ายเบื้องต้นด้วย Python
คำแนะนำการฝึกหัด
- นำเข้า
combinationsจากitertools - เขียนฟังก์ชัน
is_in_triangle()ที่มีพารามิเตอร์สองตัวคือGและnเพื่อตรวจสอบว่าโหนดที่กำหนดอยู่ในความสัมพันธ์แบบสามเหลี่ยมหรือไม่combinations(iterable, n)จะคืนค่าการจัดหมู่ขนาดnจากiterableซึ่งมีประโยชน์ที่นี่ เพราะต้องการการจัดหมู่ขนาด2จากlist(G.neighbors(n))- ในการตรวจสอบว่ามีเส้นเชื่อมระหว่างโหนดสองโหนดหรือไม่ ให้ใช้เมธอด
.has_edge(node1, node2)ถ้ามีเส้นเชื่อมอยู่ แสดงว่าโหนดนั้นอยู่ในความสัมพันธ์แบบสามเหลี่ยม และควร returnTrue
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
____
# 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