Мотивація : Розробляючи інструменти для версії даних, ми переглянули алгоритми для "розрізнення" двох наборів цілих чисел, створивши послідовність перетворень, які приймають один набір цілих чисел до іншого. Нам вдалося звести цю проблему до наступної дуже природної проблеми, яка, здається, має з'єднання для редагування відстані, групування шляхом заміни та мінімальний загальний розділовий рядок .
Проблема : нам дають рядок, тобто послідовність букв, і наша мета - гомогенізувати її за мінімальних витрат. Тобто, ми хочемо, щоб впорядкована послідовність була такою, щоб усі букви, які були однакові, знаходилися поруч.
Єдина операція, яка дозволена, - це підбір послідовностей букв, які є однаковими, і переміщення цього підпорядкування куди завгодно, і це коштує мені 1 одиницю.
Будь-яка допомога, що характеризує складність цієї проблеми, буде дуже вдячна!
Приклад :
- aabcdab: Введення
- bcd aa ab: Після переміщення першого aa в положення відразу після "d"
- b bcdaaa: Після переміщення кінця b у перше положення
Оскільки отриманий рядок є однорідним, у нас є вартість 2.
Зауважте, що ми ні в якому разі не обмежуємось щодо результату: доки він однорідний, нам не потрібно забезпечувати будь-якого конкретного порядку.