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

ตรวจสอบว่าเลขช่วง (degree) ของจุดยอด แทนกราฟหรือต้นไม้ (Tree) ใน Python


ปัญหา

ให้รายการเลขช่วงของจุดยอด ตรวจสอบว่าเป็นต้นไม้ (Tree) หรือกราฟทั่วไป (Graph)

ทฤษฎี

สำหรับกราฟที่มี V จุดยอด และ E เส้นขอบ:

  • ต้นไม้: E = V - 1 และสัมพันธ์กัน
  • ผลรวมเลขช่วง = 2E (Handshaking Lemma)
  • ดังนั้น ต้นไม้ต้องมี sum(degrees) = 2*(V-1)

ตัวอย่าง

deg = [2,2,3,1,1,1] → V=6, sum=10, 2*(6-1)=10 → "Tree"

โค้ดตัวอย่าง

def solve(deg):
    vert = len(deg)
    deg_sum = sum(deg)
    if 2 * (vert - 1) == deg_sum:
        return 'Tree'
    return 'Graph'

deg = [2, 2, 3, 1, 1, 1]
print(solve(deg))  # Tree

อินพุต / เอาต์พุต

Input:  [2,2,3,1,1,1]
Output: Tree