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