พื้นหลัง
ในขณะที่เขียนสิ่งนี้ปัญหา P vs NP ยังไม่ได้รับการแก้ไข แต่คุณอาจเคยได้ยินบทความใหม่ของNorbert Blum ที่อ้างว่าเป็นหลักฐานพิสูจน์ว่า P! = NP ซึ่งเป็นที่สงสัยกันว่าผิดพลาด (แต่เราจะเห็น)
ปัญหาที่กล่าวถึงในบทความนี้เป็นปัญหากลุ่มพรรคพวก อย่างน้อยนั่นคือสิ่งที่ฉันอ่านในบทความในหนังสือพิมพ์ดังนั้นให้แก้ไขฉันถ้าฉันผิด แต่ไม่ว่าในกรณีใดฉันต้องการให้คุณเขียนโปรแกรมที่ช่วยแก้ไขตัวแปรต่อไปนี้:
งาน
สมมติว่าเรามีโรงเรียนขนาดใหญ่ที่มีนักเรียนจำนวนมาก นักเรียนเหล่านี้แต่ละคนมีเพื่อนที่โรงเรียนนี้ ก๊กของนักเรียนเป็นกลุ่มประกอบด้วยเพียงของนักเรียนที่เป็นเพื่อนกับสมาชิกแต่ละคนอื่น ๆ
โปรแกรมของคุณจะได้รับนักเรียนที่เป็นเพื่อนเป็นคู่ของมัน จากข้อมูลนี้โปรแกรมจะต้องพบว่าขนาดของก๊กที่ใหญ่ที่สุด นักเรียนจะระบุรหัสจำนวนเต็ม
หากคุณชอบคำศัพท์ทางคณิตศาสตร์หมายความว่าคุณได้รับขอบของกราฟที่ไม่ได้บอกทิศทางโดยแต่ละโหนดมีสองโหนด
อินพุต
[[1,2],[2,5],[1,5]]
การป้อนข้อมูลของคุณจะเป็นรายการที่ไม่ว่างเปล่าของคู่จำนวนเต็มบวกเช่น คุณสามารถรับอินพุตนี้ในรูปแบบที่เหมาะสมเช่นเป็นอาร์เรย์ของอาร์เรย์เป็นบรรทัดของข้อความที่มีตัวเลขสองตัวต่อกัน ฯลฯ ...
เอาท์พุต
ผลลัพธ์ที่คาดหวังคือตัวเลขเดียวn >= 2
: ขนาดของกลุ่มที่ใหญ่ที่สุด ด้วยตัวอย่างเช่นการป้อนข้อมูลดังกล่าวข้างต้นผลจะเป็น3
เช่นเดียวกับนักเรียนทุกคน ( 1
, 2
และ5
) เป็นเพื่อนกับแต่ละอื่น ๆ
กรณีทดสอบ
[[1,2]]
=> 2
[[1,2],[3,1],[3,4]]
=> 2
[[1,2],[2,5],[1,5]]
=> 3
[[2,5],[2,3],[4,17],[1,3],[7,13],[5,3],[4,3],[4,1],[1,5],[5,4]]
=> 4 (the largest clique is [1,3,4,5])
[[15,1073],[23,764],[23,1073],[12,47],[47,15],[1073,764]]
=> 3 (the largest clique is [23,764,1073])
[[1296,316],[1650,316],[1296,1650],[1296,52],[1650,711],[711,316],[1650,52],
[52,711],[1296,711],[52,316],[52,1565],[1565,1296],[1565,316],[1650,1565],
[1296,138],[1565,138],[1565,711],[138,1650],[711,138],[138,144],[144,1860],
[1296,1860],[1860,52],[711,1639]]
=> 6 (the largest clique is [52,316,711,1296,1565,1650])
คุณสามารถใช้การอ้างอิงนี้ (โง่) (พิมพ์เอาต์พุตพิเศษด้วย-d
แฟล็ก) เพื่อตรวจสอบผลลัพธ์ของกรณีทดสอบอื่น ๆ
กฎระเบียบ
- โปรแกรมของคุณไม่ต้องการผลลัพธ์ที่กำหนดจากอินพุตที่ไม่ถูกต้อง ดังนั้นคุณสามารถสันนิษฐานได้ว่า:
- คุณจะได้รับID อย่างน้อยหนึ่งคู่เสมอ
- แต่ละคู่ประกอบด้วยสอง ID ที่แตกต่างกัน
- ไม่มีคู่ปรากฏขึ้นสองครั้ง (การสลับตำแหน่งของรหัสจะยังคงเป็นคู่เดียวกัน)
- อัลกอริทึมของคุณไม่ได้รับอนุญาตให้ตั้งค่าขอบเขตบนของขนาดอินพุต ข้อ จำกัด ทางเทคนิคอย่างแท้จริงและข้อ จำกัด ที่กำหนดโดยภาษา / สภาพแวดล้อมของคุณ (เช่นขนาดสแต็คเวลาคำนวณ ฯลฯ ) แน่นอนว่าหลีกเลี่ยงไม่ได้
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- นี่คือcode-golfดังนั้นโค้ดที่สั้นที่สุดที่วัดเป็นไบต์จะเป็นผู้ชนะ
- หากอัลกอริทึมของคุณมีความซับซ้อนของเวลาพหุนามคุณจะให้คะแนน
-1
ทันทีโดยไม่คำนึงถึงขนาดของโค้ด แต่ในกรณีนี้คุณอาจต้องการส่งโซลูชันของคุณไปที่อื่น ;)
-1
เป็นดีสมควร ;)