ก่อนอื่น เราจะโมเดลโจทย์เป็นกราฟมีทิศทาง โดยให้จุดยอดแต่ละจุดแทนชั้น และเส้นเชื่อมแต่ละอันแทนสไลเดอร์ที่เชื่อมระหว่างชั้น กราฟที่จะได้มานั้นจะมี จุดยอด โดยที่จะมีเส้นเชื่อมน้ำหนัก ที่เชื่อม ไปหา ถ้า
จากนั้นเราจะสร้างจุดยอดพิเศษ โดยที่มีเส้นเชื่อมจาก ไปหาจุดยอด ใด ๆ ให้มีน้ำหนักเป็น และเราจะสร้างจุดยอดพิเศษ โดยที่มีเส้นเชื่อมจากจุดยอด ใด ๆ ที่ไม่ใช่ ไปหา และมีน้ำหนักเป็น
เมื่อเราสร้างกราฟเสร็จ ให้เรามองน้ำหนักของเส้นเชื่อมเป็นความจุของเส้นเชื่อมแทน จะได้ว่าคำตอบของโจทย์ข้อนี้จะมีค่าเท่ากับ maximum flow ระหว่างจุดยอด ไปหา นั่นเอง
แต่เนื่องจากกราฟของเรามี จุดยอด จุด และมีเส้นเชื่อม เส้น อัลกอริธึมในการหา maximum flow ทั่ว ๆ ไปจะทำงานไม่ทัน ยกตัวอย่างเช่น
- Ford-Fulkerson algorithm ใช้เวลา ไม่ทันเวลา
- Edmonds-Karp algorithm ใช้เวลา ไม่ทันเวลา
- Dinic's algorithm ใช้เวลา ไม่ทันเวลา
หรือแม้แต่ Orlin's Algorithm ที่ทำงานได้เร็วมากในเวลา ก็จะยังทำงานไม่ทัน
ดังนั้นเราควรจะหาวิธีอื่นในการแก้ปัญหานี้
ก่อนอื่น เรารู้ว่าค่าของ maximum flow จะมีค่าเท่ากับ minimum cut ตาม max-flow min-cut theorem ดังนั้นถ้าเราหาค่า minimum cut ในกราฟนี้ได้ เราก็จะได้คำตอบเลย
ปกติแล้วในการหา minimum cut เราจะหาจากการหา maximum flow แต่ด้วยโครงสร้างกราฟของโจทย์ข้อนี้ การหา minimum cut นั้นง่ายกว่า maximum flow มาก
ในการหา minimum cut เราจะให้ แทน minimum cut ตั้งแต่ชั้นที่ ถึง โดยมีจุดยอดตั้งแต่ ถึง ที่เมื่อมาถึงแล้วสามารถพาออกไปหา ได้ทั้งหมด จุดยอด
สำหรับ base case เราจะให้ เทอมแรกคือการตัดเส้นเชื่อมฝั่งขาเข้าเท่านั้น และเทอมหลังคือการตัดเส้นเชื่อมฝั่งขาออกเท่านั้น โดยจะต้องจ่ายเพิ่มอีก ในการตัดเส้นเชื่อมที่จะพาไปจุดยอดที่หลงเหลือไว้ด้วย
สำหรับการ transition ใน general case จาก เราจะพิจารณาทั้งหมด 3 กรณี
- ตัดเส้นเชื่อมแค่ฝั่งขาเข้าอย่างเดียว สำหรับกรณีนี้ เราไม่จำเป็นต้องตัดเส้นเชื่อม เส้น แต่ในชั้นถัดไป จุดยอดนี้สามารถเป็นทางผ่านในการเดินทางไปหา ได้ จึงจะมีค่าเพิ่มขึ้น ค่าใช้จ่ายในกรณีนี้คือ
- ตัดเส้นเชื่อมฝั่งขาออกอย่างเดียว ในกรณีนี้เราต้องตัดเส้นเชื่อม เส้น ที่จะพาไปจุดยอดที่จะพาไปหา แต่ในที่นี้จุดยอดนี้จะไม่สามารถเป็นทางผ่านได้ เพราะเราได้ตัดฝั่งขาออกแล้ว ค่าใช้จ่ายในกรณีนี้คือ
- ตัดเส้นเชื่อมทั้งฝั่งขาเข้าและขาออก ในกรณีนี้จุดยอดของเราจะเป็นจุดยอดที่เป็นทางผ่านได้ก็ต่อเมื่อเรามีจุดยอดทางผ่านอยู่แล้วอย่างน้อยหนึ่งจุด นั่นคือ ดังนั้นค่าใช้จ่ายในกรณีนี้คือ โดยเทอม จะเท่ากับ ถ้า มิเช่นนั้นจะเท่ากับ
ดังนั้น recurrence relation ของเราคือ
เราจึงสามารถแก้ปัญหานี้ได้ในเวลา