Мотивация : Разрабатывая инструменты для управления версиями данных, мы в конечном итоге изучили алгоритмы «различий» двух наборов целых чисел, предложив последовательность преобразований, которые переводят один набор целых чисел в другой. Мы смогли свести эту проблему к следующей очень естественной проблеме, которая, кажется, имеет соединения для редактирования расстояния, группировки путем замены и минимального общего строкового раздела .
Проблема : Нам дана строка, то есть последовательность букв, и наша цель состоит в том, чтобы гомогенизировать ее с минимальными затратами. То есть мы хотим переставить последовательность так, чтобы все одинаковые буквы были рядом друг с другом.
Единственная разрешенная операция - это подобрать подпоследовательность одинаковых букв и переместить эту подпоследовательность куда угодно, и это стоит мне 1 единицу.
Любая помощь, характеризующая сложность этой проблемы, будет высоко ценится!
Пример :
- aabcdab: вход
- bcd aa ab: после перемещения первого aa в положение сразу после «d»
- b bcdaaa: после перемещения трейлера b в первую позицию
Поскольку полученная строка является однородной, мы имеем стоимость 2.
Обратите внимание, что мы ничем не ограничены в отношении вывода: пока он однороден, нам не нужно обеспечивать какой-либо конкретный порядок.