2008 г.
Нечеткое сравнение коллекций: семантический и алгоритмический аспекты
Семенов В.А., Морозов С.В., Тарлапан О.А., Энкович И.В.
Труды Института системного программирования РАН
Работа коллектива поддержана РФФИ (грант 07-01-00427).
Назад Содержание Вперёд
8. Сортированные последовательности
Наличие свойств сортировки для последовательностей элементов
позволяет существенно ускорить процедуры сравнения коллекций
и применения
соответствующих операций дельты
. Способ представления дельты в
этих случаях повторяет ранее описанный для произвольных списков, однако методы
ее вычисления допускают оптимизацию с учетом свойств порядка. Вместо
вычислительно сложных алгоритмов минимального редакторского расстояния и
наибольшей общей последовательности может эффективно применяться алгоритм
линейной сложности
, осуществляющий последовательный просмотр элементов
версий коллекции в сортированном порядке и фиксирующий изменения сразу по ходу
их просмотра. Аналогичным образом может быть оптимизирована процедура
применения операций дельты, допускающая эффективный поиск элементов по
индексам.
9. Последовательности фиксированной длины
Наличие у последовательности элементов статически
фиксированной длины вносит коррективы в способ представления дельты, наиболее
адекватно отражающий ее семантику. Коллекции данного типа будем называть
статическими массивами. Для подобных случаев
будем использовать
следующее представление дельты:
,
фиксирующее индексы измененных
элементов. Здесь операция
заменяет значение
элемента исходного массива
с индексом i значением
соответствующего элемента модифицируемого массива
.
Корректное представление дельты
предполагает,
что индексы модифицируемых элементов не повторяются в разных операциях:
Две конкурентные операции
и
в соответствующих
транзакциях
и
оказываются
конфликтными в тех случаях, когда присваивают разные значения элементу с одним
и тем же индексом:
,
,
,
,
. Способ разрешения конфликтов подобного рода тривиален и состоит
в игнорировании обеих конкурентных операций или принятии одной из них:
. В частном случае
операции эквивалентны
и не конфликтуют друг с другом.
Рассмотрим следующий пример согласования изменений в массиве.
Пусть
— базовая и
модифицированные версии массива символов:
,
,
. Тогда соответствующие дельты представляются как
,
. В данном случае операции
и
эквивалентны и,
следовательно, в результат включается одна из них. Операция
переносится без
изменений. Операции
и
конфликтны,
поэтому лишь одна из них может быть включена в результирующую дельту. В случае
принятия операции второй транзакции дельта приобретает вид
, а итоговый массив —
.
10. Коллекции с ограниченной мощностью
Наконец, особым образом должны реализовываться процедуры
применения дельты для коллекций с ограниченной мощностью. В предположении, что
исходная и модифицируемая версия коллекции были корректны и удовлетворяли
необходимым семантическим ограничениям, частичное применение операций дельты
также должно удовлетворять наложенным ограничениям мощности (размера
коллекции). Способы представления и вычисления дельты при этом не меняются и
определяются иными семантическими свойствами (см. предыдущие разделы), однако
применение отдельных операций удаления и добавления элементов должно
проводиться в соответствии с дополнительными логическими отношениями,
индуцируемыми соответствующими ограничениями.
Пусть
задано следующее ограничение мощности коллекции:
, где
. Частный случай
соответствует
коллекции фиксированной мощности. Если
и
— соответствующие
подмножества операций вставки и удаления исходного представления дельты
, то должно выполняться следующее
дополнительное условие:
.
Очевидно, что в случае фиксированной мощности
количество операций
вставки и удаления в транзакции должно совпадать. Для мультимножеств условие
представления дельты
приобретает вид
.
В случае конкурентных транзакций
приведенные выше
условия должны выполняться для консолидированной дельты
и итогового
представления коллекции
. В
случае
конфликт вызывает
преобладание операций удаления над операциями вставки, в случае
— преобладание
операций вставки. Логичным способом разрешения подобных конфликтов является
исключение такого количества преобладающих операций, чтобы мощность итоговой
коллекции удовлетворяла наложенному ограничению:
. Очевидно, что при выборе исключаемых операций следует учитывать
и другие ограничения, наложенные на коллекцию. Например, в случае ограничения
уникальности операции вставки и удаления элемента с одним и тем же значением
должны быть включены или исключены совместно.
Рассмотрим следующий пример. Пусть
— базовая и
модифицированные версии мультимножества символов с ограниченной мощностью
:
,
,
. Тогда дельты, вычисленные путем сравнения
модифицированных версий с базовой, представляются как
,
. Операции
и
эквивалентны,
поэтому в результирующую дельту следует включить любую из них. Операция
не конфликтует
ни с одной другой операцией, поэтому переносится в результат без изменений.
Наконец, операции
и
конфликтуют
друг с другом. Согласно рассмотренным выше методам согласования изменений для
мультимножеств, конфликт можно разрешить выбором кратности вхождения элемента e из
интервала [2, 4]. Однако выбор значения кратности, равного 4, приводит к
нарушению ограничения мощности результирующего мультимножества, в которое в
таком случае войдет 7 элементов. Следовательно, допустимыми значениями
кратности вхождения элемента e
в итоговую коллекцию являются 2 и 3. В случае принятия второго значения
результирующая дельта приобретает вид:
, а итоговое семантически корректное представление
мультимножества —
.
Назад Содержание Вперёд