ค้นหาชุดของการจับคู่ขอบสูงสุด
พิจารณากราฟที่ไม่ได้ทำการเชื่อมต่อ ชุดการจับคู่ของขอบบนกราฟนี้ถูกกำหนดให้เป็นชุดของขอบเช่นว่าไม่มีสองขอบในส่วนแบ่งชุดจุดสุดยอดที่พบบ่อย ตัวอย่างเช่นรูปด้านซ้ายแสดงชุดการจับคู่เป็นสีเขียวในขณะที่รูปขวาแสดงถึงชุดการจับคู่ที่ไม่ใช่สีแดง มีการกล่าวถึงชุดการจับคู่maximally matchingหรือmaximal matchingถ้าไม่สามารถเพิ่มขอบของกราฟลงในชุดการจับคู่ได้ ดังนั้นทั้งสองตัวอย่างข้างต้นไม่ใช่ชุดการจับคู่สูงสุด แต่ชุดทั้งสองด้านล่างเป็นสีน้ำเงินเป็นการจับคู่สูงสุด โปรดทราบว่าการจับคู่สูงสุดไม่จำเป็นต้องซ้ำกัน นอกจากนี้ยังไม่มีข้อกำหนดว่าขนาดของการจับคู่สูงสุดที่เป็นไปได้สำหรับกราฟนั้นเท่ากับการจับคู่อื่น เป้าหมายของความท้าทายนี้คือการเขียนโปรแกรม / ฟังก์ชั่นเพื่อค้นหาการจับคู่สูงสุดของกราฟ อินพุต สมมติว่าจุดยอดทั้งหมดของกราฟป้อนข้อมูลมีจำนวนเต็มต่อเนื่องเริ่มต้นที่ค่าจำนวนเต็มเริ่มต้นที่คุณเลือก ขอบถูกอธิบายโดยคู่เลขจำนวนเต็มที่ไม่เรียงลำดับซึ่งหมายถึงจุดยอดที่ขอบเชื่อมต่อ ตัวอย่างเช่นกราฟที่แสดงด้านบนสามารถอธิบายได้ด้วยชุดของขอบที่ไม่เรียงลำดับดังต่อไปนี้ (สมมติว่าจำนวนของจุดยอดเริ่มต้นที่ 0): [(0,1), (0,2), (1,3), (1,4), (2,3), (3,4), (3,5), (5,6)] อีกทางเลือกหนึ่งในการอธิบายกราฟคือผ่านรายการ adjacency นี่คือตัวอย่างของรายการ adjacency สำหรับกราฟด้านบน: [0:(1,2), 1:(0,3,4), 2:(0,3), 3:(1,2,4,5), 4:(1,3), 5:(3,6), 6:(5)] โปรแกรม / ฟังก์ชั่นของคุณจะต้องใช้กราฟอินพุตจากแหล่งใด ๆ (stdio, พารามิเตอร์ฟังก์ชั่น ฯลฯ ) คุณสามารถใช้สัญลักษณ์ใดก็ได้ที่ต้องการตราบใดที่ไม่มีการสื่อสารข้อมูลที่ไม่สำคัญเพิ่มเติมกับโปรแกรมของคุณ ตัวอย่างเช่นการมีพารามิเตอร์พิเศษเพื่อแสดงว่าจำนวนของขอบอินพุตนั้นเป็นที่ยอมรับได้อย่างสมบูรณ์ ในทำนองเดียวกันการส่งผ่านหลายเซ็ตของขอบรายการคำนำหรือเมทริกซ์ …