ในบทความนี้ เราจะพูดถึงโปรแกรมเพื่อค้นหาขนาดจุดยอดต่ำสุดของกราฟที่กำหนดโดยใช้การค้นหาแบบไบนารี
การปกคลุมจุดยอดขั้นต่ำคือชุดของจุดยอดของกราฟที่กำหนด โดยที่ทุกขอบในกราฟจะเป็นเหตุการณ์ของจุดยอดจุดใดจุดหนึ่งในชุดนั้น
ตัวอย่างเช่น ใช้กราฟ
<ก่อนหน้า>2 ---- 4 ---- 6| || || |3 ---- 5ในที่นี้ จุดยอดจุดต่ำสุดเกี่ยวข้องกับจุดยอด 3 และ 4 ขอบทั้งหมดของกราฟเกิดขึ้นที่จุดยอด 3 หรือ 4 จุดของกราฟ
ตัวอย่าง
#includeใช้เนมสเปซ std;#define สูงสุด 15//array เพื่อเก็บ graphbool arr[max][max];// ตรวจสอบว่าจุดยอดต่ำสุดมีอยู่หรือไม่ check_cover (int V, int k, int E) { ชุด int =(1 < > 2) / c) | ร; } return false;}//เพื่อค้นหาจุดยอดต่ำสุด find_cover (int n, int m) {// ดำเนินการค้นหาไบนารี int ซ้าย =1, ขวา =n; ในขณะที่ (ขวา> ซ้าย){ int mid =(ซ้าย + ขวา)>> 1; if (check_cover(n, mid, m) ==false) left =mid + 1; อย่างอื่นขวา =กลาง; } กลับทางซ้าย;}//แทรกขอบใน graphvoid add_edge(int u, int v) { arr[u][v] =1; arr[v][u] =1;}int main() { memset(arr, 0, sizeof arr); int V =6, E =5; add_edge(2, 3); add_edge(2, 4); add_edge(3, 5); add_edge(4, 5); add_edge(4, 6); cout <<"ขนาดของจุดยอดขั้นต่ำปก :" < ผลลัพธ์
ขนาดของจุดยอดขั้นต่ำ :2