Нечеткое сравнение коллекций семантический и алгоритмический аспекты


Последовательности фиксированной длины


Наличие у последовательности элементов статически фиксированной длины вносит коррективы в способ представления дельты, наиболее адекватно отражающий ее семантику. Коллекции данного типа будем называть статическими массивами. Для подобных случаев

Последовательности фиксированной длины
 будем использовать следующее представление дельты:

Последовательности фиксированной длины
,

фиксирующее индексы измененных элементов. Здесь операция

Последовательности фиксированной длины
 заменяет значение элемента исходного массива
Последовательности фиксированной длины
 с индексом i значением соответствующего элемента модифицируемого массива
Последовательности фиксированной длины
.

Корректное представление дельты

Последовательности фиксированной длины
 предполагает, что индексы модифицируемых элементов не повторяются в разных операциях:

Последовательности фиксированной длины

Две конкурентные операции

Последовательности фиксированной длины
 и
Последовательности фиксированной длины
 в соответствующих транзакциях
Последовательности фиксированной длины
 и
Последовательности фиксированной длины
 оказываются конфликтными в тех случаях, когда присваивают разные значения элементу с одним и тем же индексом:
Последовательности фиксированной длины
,
Последовательности фиксированной длины
,
Последовательности фиксированной длины
,
Последовательности фиксированной длины
,
Последовательности фиксированной длины
. Способ разрешения конфликтов подобного рода тривиален и состоит в игнорировании обеих конкурентных операций или принятии одной из них:
Последовательности фиксированной длины
. В частном случае
Последовательности фиксированной длины
 операции эквивалентны и не конфликтуют друг с другом.

Рассмотрим следующий пример согласования изменений в массиве. Пусть

Последовательности фиксированной длины
 — базовая и модифицированные версии массива символов:
Последовательности фиксированной длины
,
Последовательности фиксированной длины
,
Последовательности фиксированной длины
. Тогда соответствующие дельты представляются как
Последовательности фиксированной длины
,
Последовательности фиксированной длины
. В данном случае операции
Последовательности фиксированной длины
 и
Последовательности фиксированной длины
 эквивалентны и, следовательно, в результат включается одна из них. Операция
Последовательности фиксированной длины
 переносится без изменений. Операции
Последовательности фиксированной длины
 и
Последовательности фиксированной длины
 конфликтны, поэтому лишь одна из них может быть включена в результирующую дельту. В случае принятия операции второй транзакции дельта приобретает вид
Последовательности фиксированной длины
, а итоговый массив —
Последовательности фиксированной длины
.

Содержание раздела