Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาจุดศูนย์กลางของ star graph ใน Python


สมมติว่าเรามี star graph แบบไม่มีทิศทางที่มี n โหนดตั้งชื่อ 1 ถึง n ตามที่รู้ star graph คือกราฟที่มีโหนดศูนย์กลางหนึ่งตัว และมีเส้นขอบ n - 1 เส้นเชื่อมโหนดศูนย์กลางกับโหนดอื่นๆ ทุกตัว เราต้องหาศูนย์กลางของ star graph ที่กำหนด

เช่น ถ้าอินพุตเป็นดังภาพ ผลลัพธ์จะเป็น 3 เพราะ 3 อยู่ตรงกลาง

วิธีแก้ปัญหา

  • seen := เซตใหม่
  • สำหรับแต่ละเส้นขอบ (u,v) ใน graph:
    • ถ้า u อยู่ใน seen: return u
    • ถ้า v อยู่ใน seen: return v
    • เพิ่ม u ลง seen
    • เพิ่ม v ลง seen

ตัวอย่าง

def solve(graph):
    seen = set()
    for u, v in graph:
        if u in seen:
            return u
        if v in seen:
            return v
        seen.add(u)
        seen.add(v)

graph = [(1,3),(2,3),(4,3),(5,3),(6,3)]
print(solve(graph))

อินพุต

[(1,3),(2,3),(4,3),(5,3),(6,3)]

เอาต์พุต

3