Складність гомогенізації струни


10

Мотивація : Розробляючи інструменти для версії даних, ми переглянули алгоритми для "розрізнення" двох наборів цілих чисел, створивши послідовність перетворень, які приймають один набір цілих чисел до іншого. Нам вдалося звести цю проблему до наступної дуже природної проблеми, яка, здається, має з'єднання для редагування відстані, групування шляхом заміни та мінімальний загальний розділовий рядок .

Проблема : нам дають рядок, тобто послідовність букв, і наша мета - гомогенізувати її за мінімальних витрат. Тобто, ми хочемо, щоб впорядкована послідовність була такою, щоб усі букви, які були однакові, знаходилися поруч.

Єдина операція, яка дозволена, - це підбір послідовностей букв, які є однаковими, і переміщення цього підпорядкування куди завгодно, і це коштує мені 1 одиницю.

Будь-яка допомога, що характеризує складність цієї проблеми, буде дуже вдячна!

Приклад :

  • aabcdab: Введення
  • bcd aa ab: Після переміщення першого aa в положення відразу після "d"
  • b bcdaaa: Після переміщення кінця b у перше положення

Оскільки отриманий рядок є однорідним, у нас є вартість 2.

Зауважте, що ми ні в якому разі не обмежуємось щодо результату: доки він однорідний, нам не потрібно забезпечувати будь-якого конкретного порядку.

Відповіді:


6

Ця проблема є NP-повною шляхом зменшення з мінімального набору ударів .

USsS,sUHUsS,hHhs

Скорочення полягає в наступному:

  • uUussSusu

  • s|s|1suusu

  • ususssSssu

  • |s|+|H|H

Оскільки мінімальний набір ударів NP-Hard, також оптимально гомогенізувати рядок. Оскільки ходи утворюють свідка, він є NP-Complete.


Це елегантне зменшення - дякую!
Aditya Parameswaran

2

Подивіться на кількість змін від однієї літери до іншої у вашому рядку, яку ви можете бачити як міру для неоднорідності рядка. З кожним (корисним) переміщенням підрядки ви зменшуєте це число на одиницю, якщо передує наступній послідовності, а за нею йдуть дві різні літери. Інакше ви зменшите неоднорідність на два.

Тож для рядка з k змінами вам потрібно не більше k - l + 1 переміщення, де l - кількість різних літер у рядку, тому що в кінці кінця l - 1 зміни залишиться. Оскільки рядок довжиною n може мати максимум n-1 літерних змін, вона може потребувати не більше n - l рухів. Найменше можлива кількість - це половина від цього.

Таким чином, найкращою стратегією є пошук підрядів форми abbba і переміщення bbb звідти. Коли нічого не залишилося, рухайся чим завгодно. Ви все ще можете спробувати виконати ті операції, які створюють нові ситуації abbba, але я думаю, що виграш буде дуже малим. Оскільки найгірша можлива стратегія (без дурних рухів, що збільшують неоднорідність) використовує щонайменше вдвічі більше рухів, ніж оптимальна, мале, що ви могли б отримати, здається, не має жодного розумного відношення до зусиль, оскільки відповідь isaacg з характеристикою як NP-важко підказує. Якщо, звичайно, ви дійсно не підраховуєте лише кількість переміщення операцій і не піклуєтесь про час, щоб вирішити, які кроки зробити.

Найгірший випадок - це рядок, де кожна літера відрізняється від свого попередника (а ви не отримуєте жодних бонусів abbba). Тут вам потрібна низка операцій, лінійних по довжині струни і майже дорівнює цій довжині.

У вашому прикладі ви маєте 5 -> 4 -> 3 зміни, а 3 дорівнює кількості літер (4) мінус 1.

Бічна примітка: Для алфавіту розміром лише два, кожен хід, який не переміщує префікс або суфікс рядка, зменшує неоднорідність на два, і тому кожна послідовність розумних ходів є оптимальною.


Ви стверджуєте, що переміщення може зменшити кількість змін максимум на 2, але насправді це може зменшити кількість змін до 3. Наприклад, перетворення "aabcabc" в "aaabbcc" шляхом переміщення першої підрядки "bc" в середина другої підрядки "bc" призводить до зменшення кількості змін у рядку з 5 до 2.
Михайло Рудой

Привіт, @MikhailRudoy. У запитаннях зазначено, що операція - "підбір послідовностей букв, подібних", тому bc не дозволяється, наскільки я розумію.
Пітер Лепольд

Я повністю пропустив цю деталь. Ви маєте рацію в цьому випадку.
Михайло Рудой

Петро вірно: ті рухи заборонені.
Aditya Parameswaran

Що стосується: решта відповіді - справді ці спостереження стосуються: нижньої межі, оптимальності алфавіту розміру 2 і евристики щодо того, що робити в будь-який момент, є цінними. Оскільки будь-який крок у гіршому випадку приносить користь лише такій послідовності літер, а в кращому випадку об'єднує щонайбільше дві послідовності літер, як у вашій аббаті, 2-наближення здається природним.
Aditya Parameswaran
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.