ฉันกำลังคิดถึงปัญหาต่อไปนี้อยู่พักหนึ่งและฉันไม่พบวิธีแก้ปัญหาแบบพหุนาม สัตว์เดียรัจฉานเท่านั้น ฉันได้พยายามลดปัญหา NP-Complete ลงด้วยเช่นกันโดยไม่ประสบความสำเร็จ
นี่คือปัญหา :
คุณมีชุดเรียงลำดับของคู่จำนวนเต็มบวก
การดำเนินการต่อไปนี้สามารถใช้กับคู่: Swap(pair)
. มันสลับองค์ประกอบของคู่ดังนั้นจะกลายเป็น
เมื่อมีการสลับคู่ในชุดนั้นชุดนั้นก็จะถูกจัดเรียงอีกครั้งโดยอัตโนมัติ (คู่ที่สลับนั้นจะออกนอกสถานที่และมันจะถูกย้ายไปที่ที่ตั้งในชุด)
ปัญหาประกอบด้วยเมื่อดูว่ามีลำดับที่เริ่มต้นในบางคู่แลกเปลี่ยนทั้งชุดโดยมีเงื่อนไขดังต่อไปนี้:
หลังจากสลับคู่แล้วคู่ถัดไปที่จะสลับจะต้องเป็นตัวตายตัวแทนหรือคู่ก่อนหน้าในชุด
มันจะเป็นการดีถ้าคุณหาวิธีแก้ปัญหาเวลาแบบพหุนามกับปัญหานี้หรือลดปัญหา NP-Complete ลงไป
หมายเหตุ:
มันเป็นปัญหาการตัดสินใจอยู่แล้ว ฉันไม่ต้องการที่จะรู้ว่าลำดับคือ: เฉพาะถ้ามีลำดับ
ตัวอย่างของวิธีการเรียงลำดับชุดหลังจากสลับคู่
ถ้าฉันสลับคู่แรกมันจะกลายเป็น: และหลังจากเรียงลำดับชุด (วางคู่ที่เรียงลำดับในตำแหน่งใหม่) เรามี:
จากนั้นฉันต้องสลับทั้งคู่ (รุ่นก่อน) หรือ( 7 , 8 ) (ตัวช่วย) และทำซ้ำกระบวนการจนกว่าคู่ทั้งหมดจะถูกสลับ (ถ้าเป็นไปได้)
สำคัญ:
คุณไม่สามารถสลับคู่ที่แลกเปลี่ยนแล้ว
หากมีการดำเนินการตามลำดับของ 'swap' ดังนั้นคู่ทั้งหมดจะต้องเปลี่ยนเป็นครั้งเดียว
ตัวอย่างที่ไม่สามารถสลับคู่ทั้งหมดได้
( 1 , 4 ) ( 3 , 2 ) ( 5 , 5 )