|
| ||||||||||||
| ||||||||||||
|
2008 г.
Нечеткое сравнение коллекций: семантический и алгоритмический аспектыСеменов В.А., Морозов С.В., Тарлапан О.А., Энкович И.В.
7. Сравнение упорядоченных множествУпорядоченные множества являются одновременно специализацией и множеств, и списков, поэтому процедуры сравнения, рассмотренные выше, могли бы применяться и для этого случая. Однако в силу сочетания свойств упорядочения и уникальности элементов, видится более содержательный способ представления и расчета изменений для данного типа коллекций не только в виде операций вставки и удаления, но и операций перестановок. Пусть
Операция перестановки Определим более точно семантику операций, исходя из требований предшествования группы новых элементов элементу исходного множества, в позицию которого происходит вставка, сохранения порядка вставляемых элементов относительно друг друга в соответствии с их позициями, а также непрерывности их следования в результирующем представлении множества независимо от применения или неприменения всех других операций дельты. Использование перестановок в представлении дельты упорядоченного множества позволяет изменить порядок элементов без их парных удалений и вставок, как это осуществлялось в случае списков. Более содержательный способ структуризации изменений, отражающий семантику данных, является принципиальным с учетом сложности приложений, оперирующих масштабными междисциплинарными информационными моделями. Все значения индексов позиций указываются в представлении дельты относительно исходных версий коллекции. При выполнении дельты индексные параметры всех последующих операций должны корректироваться с учетом ранее примененных. Данная корректировка заключается в увеличении или уменьшении индексов элементов исходного множества на количество выполненных вставок или удалений. При выполнении перестановок корректировка состоит в циклическом распространении индекса для каждого последующего элемента группы перестановки. Любое изменение порядка элементов в упорядоченном множестве
может быть представлено композицией циклических перестановок. Причем при
отсутствии пересечений по индексам перестановки удовлетворяют требованию
коммутативности и могут применяться в произвольном порядке независимым друг от
друга образом [19]. Тем самым удовлетворяется требование конструктивной
декомпозиции и реконсиляции транзакций, связанное с возможностью независимого
применения их отдельных операций. При этом наличие одного и того же индекса в
разных группах перестановок дельты
Данное условие не является обременительным, поскольку существует четкая методика разложения перестановки произвольного упорядоченного множества на группы циклических перестановок. Данная методика приводится в [19] как доказательство теоремы о единственности специально заданного соединительного произведения перестановки линейно упорядоченного мультимножества. Для корректного применения дельты
Данное требование связано с принятой семантикой операций, допускающей непосредственную индексацию элементов в исходных коллекциях. Вставка группы элементов неявно подразумевает задание ограничения предшествования добавляемых элементов элементу, в позицию которого осуществляется вставка. Однако следующая за вставкой операция перестановки может нарушить это условие. Для того чтобы удовлетворить условие и обеспечить неразрывность семантически связанных групп элементов, видятся два простых решения:
На наш взгляд, второй способ более предпочтителен, поскольку контроль частичного порядка операций при выполнении не вызывает дополнительных сложностей в реализации в отличие от обобщенных перестановок. Проиллюстрируем вычисление и применение дельты для
упорядоченных множеств на следующем примере. Пусть В ходе применения дельты к основной версии Опишем возможный способ формирования дельты двух упорядоченных множеств в соответствии с перечисленными выше условиями:
Сформированная таким образом дельта состоит из множества независимых операций, каждая из которых может быть принята или отклонена в рамках результирующей транзакции независимо от статуса остальных операций. Вычислительная сложность построения дельты определяется в
первую очередь сложностью алгоритмов сортировки, применяемых в ходе реализации.
Все остальные элементы, включая алгоритм разложения перестановки на множество
циклических, имеют асимптотически линейную сложность при условии использования
соответствующих структур быстрого преобразования индексов. Например, описанный
метод формирования дельты с использованием сортировки на основе слияния списков
имеет асимптотическую оценку вычислительной сложности Перечислим конфликтные ситуации, возникающие при реконсиляции конкурентных операций над упорядоченными множествами, а также возможные способы их разрешения. Основные конфликты сводятся к следующим содержательным случаям (опустим для краткости математическую нотацию, примеры и комментарии подобно тому, как это делалось в предыдущей главе):
Очевидно, что среда для согласования версий должна предусматривать возможность интерактивной работы для разрешения описанных видов конфликтов. При этом пользователю должны предлагаться уже сформированные, семантически корректные и наглядные варианты имеющихся альтернатив. |
|
CITForum © 1997–2025