สำหรับข้อนี้ จะเป็นการถามหา shortest path ระหว่างคู่จุด หลาย ๆ คู่ โดยรับประกันว่าถามระหว่างคู่ที่จุดเริ่มต้นอยู่ในเซต และจุดสิ้นสุดอยู่ในเซต บนกราฟที่มีเงื่อนไขพิเศษ คือระหว่างจุดเริ่มต้นใด ๆ ไปยังจุดสิ้นสุดใด ๆ จะผ่านจุดยอดอื่น ๆ อย่างน้อย จุดยอดเสมอ กล่าวคือ และกราฟเป็นกราฟมีน้ำหนัก ไม่ระบุทิศทาง และเชื่อมต่อกัน
สำหรับสัญลักษณ์ในเฉลย กำหนดให้
- แทนระยะห่างจากจุดยอด ไปยังจุดยอด บนกราฟระบุทิศทางที่โจทย์กำหนดมาให้
- แทนระยะห่างจากจุดยอด ไปยังจุดยอด โดยไม่นับน้ำหนัก (กล่าวคือ จำนวนเส้นเชื่อมที่น้อยที่สุดที่เป็นไปได้ของ path จาก ไป สำหรับแต่ละ path ใด ๆ)
Observation 1
สังเกตว่า สำหรับกราฟเชื่อมต่อไม่ระบุทิศทางใด ๆ สมมติ เป็น articulation point ที่แบ่งกราฟออกเป็นหลาย connected component และ กับ อยู่คนละ component หลังจากการแบ่งกราฟแล้ว จะได้ว่า path ใด ๆ ที่เชื่อมต่อระหว่าง กับ จะต้องผ่าน
หมายเหตุ เราจะกล่าวว่า เป็น articulation point ของกราฟต่อเนื่องไม่ระบุทิศทาง ก็ต่อเมื่อ หากนิยาม (นั่นคือ เป็นเซตของเส้นเชื่อมที่ติดกับ ) แล้ว จะเป็นกราฟใหม่ที่ไม่ต่อเนื่อง กล่าวคือ จะเป็น articulation point ก็ต่อเมื่อ การลบ ออกจากกราฟทำให้กราฟขาด
ยกตัวอย่างเช่นภาพด้านล่าง
หากพิจารณาทุก path จาก ไปหา จะจำเป็นต้องผ่าน แน่ ๆ เพราะเมื่อนำ ออกจากกราฟจะแบ่งกราฟออกเป็นหลายส่วน และทำให้ กับ อยู่คนละส่วนกัน
Observation 2
สังเกตว่า สำหรับกราฟ ที่เป็นกราฟเชื่อมต่อไม่ระบุทิศทางใด ๆ สมมติมีเซต และ ที่ ถ้า เรารับประกันได้ว่า มี เซต ที่มีสมบัติ เมื่อนำจุดยอดภายในเซต ออกจนหมดแล้วทำให้ไม่มี path ใด ๆ เลยที่เชื่อมระหว่าง ใด ๆ กับ ใด ๆ (กล่าวคือ เป็น s-t cut ของกราฟ ) แล้ว shortest path จาก ใด ๆ ไปหา ใด ๆ จะผ่านอย่างน้อยหนึ่งจุดยอดใน
ยกตัวอย่างเช่นภาพด้านล่าง
หากกำหนดให้ และ และ (จะเห็นได้ว่ามีสมบัติข้างต้น คือเมื่อตัด ออกจากกราฟไปแล้วทำให้ ไม่สามารถไปหา ได้เลย) แล้วจะสังเกตได้ว่า shortest path จาก ใด ๆ ไปยัง ใด ๆ จะต้องผ่านอย่างน้อยหนึ่งจุดยอดใน
ข้อสังเกตดังกล่าว สามารถคิดต่อได้จากข้อสังเกตแรก หากเราสามารถหาเซต ที่แบ่งแยกส่วน ออกจาก ได้เราก็จะได้ว่ายังไง ก็เป็นส่วนจำเป็นที่จะต้องใช้ผ่านทาง ระหว่าง ไปหา
Observation 3
สังเกตว่า สำหรับกราฟใด ๆ สำหรับจุดยอด ที่ ใด ๆ ในกราฟ หากสามารถรับประกันได้ว่ามี shortest path อย่างน้อย 1 วิธีที่ผ่านจุดยอด แน่ๆ เราจะทราบว่า
ข้อสังเกตนี้ เป็นข้อสังเกตที่สังเกตได้ไม่ยาก แต่มีประโยชน์ต่อข้อนี้มาก
Randomized Solution
เมื่อเราทราบข้อสังเกตทั้ง 3 ข้อแล้ว และพบว่ากราฟนั้นมีระยะห่าง (ไม่นับน้ำหนัก) ระหว่าง ใดๆ กับ ใดๆ มาก เราจึงได้ข้อสังเกตเพิ่มเติมว่า น่าจะมีเซต จาก Observation 2 ที่มีขนาดเล็ก เพราะเส้นทางน่าจะซ้ำกันเยอะ เราจึงทำการสุ่มหา ที่สอดคล้องกับเงื่อนไขของ Observation 2 ที่มีขนาดเล็กเพียงพอ (หากโชคดีพอจะได้ประมาณ ถึง จุดยอด ซึ่งเพียงพอต่อเวลา หรืออีกวิธีคือสุ่มมั่วจำกัดแค่ จุดยอดโดยไม่สนใจว่าสอดคล้องเงื่อนไขหรือไม่) หลังจากนั้น ทำ Dijkstra's Algorithm โดยหา single source shortest path จาก แต่ละ ไปหาทุกจุดยอด เมื่อมีคำถามแต่ละคำถามในรูปแบบ เมื่อ และ แล้วจะได้ว่า เป็นคำตอบ (วิธีการจาก Observation 3)
จะได้ว่าใช้เวลาการทำงานรวมเป็น แต่วิธีการนี้ยังไม่ใช่วิธีการที่ผู้เขียนต้องการให้ผ่าน
Min-cut Solution
ปัญหาต่อมาคือเราต้องการหาเซต ที่มีขนาดเล็ก ๆ และสอดคล้องกับ Observation 2 แน่ ๆ ปัญหานี้มีชื่อเรียกว่า Minimum s-t cut ซึ่งก็จะมี Randomized Solution ในการแก้อีกเช่นกัน (เช่นการประยุกต์ใช้ของ Karger's Algorithm) แต่จากการทดลองพยายามหา Minimum s-t cut แล้วจะใช้เวลาเกินเป็นส่วนใหญ่ และยังไม่สามารถทำให้ผ่านได้จริง
คำถามต่อมาคือ เราจำเป็นต้องหาเซต ที่เล็กที่สุดหรือไม่ ซึ่งแท้ที่จริงแล้วเราไม่จำเป็นต้องหาเซต ที่เล็กที่สุด แต่เพียงแค่หาเซตที่เล็กเพียงพอก็สามารถทำได้แล้ว
Lemma 4
สำหรับกราฟ ที่เป็นกราฟเชื่อมต่อไม่ระบุทิศทางใด ๆ ที่มีจำนวนจุดยอดไม่เกิน สมมติมีเซต และ ที่ และ จะได้ว่า มีเซต (ที่มีสมบัติคือ เมื่อนำจุดยอดภายในเซต ออกจนหมดแล้วทำให้ไม่มี path ใด ๆ เลยที่เชื่อมระหว่าง ใด ๆ กับ ใด ๆ ) ที่
Proof
ในการพิสูจน์ จะแบ่งออกเป็นสองส่วน ส่วนแรกคือการพิสูจน์ว่า จะมี ที่ มีขนาดไม่เกิน ส่วนที่สองคือการพิสูจน์ว่า ที่ได้จากส่วนแรกนั้น เป็น s-t cut ของ
เราเริ่มด้วยการหา multiple source shortest path จาก ไปยังทุกจุดยอดที่เหลือใน
หากสำหรับจุดยอด ที่เหลือใน มี เราจะเขียนแทนด้วย
เมื่อเราทำการแบ่งแยกจุดยอดต่าง ๆ ออกเป็นชั้นสมมูลตามค่า ของแต่ละ (กล่าวคือ กำหนดให้ )
Part 1
ต่อมาจะพิสูจน์ว่า โดยการพิสูจน์โดยข้อขัดแย้ง ดังนี้
สมมติให้ จะได้ว่าเซต แต่ละเซตขนาดมากกว่า 50 แต่เนื่องจากมีเซตเหล่านี้อยู่ เซต และไม่มีสองเซตใดที่ซ้อนทับกันอยู่เลย จึงได้ว่า ขัดแย้งกับที่กำหนดว่ามีจุดยอดไม่เกิน จุด
Part 2
ต่อมาจะแสดงว่า สำหรับ ใด ๆ, เป็น s-t cut ของ โดยการพิสูจน์โดยข้อขัดแย้ง ดังนี้
สมมติให้ ที่ ไม่เป็น s-t cut ของ จะได้ว่าหลังลบทุกจุดยอด ที่ ออกไปจากกราฟแล้วยังทำให้สามารถเดินทางจากบาง ไปยังบาง ได้อยู่ เนื่องจากว่าใน path ระหว่าง กับ ใด ๆ เราทราบว่าจุดยอดที่ติดกันใน path จะมี ต่างกันไม่เกิน แน่นอน (สมมติว่าจุดยอดทั้งสองนั้นคือ โดยไม่เสียนัยทั่วไปหาก เราสามารถเปลี่ยนค่า เป็น ได้เลย โดยการเปลี่ยนจากเส้นทางเดิมเป็นเดินจาก ไปยัง ) เมื่อทราบว่า ต่างกันไม่เกิน แน่นอน แสดงว่า เพราะหาก จะได้ว่า มี ใน path จาก ไป ที่ จาก Intermediate Value Theorem (discrete version) ขัดแย้งกับที่สมมติไว้ว่า
ในจุดนี้ จึงสามารถสรุป Lemma 4 ได้
Solution
จาก proof ของ Lemma 4 นั้น เราอาศัย multiple source shortest path ในการกำหนดค่า สำหรับแต่ละ แล้วเราพบว่าการกระทำดังกล่าวจะมี ที่ แน่ ๆ เราจึงใช้ข้อสังเกตนี้ทำการหา ดังกล่าว และกำหนด เป็น s-t cut ที่นำมาใช้พิจารณา จะได้ว่าต้องทำการหา shortest path ไม่เกิน ครั้ง
จะได้ว่าใช้เวลาการทำงานรวมเป็น เหมือนเดิม แต่รับประกันว่า