Motivasi : Ketika mengembangkan alat untuk versi data, kami akhirnya mencari ke dalam algoritma untuk "membedakan" dua set bilangan bulat, dengan menghasilkan serangkaian transformasi yang membawa satu set bilangan bulat ke yang lain. Kami dapat mengurangi masalah itu menjadi masalah sangat alami berikut yang tampaknya memiliki koneksi untuk mengedit jarak, pengelompokan dengan swapping , dan minimum partisi string umum .
Masalah : Kami diberi string, yaitu urutan huruf, dan tujuan kami adalah menyeragamkannya dengan biaya minimum. Artinya, kami ingin urutan yang disusun ulang sehingga semua huruf yang sama bersebelahan.
Satu-satunya operasi yang diizinkan adalah untuk mengambil urutan surat yang sama, dan memindahkan urutan itu di mana saja, dan yang saya biaya 1 unit.
Bantuan apa pun yang menggambarkan kompleksitas masalah ini akan sangat dihargai!
Contoh :
- aabcdab: Input
- bcd aa ab: Setelah memindahkan aa pertama ke posisi tepat setelah "d"
- b bcdaaa: Setelah memindahkan trailing b ke posisi pertama
Karena string yang dihasilkan adalah homogen, kami memiliki biaya 2.
Perhatikan bahwa kami tidak dibatasi dengan cara apa pun sehubungan dengan output: selama itu homogen, kami tidak perlu memastikan urutan tertentu.