|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
2008 г.
Нечеткое сравнение коллекций: семантический и алгоритмический аспектыСеменов В.А., Морозов С.В., Тарлапан О.А., Энкович И.В.
3. Классификация коллекцийКоллекции — фундаментальный тип данных, поддерживаемый популярными языками моделирования и программирования для спецификации и реализации в приложениях агрегированных структурированных данных. Как иллюстрируют примеры предыдущего раздела, сравнение коллекций должно проходить в строгом соответствии с их семантикой. В противном случае результаты рискуют быть неадекватными исходной проблеме и теряют смысл для целевого приложения и пользователя. Сравнение коллекций может рассматриваться в качестве частной задачи более общей проблемы семантического сопоставления (matching) и сравнения (differencing) расходящихся реплик структурированных данных, например, популяций объектов, заданных некоторой объектно-ориентированной моделью. Несмотря на многообразие частных типов коллекций, встречаемых в приложениях, можно выделить несколько фундаментальных свойств, в соответствии с которыми их анализ может проводиться содержательным образом. К таким свойствам мы относим уникальность элементов коллекции, упорядочение, возможную сортировку элементов коллекции, а также ограниченный размер коллекции. Декларативные языки объектно-ориентированного моделирования, как правило, предоставляют некоторый набор абстрактных или конкретных типов коллекций с априори заданным набором семантических свойств. В производных пользовательских типах, определяемых на основе базовых, семантика коллекций может быть сохранена или уточнена. Однако выделенные фундаментальные свойства остаются принципиальными для содержательного анализа коллекций. Так, декларативный язык ограничений OCL [17] определяет абстрактный интерфейс коллекций Collection и четыре конкретных класса Bag, Set, Sequence и OrderedSet для представления мультимножеств, множеств, последовательностей и упорядоченных множеств соответственно. Все виды коллекций задаются в обобщенном виде с возможностью параметризации типом элементов. Set — коллекция, по семантике соответствующая математическому понятию множества. Она не допускает дупликации элементов. OrderedSet — специализация данного типа для упорядоченных множеств. Ограничение уникальности необходимо поддерживается данным типом коллекции. Bag — мультимножество с возможным повторением элементов. Sequence — упорядоченное мультимножество или последовательность, допускающая повторение элементов. Таким образом, виды коллекций OCL могут быть классифицированы в соответствии с таблицей 1. Язык моделирования EXPRESS [18] предоставляет иной набор типов коллекций, а именно: Aggregate, Bag, Set, Array и List. Абстрактный тип Aggregate определяет базовый набор методов оперирования с элементами коллекций. Bag — специализация данного типа для представления мультимножеств. Set — специализация типа Aggregate для произвольных множеств, исключающая дупликацию элементов и игнорирующая их порядок. Тип данных List применяется для представления последовательностей. Допустимое количество элементов в списках, множествах и мультимножествах задается дополнительными ограничениями. Коллекции имеют строго фиксированный размер в тех случаях, когда нижний и верхний пределы их размера совпадают. Array — специализация типа Aggregate для массивов фиксированной длины. С учетом индексации порядок элементов в массивах имеет существенное значение. Возможна организация разреженных массивов с неустановленными значениями элементов при помощи специального спецификатора. Также возможно определение производных типов массивов и списков с наложенным ограничением уникальности элементов. Базовые типы коллекций, предоставляемые языком моделирования EXPRESS, приведены в таблице 1.
Таблица 1. Классификация базовых типов коллекций в языках моделирования EXPRESS и OCL Базовые типы могут переопределяться пользователем с учетом семантики приложения путем задания дополнительных ограничений с использованием всего репертуара конструкций декларативных языков OCL и EXPRESS. В частности, может быть уточнено допустимое число элементов коллекции и способ их индексации, задан частичный или полный порядок на множестве элементов коллекции, определены свойства корреляции значений элементов и т.п. Рассмотрим вопросы представления, вычисления изменений и исполнения соответствующих операций над коллекциями, следуя приведенной выше классификации в соответствии с выделенными семантическими свойствами. 4. Сравнение множествНачнем рассмотрение с наиболее простого типа коллекций
Корректное представление дельты Применение операций, определяемых дельтой, довольно
прозрачно. К заданному исходному множеству добавляются элементы, определяемые
операциями ins,
и удаляются элементы, определяемые операциями del. Тем самым, гарантируется
тождественность условия Две конкурентные транзакции Сложность вычисления дельты Ниже приведен пример сравнения двух версий множества
натуральных чисел 5. Сравнение мультимножествПерейдем к задаче сравнения мультимножеств
В используемых обозначениях Z — множество целых чисел.
Положительное значение параметра n в операции изменения кардинальности card(x,n) указывает на добавление элемента
в коллекцию соответствующее число раз, отрицательное значение — на удаление
элемента из коллекции. Нулевое значение n не содержательно для представления дельты, поскольку
означает, что количество экземпляров элемента в коллекции не изменилось. В
корректно сформированном представлении дельты Применение базовой операции дельты card(x,n) состоит в кратном добавлении
соответствующего элемента x
при положительном значении параметра n и в его кратном удалении при отрицательном значении параметра.
Это гарантирует выполнение необходимого тождества Две операции Сложность построения В качестве примера рассмотрим процедуру сравнения двух
версий мультимножества символов. Пусть
|
|
CITForum © 1997–2025