ปัญหาการมอบหมายเป็นเวลาหลายวัน


10

ฉันมีปัญหาที่สามารถลดปัญหาการมอบหมาย (ในคำถามก่อนหน้านี้ฉันพบวิธีการดังกล่าว)

ซึ่งหมายความว่าเรามีชุดของตัวแทนและชุดของงานเช่นเดียวกับฟังก์ชั่นค่าใช้จ่ายJ) เราต้องหางานที่ได้รับมอบหมายเพื่อให้ค่าใช้จ่ายทั้งหมดน้อยATc(i,j)

อัลกอริทึมฮังการีสามารถหาทางออกที่ดีที่สุดในเวลาอย่างน้อย4) ซึ่งฟังดูดีสำหรับฉันO(n4)

ปัญหาใหม่ของฉันคือ: มีจำนวนวันที่กำหนด ผมต้องแก้ปัญหาที่ได้รับมอบหมายในแต่ละวันเพื่อให้งานทุกคนจะทำทุกวันและตัวแทนจะไม่มีงานเดียวกันสองครั้ง

สิ่งที่ฉันได้ลอง: เราสามารถเรียกใช้อัลกอริธึมของฮังการีแยกกันในแต่ละวันและ จำกัด จำนวนของชุดค่าผสมที่เป็นไปได้ตามผลลัพธ์ของวันก่อนหน้า แต่สิ่งนี้จะทำให้เราเดือดร้อนในบางวันต่อมาซึ่งเป็นไปได้ยากที่จะหาวิธีแก้ปัญหาที่เป็นไปได้

อีกแนวคิดหนึ่งคือการรวมการค้นหาในท้องถิ่นเข้ากับการเปลี่ยนแปลงการตัดสินใจในวันก่อนหน้า แต่ฉันคิดว่าเราไม่สามารถวางใจได้

อินสแตนซ์ปัญหาที่ฉันต้องเผชิญจะอยู่ที่ใดที่หนึ่ง500 เมทริกซ์ต้นทุนจะมีค่าเท่ากันจำนวนมาก (เช่นส่วนใหญ่ 1 หรืออินฟินิตี้เพียงบาง 2 หรือ 3) ดังนั้นระหว่างอัลกอริธึมของฮังการีจึงมีพื้นที่มากมายในการสร้างโซลูชันที่ดีที่สุดที่แตกต่างกันในหนึ่งวัน|A|=|T|=500C(i,j)

ฉันยินดีที่จะรับฟังแนวคิดหรือคำแนะนำวิธีหาวิธีแก้ไขปัญหาที่ดี ขอบคุณล่วงหน้า.


1
นี่เป็นคำถามที่ยอดเยี่ยม! ฉันขอแนะนำให้ใช้โฟลว์ต้นทุนขั้นต่ำทฤษฎีการแต่งงานของ Hall และการจับคู่สองฝ่ายสูงสุด
Peter Shor

คำตอบ:


6

มีวิธีการนี้ในเวลาพหุนาม ฉันจะร่างอัลกอริทึม (เรียงกลับกัน ... ทำขั้นตอนที่ 2 ก่อนและขั้นตอนที่ 1 วินาที)

  1. ถ้าเราสามารถหาชุดของ agent-task pairsเช่นนั้นแต่ละงานอยู่ในคู่แน่นอนตัวแทนแต่ละตัวอยู่ในคู่อย่างแน่นอนและไม่มีคู่ใดปรากฏขึ้นมากกว่าหนึ่งครั้งจากนั้นเราจะพบการมอบหมายที่ รวมกันครอบคลุมคู่ตัวแทน - งานเหล่านี้ เราทำสิ่งนี้โดยใช้อัลกอริธึมการจับคู่สองฝ่ายสูงสุดซ้ำ ๆ เพื่อค้นหาการจับคู่ที่สมบูรณ์แบบในกราฟ bipartite ที่สอดคล้องกันและลบการกำหนดนั้นออกจากกราฟ ทฤษฎีการแต่งงานของ Hallรับประกันได้ว่าเราสามารถทำได้( i , j ) k k k n knk(i,j)kkknk

  2. เราสามารถหาชุดขั้นต่ำค่าใช้จ่ายของคู่ตัวแทนงานเช่นเดียวกับในขั้นตอนที่ 1 โดยใช้การไหลนาทีค่าใช้จ่าย พิจารณาเครือข่ายที่มีแหล่ง , อ่างล้างจานและโหนดสำหรับแต่ละตัวแทนและแต่ละงาน เชื่อมต่อแหล่งที่ตัวแทนแต่ละที่มีขอบของความจุและค่าใช้จ่าย0เชื่อมต่องานแต่ละงานจะจมลงไปกับขอบของความจุและค่าใช้จ่าย0ตอนนี้เชื่อมต่อเอเจนต์กับ taskด้วยความจุและต้นทุนs t k 0 k 0 ฉันj 1 c ( i , j ) 0 1 ( i , j ) 1nkstk0k0ij1c(i,j). การไหลของต้นทุนต่ำสุดในเครือข่ายนี้รับประกันว่าเป็นส่วนหนึ่ง (เนื่องจากความสามารถทั้งหมดเป็นส่วนประกอบและมีทฤษฎีบทที่บอกว่าสิ่งนี้บอกเป็นนัยว่ามีการไหลเวียนที่สมบูรณ์แบบต้นทุนต่ำสุด) ดังนั้นการไหลของแต่ละขอบ เป็นหรือ1ขอบมี flowสร้างชุดของคู่ในขั้นตอนที่ 101(i,j)1

ยังมีอีกหลายขั้นตอนวิธีการที่สามารถแก้มีการไหลนาทีค่าใช้จ่าย ; มันเป็นกรณีพิเศษของการเขียนโปรแกรมเชิงเส้น สำหรับปัญหาขนาดของคุณอัลกอริทึมที่ฉันวาดไม่ควรเป็นพหุนามเวลาเท่านั้น แต่ยังสามารถใช้งานได้จริง


หนึ่งคำถามสุดท้าย: อัลกอริธึมการไหลของราคาต่ำสุดในขั้นตอนที่ 2 (ฉันเลือกการยกเลิกวงจรสำหรับการเริ่มต้น) ให้ทางออกที่ดีที่สุด อัลกอริทึมการจับคู่สูงสุดในขั้นตอนที่ 1 ทำเช่นนั้น นี่หมายถึงว่าโซลูชั่นทั้งหมดนั้นดีที่สุดหรือไม่? เพราะฉันเดาว่าปัญหาคือปัญหา NP-Complete
Patrick Schmidt

1
ทางออกทั้งหมดนั้นดีที่สุด นี่จะเป็นคำถามที่ดีในการกำหนดหลักสูตรการปรับให้เหมาะสมแบบ Combinatorial เพราะมันค่อนข้างน่าแปลกใจที่คุณสามารถทำได้
Peter Shor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.