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

การค้นหาสามเหลี่ยมเปิด

มาลองค้นหาสามเหลี่ยมเปิดกัน โดยจำไว้ว่าสามเหลี่ยมเปิดคือพื้นฐานของระบบแนะนำเพื่อน หาก "A" รู้จัก "B" และ "A" รู้จัก "C" ก็มีความเป็นไปได้สูงที่ "B" จะรู้จัก "C" เช่นกัน

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

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

ดูคอร์ส

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

  • เขียนฟังก์ชัน node_in_open_triangle() ที่รับพารามิเตอร์ 2 ตัวคือ G และ n เพื่อตรวจสอบว่า node นั้นอยู่ในสามเหลี่ยมเปิดร่วมกับ neighbor ของมันหรือไม่
    • ใน for loop ให้วนซ้ำผ่านชุดค่าผสมของความสัมพันธ์สามเหลี่ยมที่เป็นไปได้ทั้งหมด
    • หาก node n1 และ n2 ไม่มี เส้นเชื่อมระหว่างกัน ให้กำหนด in_open_triangle เป็น True แล้ว break ออกจาก if statement และ return in_open_triangle
  • ใช้ฟังก์ชันนี้เพื่อนับจำนวนสามเหลี่ยมเปิดทั้งหมดที่มีอยู่ใน T
    • ใน for loop ให้วนซ้ำผ่านทุก node ใน T
    • หาก node n ปัจจุบันอยู่ในสามเหลี่ยมเปิด ให้เพิ่มค่า num_open_triangles ขึ้น 1

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

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

from itertools import combinations

# Define node_in_open_triangle()
def node_in_open_triangle(G, n):
    """
    Checks whether pairs of neighbors of node `n` in graph `G` are in an 'open triangle' relationship with node `n`.
    """
    in_open_triangle = False

    # Iterate over all possible triangle relationship combinations
    for n1, n2 in ____:

        # Check if n1 and n2 do NOT have an edge between them
        if not ____:

            in_open_triangle = ____

            break

    return ____

# Compute the number of open triangles in T
num_open_triangles = 0

# Iterate over all the nodes in T
for n in ____:

    # Check if the current node is in an open triangle
    if ____:

        # Increment num_open_triangles
        ____ += 1

print(num_open_triangles)
แก้ไขและรันโค้ด