Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория экономических информационных систем. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
61
Глава 4 Методы организации данных в памяти ЭВМ
4.1 Критерии эффективности методов организации данных
Под организацией значений данных понимают относительно устойчивый порядок расположения записей данных в памяти ЭВМ и способ обеспечения взаимосвязи между данными.
Организация данных может быть линейной и нелинейной.
Среди линейных методов выделяются последовательная и цепная
организации данных.
К нелинейным методам относятся древовидная, в том числе
бинарное дерево.
Наиболее важными и часто применяемыми алгоритмами обработки данных являются формирование данных, поиск и корректировка. Поэтому для анализа эффективности каждого метода организации данных будем анализировать следующие критерии:
а) время формирования данных, или упорядочение данных по
ключевому атрибуту;
б) время поиска данных (поиск по совпадению). Нахождение
значения ключевого атрибута равного заранее известной величине;
в) время корректировки данных, т.е. включение или исключение
одной записи;
г) объем дополнительной памяти, например, для адресов связи.
4.2. Последовательная организация данных.
При последовательной организации данных записи располагаются в
памяти строго одна за другой, без промежутков, в той последовательности, в которой они обрабатываются. Записи массива могут быть упорядоченными или неупорядоченными по значениям ключевого атрибута.
а) Формирование данных.
Процедура упорядочения состоит из серии сравнений ключевых атрибутов и тех или иных перераспределений записей по результатам сравнения. Массив из М записей, обладающий неопределённостью состояния называется случайным массивом. Для него возможны М! состояний.
Таким образом, минимальное число сравнений, необходимое для
упорядочения массива из М записей, определяется как С = log М!
Справедлива запись выражения для времени сортировки Т ~ М log М.
б) Поиск в последовательном массиве.
Поиском называется процедура выделения из некоторого множества
записей определенного подмножества, записи которого удовлетворяют некоторому заранее поставленному условию. Условие поиска часто называют запросом на поиск.
62
Простейшим условием поиска является поиск по совпадению, т. е. равенство значения ключевого атрибута i-й записи p(i) и некоторого заранее заданного значения q.
Базовым методом доступа к массиву является ступенчатый поиск, он
предполагает упорядоченность обрабатываемых записей. Простейшим вариантом одноступенчатого поиска является последовательный поиск. Искомое значение q сравнивается с ключом первой записи и последовательно с каждой последующей записью до совпадения. Количество сравнений С пропорционально М (С ~ М).
Для ускорения поиска используется двухступенчатый поиск. Для
заданного М выбирается константа dl, называемая шагом поиска. Если необходимо отыскать запись со значением ключевого атрибута, равным q, оно последовательно сравнивается с рядом величин р(1), p(l+dl), p(l+2*dl) и т.д., до тех пор, пока будет впервые достигнуто неравенство p(l+n*dl)=>q. На второй ступени q последовательно сравнивается со всеми ключами последнего найденного интервала. Эффективность поиска измеряется количеством произведенных сравнений. Для двухступенчатого поиска среднее число сравнений примерно составит: C=M / (2*dl) + dl/2.
Ступенчатый поиск имеет важный частный вариант - бинарный
поиск. Для бинарного поиска вводятся граница интервала поиска. Вычисляется середина интервала по формуле i=(A+B)/2, сравнивается с искомым значением, выбирается та половина, где находится искомое значение. Алгоритм повторяется. Количество вариантов поиска уменьшается в арифметической прогрессии. Среднее число сравнений при бинарном поиске составляет C=log (M) - 1.
Определение лучшего метода поиска (из рассмотренных выше последовательного, двухступенчатого и бинарного) опирается на следующие рассуждения. Во всех трех случаях время поиска является функцией от числа М записей. Конкретные выражения составляют:
- для последовательного поиска Т1=k1*М;
- для двухступенчатого поиска T2~ k2*ln M;
- для бинарного поиска T3=k3*log M.
При больших массивах данных преимущество бинарного поиска, безусловно (рис. 4.1).
Сравнение методов поиска данных в массиве
Рисунок 4.1
63
в) Корректировка последовательного массива
Включение и исключение записей поодиночке является длительной процедурой. Поэтому корректирование записи накапливаются в специальном массиве изменений, который составляет какой-то процент от основного массива. При необходимости обработки основного массива он объединяется с массивом изменений.
При объединении основного массива с массивом изменений выполняются следующие операции (алгоритм слияния):
-ключ очередной записи основного массива сравнивается с ключом
очередной записи массива изменений, и запись с меньшим значением ключа добавляется в новый массив (результат слияния);
-когда все записи одного из массивов будут перезаписаны полностью,
оставшиеся записи другого массива добавляются в результирующий массив, и алгоритм заканчивается.
Время корректировки Т ~ М.
4.3 Цепная (списковая) организация данных
Списком называется множество записей, занимающих произвольные участки памяти, последовательность обработки которых задается с помощью адресов связи. Адресом связи некоторой записи называется атрибут, в котором хранится начальный адрес или номер записи, обрабатываемой после этой записи. Обычная последовательность обработки записей в списке определяется возрастанием значений ключа в записях.
В списке выделяется собственная информация и адреса связи.
Возможны два способа организации списка - совместное размещение информации, когда запись и ее адрес связи образуют одно целое (рис. 4.2 а), и раздельное, когда имеется списковая организация адресов связи и последовательное хранение собственной информации (рис. 4.2 б).
Варианты списковой организации данных:
а - совместное хранение записей и адресов связи;
б - раздельное хранение записей и адресов связи
Рисунок 4.2
При списковой организации данных необходим специальный
атрибут, называемый указателем списка, который содержит начальный
64
адрес или номер первой в порядке обработки записи списка. Кроме того, адрес связи последней записи списка должен содержать специальное значение, называемое концом списка и отмечающее, что последующих записей у данной записи нет. Обычно конец списка отмечается нулем (рис.
4.2).
а) При формировании упорядоченного списка записей возможны
два варианта:
- вновь поступающие записи вставлять так, чтобы не нарушать
упорядоченность по ключу;
- создать сначала неупорядоченный список, а затем отсортировать
его.
Учитывая, что для сортировки можно использовать метод слияния,
второй вариант следует признать более целесообразным.
В итоге время формирования упорядоченного списка пропор-
ционально T=M*log M.
б) Для поиска в упорядоченном списке можно использовать те же
методы, что и в последовательном массиве, однако эффективность этих методов иная, поскольку адреса связи создают возможность быстрого доступа только к следующей записи списка.
Для поиска данных в однонаправленном списке используется един-
ственный метод - последовательный поиск. Ключевой атрибут первой записи (ее адрес извлекается из указателя списка) сравнивается с искомым значением q, затем такое же сравнение выполняется для ключа второй записи, которая извлекается по адресу связи первой записи, и т. д. Время поиска, естественно, пропорционально Т ~ М.
Неэффективность бинарного поиска для списковой организации данных объясняется тем обстоятельством, что для достижения середины интервала требуется последовательное движение в соответствии с адресами связи и суммарное количество переходов от записи к записи достаточно велико. Для ускорения доступа к списку могут быть рекомендованы такие варианты использования адресов связи, как двунаправленный и кольцевой список (рис.4.3):
.
. Организация списков: а - двунаправленного; б – кольцевого
Рисунок 4.3
65
Двунаправленный список образован двумя цепочками адресов
связи:
- от первой записи к последней;
- от последней записи к первой.
В кольцевом списке последний адрес связи указывает на первую
запись.
в) Корректировка данных. Цепной каталог
Цепным каталогом называется сплошной участок памяти (или
несколько таких участков), в котором одновременно размещаются список обрабатываемых записей и список свободных позиций памяти. Адрес связи, отмечающий первую обрабатываемую запись, называется указателем списка. Адрес связи, отмечающий первую свободную позицию памяти, называется указателем свободной памяти. Адрес связи последней записи (или последней позиции свободной памяти) в списке называется концом списка, и здесь отмечается нулевым значением.
Включение и исключение записей в цепном каталоге предполагает поиск местоположения включаемой (исключаемой) записи и замену значений адресов связи для установления новой последовательности записей основного списка и списка свободной памяти (рис. 4.4).
Операции корректировки в цепном каталоге
а - вставка записи с ключом 61; б - удаление записи с ключом 30
Рисунок 4.4
Оценка времени корректировки складывается из времени реализации поиска и времени на замену значений адресов связи. В последнем случае число пересылок адресов связи всегда одинаково и не зависит от числа записей в цепном каталоге, поэтому затраты времени на поиск при корректировке являются доминирующими и время корректировки пропорционально Т ~ М.
66
г) Объем дополнительной памяти пропорционален М для адресов связи.
4.4 Древовидная организация данных
Древовидной организацией данных (деревом) называется множество записей, расположенных по уровням следующим образом:
- на 1-м уровне расположена только одна запись (корень дерева),
- к любой записи i-го уровня ведет адрес связи только от одной
записи уровня i - 1.
Количество уровней в дереве называется рангом. Записи дерева, которые адресуются от общей записи (i - l)-го уровня, образуют группу. Максимальное число элементов в группе называется порядком дерева. Деревья обычно формируются двунаправленными, адрес связи от записи уровня i + 1 к записи i-го уровня называется обратным.
При размещении дерева в памяти ЭВМ каждая запись может занимать произвольное место.
Рассмотрим деревья порядка 2 (бинарные). Они интересны тем, что составляющие их записи могут быть упорядочены. Для этого один из атрибутов записи должен быть объявлен ключевым.
Запись А - корень дерева. Записи, у которых заполнены два адреса связи, называются полными, записи с одним заполненным адресом -
неполными, записи с двумя незаполненными адресами - концевыми. На рис.
4.5 записи А, В, Е, F - полные, С - неполная, D, H, I, J, G -концевые. Адреса
связи делятся на левые и правые. Так, адрес от Е к G -левый, от Е к Н ­правый. Каждая запись имеет левую и правую ветви. Правую (левую) ветвь
записи образует поддерево, адресованное из этой записи через правый (левый) адрес связи. У записи С правая ветвь состоит из записей F, I, J, ле­вая ветвь пустая.
Пример бинарного дерева
Рисунок 4.5
В упорядоченном бинарном дереве значение ключевого атрибута каждой записи должно быть больше, чем значение ключа у любой записи на ее левой ветви, и не меньше, чем ключ любой записи на ее правой ветви. Это определение позволяет также различать левые и правые адреса
(ветви).
67
а) Упорядоченное бинарное дерево формируется из неупоря­доченного массива записей по специальному алгоритму. Этот алгоритм создает дерево из первой записи массива, затем - дерево из первых двух записей, из первых трех записей и так далее до исчерпания всех записей массива.
Алгоритм формирования упорядоченного бинарного дерева:
1) Первая запись массива с ключом р (1) становится корнем дерева.
2) Значение ключа второй записи р (2) сравнивается с р (1),
находящимся в корне дерева. Если р (2) < р (1), то вторая запись помещается на левой от корня ветви, в противном случае - на правой ветви. Сейчас получено упорядоченное дерево из первых двух записей, далее на каждом шаге создается упорядоченное дерево из первых i записей.
3) Для i-й записи массива ключ p (i) сравнивается с корневым значением, и выполняется переход по левому адресу, если p (l) > p (i), а при p (l) <= p (i) - по правому адресу. Ключ достигнутой записи также сравнивается с p (i), и снова организуется переход по левому или правому адресу и т. д. Когда будет достигнут незаполненный адрес связи, то он должен адресовать запись с ключом p (i). Указанные действия повторяются до исчерпания всех записей исходного массива.
б) В процессе поиска данных по совпадению в упорядоченном
бинарном дереве просматривается некоторый путь по дереву, начинающийся всегда в его корне. Искомое значение ключа q сравнивается со значением корня р (1). Если p (l) > q, просмотр дерева продолжается по левой ветви корня, если p (l) <= q - по правой.
Поиск заканчивается, когда у какой-либо записи отсутствует адрес
связи, необходимый для дальнейшего продолжения поиска. Количество сравнений С пропорционально log M.
в) Включение новой записи при корректировке упорядоченного
бинарного дерева означает выполнение одного шага алгоритма формирования дерева с включаемой записью на входе.
Сложность исключения зависит от того, какая запись исключается -
концевая, неполная или полная. Первые два случая аналогичны корректировке при списковой организации данных. Адрес связи исключаемой концевой записи заменяется признаком конца строки, адрес связи на исключаемую неполную запись заменяется на ее собственный адрес связи.
При исключении полной записи решается задача о подстановке на ее
место другой записи, такой, что ее ключ не нарушает общей упорядоченности бинарного дерева - такие записи называются соседними. Соседняя слева запись - это запись с ключом, который непосредственно меньше ключа данной записи, а ключ соседней справа записи равен или непосредственно больше, чем ключ данной записи.
68
Критерии оценки
Методы организации данных
Лучший метод
Последова­тельный
Цепной
Бинарное дерево
Время формирования
~ M log M
~ M log M
~ M log M
Цепной, бинарное дерево
Время поиска
~ log M
~ М
~ log M
Последовательный, бинарное дерево
Время корректировки
~ М
~ М
~ log M
Бинарное дерево
Объем дополнительной памяти
0
~ М
~ М
Последовательный
4.5 Сравнение методов организации данных
В табл. 4.1 собраны все оценки методов организации данных, что
позволяет сделать ряд выводов.
Таблица 4.1. Сравнение методов организации данных
Временя формирования данных во всех методах ~ M log M, однако
лучшими методами считаются цепной и бинарное дерево. Это объясняется необходимостью пересылки целых записей в процессе сортировки последовательного массива, а в цепном каталоге и бинарном дереве при формировании пересылаются только адреса связи, а не целые записи.
По времени поиска последовательный массив и бинарное дерево
предпочтительнее цепного каталога. Минимальное время корректировки характерно для бинарного дерева, а минимальный объем дополнительной памяти - для последовательного массива.
Мы приходим к окончательному выводу, что абсолютно безупречного метода организации данных не существует. Однако минимальное время обычно считается более важным критерием, чем минимальная дополнительная память, и тогда лучшим методом организации данных в оперативной памяти ЭВМ необходимо признать упорядоченное бинарное дерево.
Следует отметить, что для последовательной и цепной организации данных разработаны методы ускорения поиска, которые не применимы к деревьям. Это в ряде случаев создает преимущества для последовательных массивов перед деревьями.
Ускорение доступа к данным осуществляться в результате вычисления местоположения требуемой записи. Сами записи могут быть упорядочены алгоритмом сортировки либо используется специальная расстановка записей.
4.6 Организация данных во внешней памяти ЭВМ
В качестве внешней памяти ЭВМ используются в основном устройства электромагнитной записи сигналов, для которых характерно примерное равенство затрат времени на чтение и запись информации, ­магнитные диски. В отличие от оперативной памяти ЭВМ для них перед непосредственно чтением/записью требуется подвод необходимого участка магнитного носителя к механизму чтения/записи (в реальных запо­минающих устройствах могут двигаться и носитель данных, и механизм чтения/записи). Поэтому время доступа к данным на внешнем
69
запоминающем устройстве зависит от места расположения данных на диске или ленте, что существенно отличает их от оперативной памяти и определяет специфику организации данных во внешней памяти ЭВМ.
Данные на внешнем запоминающем устройстве хранятся в виде файлов. Файл представляет собой множество логически связанных записей. Запись обычно соответствует одному значению некоторой составной единицы информации. Каждый файл имеет уникальное имя файла. В простейшем случае файл представляет последовательный массив записей на внешнем запоминающем устройстве. Вся внешняя память разделена на блоки или секторы и обмен с оперативной памятью происходит только целыми секторами.
Существуют стандартные методы организации файлов на магнитном диске и методы доступа к ним. Среди них: последовательная, индексно­последовательная, индексно-произвольная и прямая организация файлов. Во всех случаях в записях файла выделяется ключевой атрибут.
Вопросы для самоконтроля к главе 4
1. По каким критериям производится анализ эффективности
методов обработки данных?
2.Каково количество вариантов возможных состояний
неупорядоченного массива из М записей?
3.Что означает процедура формирования данных?
4.Что означает процедура поиска?
5.Какими методами ускоряется поиск в упорядоченном
последовательном массиве?
6.Что означает процедура корректировки данных?
7.Как осуществляется последовательность обработки данных при
цепной организации данных?
8.Какими методами можно ускорить поиск при цепной организации
данных?
9.Что такое цепной каталог?
10.Почему бинарный метод поиска не эффективен для цепной
организации данных?
11.Как осуществляется связь между записями при древовидной
организации данных?
12.Как осуществляется упорядоченность записей в бинарном дереве?
13.Как осуществляется поиск данных в бинарном дереве?
14.Какой метод требует минимальный объем памяти?
15.Какой метод считается предпочтительным?
70
Глава 5 Моделирование предметных областей в экономике. Базы знаний
5.1 Семантические модели данных
Средства описания данных ориентируются либо на формы представления информации (это синтаксические модели данных, например, реляционная, сетевая, иерархическая) либо на смысловые характеристики информации (семантические модели).
Семантические модели данных представляют собой средство
представления структуры предметной области.
Эталоном семантической полноты является естественный язык. Простейшей конструкцией естественного языка является высказывание, имеющее смысл. Элементами высказываний служат атомарные факты. Атомарный факт представляется тремя компонентами:
(x, y, t), где
x – это один или множество объектов;
y – свойства или связь объектов;
t – время.
Атомарный объект – это любой объект в рамках данной предметной области.
Объекты могут вступать в отношения двух типов – обобщения, когда
один объект определяется в виде множества других объектов, и агрегации, когда объект соотносится с именем действия, в котором он может участвовать. Например, объект Личность обобщает такие объекты, как Рабочий, Служащий, Студент; объект Транспорт агрегируется с действием Перевозка.
Информация о том, что объект имеет некоторые свойства, или что несколько объектов взаимосвязаны, представляется в виде высказывания. Существуют правила вывода новых свойств и связей из ранее определенных свойств и связей.
Семантические модели данных обычно предполагают два уровня
интерпретации:
- уровень объектов предметной области и
- уровень атрибутов базы данных.
Оба уровня при необходимости можно совместить в одном
представлении.
Известно достаточно большое число семантических моделей данных.
Наиболее характерные из них – это модель "сущность-связь" и модель «семантическая сеть». Рассмотрим эти две модели.
5.2 Модель сущностей и связей
Эта модель использует графическое представление всех компонентов. Базовыми элементами в модели "сущность-связь" служат типы сущностей. Многие сущности, рассматриваемые в этой модели, соответствуют физическим объектам предметной области.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]