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

การระบุความสัมพันธ์แบบสามเหลี่ยม

ตอนนี้ที่เรียนรู้เรื่อง 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) ถ้ามีเส้นเชื่อมอยู่ แสดงว่าโหนดนั้นอยู่ในความสัมพันธ์แบบสามเหลี่ยม และควร return True

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

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

____

# 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
แก้ไขและรันโค้ด