การค้นหาโหนดที่อยู่ในความสัมพันธ์แบบสามเหลี่ยม
NetworkX มี API สำหรับนับจำนวนสามเหลี่ยมที่แต่ละโหนดเกี่ยวข้อง ได้แก่ nx.triangles(G) ซึ่งคืนค่าเป็น dictionary โดยมีโหนดเป็น key และจำนวนสามเหลี่ยมเป็น value ในแบบฝึกหัดนี้ ให้ปรับปรุงฟังก์ชันที่กำหนดไว้ก่อนหน้า เพื่อดึงโหนดทั้งหมดที่มีความสัมพันธ์แบบสามเหลี่ยมกับโหนดที่ระบุ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์เครือข่ายเบื้องต้นด้วย Python
คำแนะนำการฝึกหัด
- เขียนฟังก์ชัน
nodes_in_triangle()ที่รับพารามิเตอร์ 2 ตัว ได้แก่Gและnเพื่อระบุโหนดทั้งหมดที่มีความสัมพันธ์แบบสามเหลี่ยมกับโหนดที่กำหนด- ใน
forloop ให้วนซ้ำผ่านทุกคู่ความสัมพันธ์สามเหลี่ยมที่เป็นไปได้ - ตรวจสอบว่าโหนด
n1และn2มีเส้นเชื่อมระหว่างกันหรือไม่ หากมี ให้เพิ่มทั้งสองโหนดลงใน settriangle_nodes
- ใน
- นำฟังก์ชันที่เขียนไปใช้ในคำสั่ง
assertเพื่อตรวจสอบว่าจำนวนโหนดที่มีความสัมพันธ์แบบสามเหลี่ยมกับโหนด1ของกราฟTเท่ากับ35
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
from itertools import combinations
# Write a function that identifies all nodes in a triangle relationship with a given node.
def nodes_in_triangle(G, n):
"""
Returns the nodes in a graph `G` that are involved in a triangle relationship with the node `n`.
"""
triangle_nodes = set([n])
# Iterate over all possible triangle relationship combinations
for n1, n2 in ____:
# Check if n1 and n2 have an edge between them
if ____:
# Add n1 to triangle_nodes
____
# Add n2 to triangle_nodes
____
return triangle_nodes
# Write the assertion statement
assert len(____(____, ____)) == ____