เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ตรวจสอบว่ากราฟมี Self-loop หรือไม่

อย่างที่ Eric ได้อธิบายไว้ NetworkX รองรับเอดจ์ที่เริ่มต้นและสิ้นสุดที่โหนดเดียวกัน ซึ่งอาจดูไม่สมเหตุสมผลในกราฟโซเชียลเน็ตเวิร์ก แต่มีประโยชน์มากสำหรับการจำลองข้อมูลประเภทเครือข่ายการเดินทาง ที่ผู้ใช้เริ่มต้นจากจุดหนึ่งและสิ้นสุดที่อีกจุดหนึ่ง

การตรวจสอบ self-loop ก่อนวิเคราะห์เพิ่มเติมถือเป็นแนวทางที่ดี NetworkX มีเมธอดสำหรับจุดประสงค์นี้โดยเฉพาะ: nx.number_of_selfloops(G)

ในแบบฝึกหัดนี้และแบบฝึกหัดถัดไป คำสั่ง assert จะเป็นประโยชน์มาก assert ใช้ตรวจสอบว่านิพจน์ที่ตามมาให้ค่าเป็น True หรือไม่ ถ้าไม่ใช่จะเกิด AssertionError

ก่อนเริ่ม ให้เรียกใช้ฟังก์ชัน nx.number_of_selfloops() โดยส่ง T เข้าไปใน IPython Shell เพื่อดูจำนวนเอดจ์ที่เริ่มต้นและสิ้นสุดที่โหนดเดียวกัน กราฟนี้มี self-loop หลายรายการที่เพิ่มเข้ามาแบบสังเคราะห์ หน้าที่ในแบบฝึกหัดนี้คือเขียนฟังก์ชันที่คืนค่าเอดจ์เหล่านั้น

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การวิเคราะห์เครือข่ายเบื้องต้นด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนดฟังก์ชันชื่อ find_selfloop_nodes() ที่รับอาร์กิวเมนต์หนึ่งตัวคือ G
    • ใช้ for loop วนซ้ำผ่านเอดจ์ทั้งหมดใน G (โดยไม่รวม metadata)
    • ถ้าโหนด u เท่ากับโหนด v:
      • เพิ่ม u เข้าไปในลิสต์ nodes_in_selfloops
      • คืนค่าลิสต์ nodes_in_selfloops
  • ตรวจสอบว่าจำนวน self-loop ในกราฟเท่ากับจำนวนโหนดใน self-loop ส่วนนี้เตรียมไว้ให้แล้ว กด 'ส่งคำตอบ' เพื่อดูผลลัพธ์ได้เลย!

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Define find_selfloop_nodes()
def ____:
    """
    Finds all nodes that have self-loops in the graph G.
    """
    nodes_in_selfloops = []

    # Iterate over all the edges of G
    for u, v in ____:

    # Check if node u and node v are the same
        if ____:

            # Append node u to nodes_in_selfloops
            ____

    return nodes_in_selfloops

# Check whether number of self loops equals the number of nodes in self loops
assert nx.number_of_selfloops(T) == len(find_selfloop_nodes(T))
แก้ไขและรันโค้ด