
- •Оглавление
- •Введение
- •1 Особенности экономической информации
- •1.1 Экономическая информация. Информационное обеспечение экономики
- •1.2 Свойства экономической информации
- •1.3 Классификация экономической информации
- •1) По функциям управления
- •2) По месту возникновения
- •3) По стадиям образования
- •4) По способу отображения
- •5) По стабильности
- •1.4 Основные компоненты экономической информации
- •1.5 Экономическая информация и данные
- •1.6 Требования к данным и информации
- •1.7 Внешние входящие информационные потоки
- •1.8 Внутренние информационные потоки
- •1.9 Мониторинг внешней деловой среды
- •2 Основные понятия экономических информационных систем
- •2.1 Информационная система в общем виде
- •2.2 Принципы построения и функционирования эис
- •2.3 Критерии оценки эффективности эис
- •Повышение эффективности управления объектом:
- •Эффективное использование ресурсов эис:
- •2.4 Классификация эис
- •2.5 Компоненты экономических информационных систем
- •2.5.1 Предметная область информационной системы
- •2.5.2 Детализация представлений эис
- •2.6 Свойства экономических информационных систем
- •3 Экономическая информационная система как особая модель объекта экономики
- •3.1 Модель объекта экономики как отражение его специфики
- •3.2 Моделирование экономических информационных систем. Средства реализации моделей
- •3.3 Уровни отображения предметной области. Типы описания моделей эис
- •4 Роль и место информационных систем в управлении экономическими объектами
- •4.1 Основные направления использования информационных систем в экономике
- •4.2 Роль информационных систем в экономике
- •4.3 Единое информационное пространство
- •4.4 Место эис в системе управления экономическим объектом
- •4.5 Жизненный цикл эис
- •5 Классификация и основные свойства единиц информации
- •5.1 Информационное пространство
- •5.2 Основные единицы информации — атрибуты
- •5.3 Составные единицы информации. Операции над единицами информации
- •5.4 Экономические показатели
- •6 Методы организации данных
- •6.1 Анализ алгоритмов и структур данных в эис
- •6.2 Линейная организация данных
- •6.2.1 Последовательная организация данных
- •6.2.2 Линейная списковая организация данных
- •6.3 Нелинейная организация данных
- •6.3.1 Древовидная организация данных
- •6.3.2 Нелинейные списковые структуры данных
- •6.4 Методы ускоренного доступа к данным
- •6.4.1 Интерполяционный поиск записи в массиве
- •6.4.2 Адресные функции
- •6.4.3 Способы организации индексируемого массива
- •6.5 Обработка информации по нескольким ключевым признакам
- •7 Модели данных
- •7.1 Описательная модель предметной области
- •7.1.1 Этап инфологического проектирования
- •7.1.2 Этап датологического проектирования
- •7.2 Назначение и основные компоненты системы баз данных, их уровни представления
- •7.3 Концептуальные модели данных
- •7.3.1 Типы структур данных
- •7.3.2 Операции над данными
- •7.3.3 Ограничения целостности
- •7.4 Иерархическая модель данных
- •7.5 Сетевая модель данных
- •7.6 Реляционная модель данных
- •7.6.1 Основные понятия реляционной модели данных
- •7.6.2 Реляционная структура данных
- •7.6.3 Целостность реляционных данных
- •7.6.4 Основные операции над данными
- •7.6.5 Нормализация отношений в рмд
- •8 Моделирование предметных областей в экономике
- •8.1 Семантические модели данных
- •8.1.1 Модель сущностей и связей
- •8.1.2 Модель семантических сетей
- •8.2 Базы знаний
- •8.2.1 Понятие знания. Пять основных свойств знаний
- •8.2.2 Модели представления знаний
- •8.3 Параметризация эис
- •Заключение
- •Список рекомендованной литературы
6 Методы организации данных
6.1 Анализ алгоритмов и структур данных в эис
Методы хранения данных в памяти ЭВМ обычно предполагают раздельное хранение значений каждой составной единицы информации (СЕИ). Отдельное значение СЕИ, находящееся в памяти ЭВМ, называется записью. Запись состоит из значений атрибутов, входящих в структуру СЕИ. Множество записей образует массив или файл. Термин «массив» обычно используется при рассмотрении данных в оперативной памяти ЭВМ, а термин «файл» применяется для данных, хранимых на внешних запоминающих устройствах. Как правило, файл содержит записи, принадлежащие одной и той же СЕИ, хотя в общем случае это не является обязательным.
Под организацией значений данных понимают относительно устойчивый порядок расположения записей данных в памяти ПК и способ обеспечения взаимосвязи между записями.
Организация значений данных (далее называемая просто организацией данных) может быть линейной и нелинейной. При линейной организации данных каждая запись, кроме первой и последней, связана с одной предыдущей и одной последующей записями. У записей, соответствующих нелинейной организации данных, количество предыдущих и последующих записей может быть произвольным.
6.2 Линейная организация данных
Линейные методы организации данных различаются только способами указания предыдущей и последующей записи по отношению к данной записи. Но это приводит к тому, что алгоритмы, эффективные для одних методов организации данных, становятся неприемлемыми для других методов.
Среди линейных методов наиболее выделяются последовательная и списковая (цепная) организация данных.
6.2.1 Последовательная организация данных
При последовательной организации данных записи располагаются в памяти строго одна за другой, без промежутков, в той последовательности, в которой они обрабатываются. Последовательная организация данных обычно соответствует понятию «массив» (файл).
Записи, составляющие массив, с точки зрения способа указания их длины делятся на записи фиксированной, переменной и неопределенной длины. Записи фиксированной (постоянной) длины имеют одинаковую, заранее известную длину. Если длины записей неодинаковы, то длина указывается в самой записи. Такие записи называют записями переменной длины. Вместо явного указания длины записи можно отмечать окончание записи специальным символом-разделителем, который не должен встречаться среди информационных символов значения записи. Записи, заканчивающиеся разделителем, называются записями неопределенной длины.
Для массивов записей фиксированной длины адреса промежуточных записей задаются формулой:
A(i) = A(1) + (i – 1) l,
где A(i) — начальный адрес i-й записи; A(1) — начальный адрес первой записи; l — длина одной записи.
Для массива записей переменной и неопределенной длины подобной простой формулы не существует. Они занимают меньший объем памяти, но их обработка ведется с меньшей скоростью, поскольку затруднено обнаружение следующей записи.
В структуре записей последовательного массива обычно выделяется один или несколько ключевых атрибутов, по значениям которых происходит доступ к остальным значениям атрибутов той или иной записи. Состав ключевых атрибутов необязательно соответствует понятию первичного ключа.
Будем считать, что последовательный массив состоит из записей фиксированной длины, а среди атрибутов записи будем выделять только один ключевой атрибут. Наличие в записях других (неключевых) атрибутов специально не оговаривается. Иллюстрацией такого последовательного массива служит рис. 6.1.
А(1) |
А(2) |
А(3) |
… |
А(i) |
… |
А(M) |
1 |
2 |
3 |
… |
i |
… |
M |
Номера записей |
|
Рис. 6.1 — Последовательная организация данных
Ключевые атрибуты в записях обозначаются через А(i), где i — номер записи, общее число записей в массиве обозначается через М.
Записи массива могут быть упорядоченными или неупорядоченными по значениям ключевого атрибута (ключа), имя которого одинаково во всех записях. Ключевой атрибут обычно является атрибутом-признаком.
Наиболее важными и часто применяемыми алгоритмами обработки данных являются:
формирование;
поиск;
корректировка;
последовательная обработка.
Эти алгоритмы могут быть реализованы с использованием достаточно большого количества методов организации данных. Рассмотрим выбор наилучшего метода организации данных для названных алгоритмов. Сами методы организации данных будут представлены в их простейшей форме.
Формирование. Данные, как правило, существуют в неупорядоченной форме. Перед обработкой целесообразно отсортировать значения по ключевым атрибутам, что составляет подготовку данных к работе или их формирование.
Часто требуется поддерживать упорядоченность записей по нескольким именам ключевых признаков. В этом случае среди признаков устанавливается старшинство. Условие упорядоченности записей в массиве (и вообще для линейной организации данных) выглядит следующим образом:
А(i) А(i + 1) — упорядоченность по возрастанию;
А(i) А(i + 1) — упорядоченность по убыванию.
Процедуру упорядочения данных называют сортировкой.
Упорядоченные данные эффективны для организации быстрого поиска информации. Выходные документы, выводимые на печать, полученные на основе отсортированных данных, удобны для дальнейшего использования пользователем. Многие алгоритмы задач управления вообще рассчитаны на использование только упорядоченных данных. Отсортированные данные позволяют организовать быструю обработку нескольких массивов. Далее будем считать все массивы упорядоченными по возрастанию значений одного атрибута, когда для ключа i-й записи А(i) справедливо условие А(i) А(i + 1).
Естественной характеристикой эффективности того или иного алгоритма служит время его выполнения в зависимости от ряда параметров хранимой информации. Поэтому для каждого метода организации данных требуется анализировать следующие величины:
1) время формирования данных, т.е. время создания в памяти ПК так или иначе упорядоченного представления данных (упорядочение способно ускорить выполнение алгоритмов поиска данных);
2) время поиска данных. Как известно, условия поиска (выборки) на практике могут быть достаточно разнообразные. Анализируется обычно простейший и наиболее распространенный случай (поиск по совпадению) — «Найти записи, у которых значение ключевого атрибута равно заранее известной величине q»;
3) время корректировки данных. Из всех возможных вариантов корректировки учитывается включение или исключение одной записи;
4) объем дополнительной памяти, расходуемой под служебную информацию (например, адреса связи).
На время выполнения алгоритмов влияет ряд факторов. Среди них — быстродействие конкретного ПК, применяемый язык программирования, стиль программирования конкретного программиста. Чтобы можно было не принимать во внимание подобные факторы, целесообразно анализировать не время, а количество выполняемых элементарных операций, в частности операций сравнения значений ключевых атрибутов и искомых величин. Время выполнения алгоритма обычно прямо пропорционально числу требуемых сравнений.
При анализе алгоритмов необходим еще ряд допущений, обеспечивающих использование равномерного распределения вероятностей для всех случайных величин, описывающих работу алгоритма, в том числе:
распределение значений ключевых атрибутов в массиве из М записей — равномерное;
значение q при поиске по совпадению выбрано случайно, это означает, что поиск с одинаковой вероятностью 1/М может закончиться на любой записи массива;
положение включаемой (исключаемой) записи при корректировке определяется теми же вероятностями, что и при поиске.
Процедура упорядочения состоит из серии сравнений ключевых атрибутов и тех или иных перераспределений записей по результатам сравнения. Массив, обладающий наибольшей неопределенностью своего состояния, будем называть случайным массивом. Все его М! состояний равновозможны. Через М! обозначено произведение 1 2 ... М.
Среднее количество операций сравнения зависит от метода сортировки и при рациональном выборе метода достигает некоторого минимума, зависящего от размера массива М. Исследования показали, что минимальное количество сравнений, необходимое для сортировки элементов, оценивается как С M log2M.
Методы сортировки:
1)
метод «пузырька» —
;
2)
метод вставки —
;
3)
метод Шелла —
;
4)
метод квадратичной выборки —
.
Указанные оценки могут быть использованы для определения эффективности того или иного метода сортировки, которые можно разбить на две группы: методы, не требующие резерва памяти, и методы, требующие дополнительную память. Метод «пузырька», метод вставки, метод Шелла не требуют резерва памяти. Метод квадратичной выборки требует резерва памяти для сортировки данных.
Поиск — это процедура выделения из некоторого множества записей определённого подмножества, записи которого удовлетворяют некоторому заранее поставленному условию.
Условие поиска называется запросом на поиск, или поисковым признаком. Простейшим поисковым признаком служит значение любого атрибута-признака.
Алгоритмы всех разновидностей поиска можно получить на основе алгоритмов по совпадению1, которые и рассматриваются в дальнейшем.
Базовым методом доступа к массиву является ступенчатый поиск. Этот метод предполагает упорядоченность обрабатываемых записей по возрастанию или по убыванию. Например, массив отсортирован по возрастанию значений ключевого атрибута А(i).
Простейшим вариантом ступенчатого поиска (его можно назвать одноступенчатым) является последовательный поиск.
Метод последовательного просмотра записей. Искомое значение q сравнивается с ключом первой записи, если значения не совпадают, — с ключом второй записи и т.д. до тех пор, пока q не станет больше ключа очередной записи. Метод последовательного просмотра (перебор) является универсальным и применим к любым видам массивов (упорядоченным и неупорядоченным записям). Данный метод заключается в последовательном просмотре записей массива с целью отыскания таких записей, для которых значение ключевого признака совпадает с ключевым значением признака поиска q. Извлеченные при этом записи со значением ключа q образуют результат поиска.
Среднее
число сравнений для реализации данного
метода оценивается следующей величиной:
Максимальное
число сравнений равно:
.
Метод дихотомического поиска. В основе двухступенчатого поиска лежит деление массива на части. На практике наибольшее распространение получил метод деления массива на две части — бинарный поиск (дихотомия).
Пусть массив, длина которого M, упорядочен по возрастанию.
Алгоритм поиска дихотомическим методом:
поисковый признак q сравнивается с ключевым признаком средней записи массива Ai;
если Ai = q, то поиск прекращается, и запись с признаком Ai ставится в поле результата. Проверяются соседние записи признака Ai, так как они могут иметь то же значение ключевого признака q;
если Ai > q, то дальнейший поиск осуществляется в «левой» половине массива среди записей A1, A2 … Ai – 1;
если Ai < q, то поиск продолжается в «правой» половине массива среди записей Ai+1, Ai+2…, Am;
затем в выделенном подмассиве вновь определяется средняя запись Ak и производится сравнение Ak и q и т.д.
На каждом шаге область сравнения сокращается вдвое. Этот метод поиска называют еще двоичным, т.к. после каждого сравнения принимается одно из двух альтернативных решений.
Достаточно легко оценить максимальное число сравнений Cmах при поиске данных бинарным методом. Сокращение интервала поиска на каждом шаге в худшем случае приведет к интервалу нулевой длины, что соответствует отсутствию в массиве искомого значения ключевого атрибута. После первого сравнения интервал поиска составит M/2 записей, после второго — M/4 и т.д. Когда интервал поиска впервые станет меньше 1, применяемая схема округления результата деления даст нулевой интервал, и поиск закончится.
Среднее число операций сравнения при дихотомическом поиске равно:
.
Максимальное число сравнений равно:
.
На практике применяется модификация метода. Выбирается наибольшая точная степень двух, не превосходящая длину массива (число записей), и на первом шаге обращаются к записи с номером, равным полученной степени. Если по результатам сравнения одна часть массива отбрасывается, то в оставшейся части также имеется наибольшая степень двух и производится обращение к соответствующей записи.
Корректировка последовательных структур данных — процедура внесения изменений в структуру данных.
Корректировка массива может касаться одной его записи или группы записей. Отдельная запись может включаться в массив и исключаться из него. Кроме того, в записи могут быть изменены значения отдельных атрибутов (как правило, неключевых). В любом случае перед корректировкой выполняется поиск местонахождения корректируемой записи.
Массив записей, которые подвергаются корректировке, называется основным. Чтобы изменить значение записи, необходимо задать её признак и определить её местоположение. Различают следующие виды корректировки массива: вставка, исключение и замена записей.
Вставка (включение, добавление) записей. Как правило, основной массив упорядочен по какому-либо ключевому признаку, поэтому для организации вставки требуется наличие свободных участков памяти для размещения новых записей. Включение новой записи (например, со значением ключевого атрибута q) в последовательный упорядоченный массив не должно нарушать его упорядоченность. Поэтому сначала необходимо найти положение новой записи относительно имеющихся в массиве записей, т.е. выполнить поиск ключа новой записи q. Если значения q в массиве нет, то поиск остановится там, где должна находиться запись с ключом q при сохранении общей упорядоченности массива.
Реализация вставки невозможна без переорганизации массива, требуется сдвиг всех последующих записей. Новая запись не может сразу занять место, где остановился поиск, необходимо выполнить пересылку записей, чтобы освободить его. Пересылка начинается с последней записи (она после пересылки занимает следующую позицию по направлению к концу массива), затем предпоследняя запись пересылается на место последней и т.д. В результате освобождается место для новой записи.
Итак, время включения записи складывается из времени поиска и времени пересылки записей. Вставка записей, как правило, производится случайно по отношению к их расположению в массиве, в среднем приходится сдвигать до половины записей массива.
Исключение (удаление, аннулирование) записей возможно без переорганизации массива, в результате чего появляются свободные участки памяти. Рекомендуется после удаления записей сдвигать элементы массива, в среднем, половину записей.
При исключении записи из массива также необходимо сначала найти в массиве ключ удаляемой записи, а затем выполнить пересылки записей в направлении к началу массива для уничтожения исключаемой записи в памяти.
Можно прийти к выводу, что включение-исключение записей поодиночке является очень длительной процедурой. Поэтому в ряде случаев удобно накапливать корректирующие записи в специальном массиве изменений, а не вносить их по мере появления.
Массив записей, подвергающихся изменениям, называется основным. Изменения, которые необходимо внести в основной массив, накапливаются в специальном упорядоченном массиве изменений, рассчитанном на 1 m М записей. Обычно m составляет несколько процентов (15—20) от М. При необходимости обработки основного массива он объединяется с массивом изменений.
При объединении основного массива с массивом изменений выполняются следующие операции (алгоритм слияния):
ключ очередной записи основного массива сравнивается с ключом очередной записи массива изменений и запись с меньшим значением ключа добавляется в новый массив (результат объединения);
когда все записи одного из массивов будут перезаписаны полностью, оставшиеся записи другого массива добавляются в результирующий массив и алгоритм заканчивается.
Замена записей происходит без переорганизации массива. После нахождения места корректируемого элемента производится замена содержания элемента.
Организация корректировки массивов может производиться различными способами в зависимости от требований систем обработки данных. Упорядоченность основного массива при этом сохраняется. Перед внесением изменения поступают запросы на поиск и последовательную обработку основного массива.
Решение целого ряда задач обработки данных требует применения таких методов организации данных, которые позволили бы связать физически разнесенные в памяти данные в логическую последовательность, определяющую порядок их обработки. Простейшим методом, применяемым для этих целей, является списковая (цепная) организация данных.