แรงจูงใจ : ในขณะที่พัฒนาเครื่องมือสำหรับการกำหนดเวอร์ชันของข้อมูลเราลงเอยด้วยการค้นหาอัลกอริธึมสำหรับ "diff" ที่เป็นจำนวนเต็มสองชุดโดยการหาลำดับของการแปลงที่นำจำนวนเต็มหนึ่งชุดมาเป็นชุด เราสามารถที่จะลดปัญหาว่าปัญหาที่เกิดขึ้นเป็นธรรมชาติมากต่อไปนี้ที่ดูเหมือนว่าจะมีการเชื่อมต่อกับการแก้ไขระยะทาง, การจัดกลุ่มโดยการแลกเปลี่ยนและพาร์ทิชันสตริงต่ำสุดที่พบบ่อย
ปัญหา : เราได้รับสตริงคือลำดับของตัวอักษรและเป้าหมายของเราคือ ทำให้เป็นเนื้อเดียวกันในราคาต่ำสุด นั่นคือเราต้องการลำดับการจัดเรียงใหม่เพื่อให้ตัวอักษรทั้งหมดที่เหมือนกันอยู่ติดกัน
การดำเนินการเดียวที่ได้รับอนุญาตคือการเลือกลำดับของตัวอักษรที่เหมือนกันและย้ายลำดับที่ใดก็ได้และนั่นทำให้ฉันเสียค่าใช้จ่าย 1 หน่วย
ความช่วยเหลือใด ๆ ที่บ่งบอกถึงความซับซ้อนของปัญหานี้จะได้รับการชื่นชมมาก!
ตัวอย่าง :
- aabcdab: อินพุต
- bcd aa ab: หลังจากย้ายaa ตัวแรกไปยังตำแหน่งหลังจาก "d"
- b bcdaaa: หลังจากย้ายbต่อท้ายไปยังตำแหน่งแรก
เนื่องจากสตริงผลลัพธ์เป็นเนื้อเดียวกันเราจึงมีราคาเท่ากับ 2
โปรดทราบว่าเราไม่ได้ถูก จำกัด แต่อย่างใดเกี่ยวกับผลลัพธ์: ตราบใดที่มันเป็นเนื้อเดียวกันเราไม่จำเป็นต้องตรวจสอบคำสั่งซื้อใด ๆ