คำนวณจำนวนเพื่อนบ้านของแต่ละโหนด
จะประเมินได้อย่างไรว่าโหนดใดมีความสำคัญ? มีหลายวิธีในการวัด และในที่นี้จะเริ่มจากเมตริกแรก ได้แก่ จำนวนเพื่อนบ้านของโหนดนั้น
กราฟ NetworkX ทุกกราฟ G มีเมธอด .neighbors(n) ที่คืนค่า iterator ของโหนดที่เป็นเพื่อนบ้านของโหนด n ลองใช้เมธอดนี้ใน IPython Shell กับเครือข่าย Twitter T เพื่อดูเพื่อนบ้านของโหนด 1 ก่อน เพื่อทำความคุ้นเคยกับการทำงานของฟังก์ชัน จากนั้นในแบบฝึกหัดนี้ ให้เขียนฟังก์ชันที่คืนค่าโหนดทั้งหมดที่มีเพื่อนบ้านจำนวน m โหนด
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์เครือข่ายเบื้องต้นด้วย Python
คำแนะนำการฝึกหัด
- เขียนฟังก์ชันชื่อ
nodes_with_m_nbrs()ที่รับพารามิเตอร์สองตัว ได้แก่Gและmและคืนค่าโหนดทั้งหมดที่มีเพื่อนบ้านmโหนด โดยทำตามขั้นตอนดังนี้- วนซ้ำผ่านโหนดทั้งหมดใน
G(ไม่รวม metadata) - ใช้ฟังก์ชัน
len()และlist()ร่วมกับเมธอด.neighbors()เพื่อคำนวณจำนวนเพื่อนบ้านทั้งหมดของโหนดnในกราฟG- ถ้าจำนวนเพื่อนบ้านของโหนด
nเท่ากับmให้เพิ่มnเข้าไปใน setnodesโดยใช้เมธอด.add()
- ถ้าจำนวนเพื่อนบ้านของโหนด
- หลังจากวนซ้ำครบทุกโหนดใน
Gแล้ว ให้ return setnodes
- วนซ้ำผ่านโหนดทั้งหมดใน
- ใช้ฟังก์ชัน
nodes_with_m_nbrs()ที่เขียนไว้เพื่อดึงโหนดทั้งหมดที่มีเพื่อนบ้าน 6 โหนดในกราฟT
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define nodes_with_m_nbrs()
def ____:
"""
Returns all nodes in graph G that have m neighbors.
"""
nodes = set()
# Iterate over all nodes in G
for n in ____:
# Check if the number of neighbors of n matches m
if ____ == ____:
# Add the node n to the set
____
# Return the nodes with m neighbors
return nodes
# Compute and print all nodes in T that have 6 neighbors
six_nbrs = ____
print(____)