Другие журналы
|
научное издание МГТУ им. Н.Э. БауманаНАУКА и ОБРАЗОВАНИЕИздатель ФГБОУ ВПО "МГТУ им. Н.Э. Баумана". Эл № ФС 77 - 48211. ISSN 1994-0408![]()
Модели структур данных с векторной, списковой и древовидной организацией элементов
# 10, октябрь 2008 УДК 004.422.6 К.А.Пасечников
При решении задач структурного синтеза структуры данных используются для хранения не только основной (информации о графе), но и различной вспомогательной информации. Как было показано в [2,3], способ организации элементов структуры данных существенно влияет на вычислительную и ёмкостную сложность программы решения задач структурного синтеза. Следовательно, для решения ряда задач, одной из которых является задача синтеза оптимальных структур данных, необходимо разработать такую модель структуры данных, которая отражает структурные особенности различных способов хранения данных, существенные с точки зрения оценки вычислительной сложности операций, выполняемых над структурой данных, а также ёмкостной сложности структуры данных.
Любая структура данных представляет собой описание одного
из возможных способов размещения конечного множества данных D в памяти. При этом каждому элементу множества данных
ставится во взаимнооднозначное соответствие P
адрес из множества доступных адресов памяти
Структура данных кроме полезной информации в виде
элементов данных зачастую хранит служебную информацию о связях элементов между
собой. Элемент данных вместе со служебной информацией будем далее называть
компонентом структуры данных. Таким образом можно говорить о наличии множества С
компонентов структуры данных и множества Z,
определяющего взаимнооднозначное соответствие размещенных элементов данных
компонентам структуры На данный момент при построении сложных структур данных применяется два основных способа организации данных - векторный и списковый. Векторный способ организации предполагает последовательное размещение однотипных (одинаковых по размеру) элементов в непрерывной области памяти. Подобное размещение позволяет определить адрес любого элемента вектора по его номеру, адресу первого элемента и размеру. При этом адрес текущего элемента можно определить по адресу любого элемента, находящегося слева или справа от него. Элементом вектора может быть: элемент данных, указатель на данные или структуру данных, ключ для получения данных (в это случае данные хранятся отдельно), признак или флаг (характеристические вектора).
Компонентом вектора будет являться элемент данных, а
множество связей компонентов F будет
представлять собой декартово произведение множества С самого на себя,
т.е.
При переходе от объекта к модели поставим во
взаимнооднозначное соответствие множеству D
множество вершин графа XD, а
множеству адресов A - множество вершин графа XА. Поскольку множество P описывает взаимнооднозначное отношение между
множествами A и D,
каждой паре элементов множества P, можно
поставить в соответствие либо две ориентированных дуги, либо одно
неориентированное ребро. Из соображений простоты выбираем второй вариант –
сопоставляем ребро Каждой связи компонентов из множества F сопоставим дугу из множества UF (см. рисунок 1).
Рисунок 1 - Модель вектора
Рассмотрим способ определения ёмкостной сложности вектора
по модели. Поскольку вектор предназначен для хранения данных фиксированной
длины, обозначим размер одного элемента через
При сравнении нескольких структур данных между собой
необходимо знать объём памяти
Соответственно для вектора Рассмотрим особенности подсчёта функциональной вычислительной сложности по предлагаемой модели вектора. Для определения адреса произвольного элемента по адресу текущего элемента необходимо найти дугу из множества UF инцидентную вершинам адреса текущего и искомого элементов. Подграф g(XА,UF) является полным, что позволяет на основании адреса данного элемента определить адрес любого элемента вектора за O(1). Можно показать, что вычислительная сложность операций, посчитанная по модели, совпадает с вычислительной сложностью операций над вектором, приведённой в [1,2], что доказывает адекватность полученной модели.
Для дополнения модели информацией о вычислительной
сложности операций определим также множество функций
где
S = {
Таким образом, модель вектора будет выглядеть следующим образом:
где
Полученная модель позволяет задавать не только способ организации элементов, но и временные и ёмкостные параметры структуры данных. Ограничения, присущие векторному способу организации данных, делают его использование нерациональным в тех случаях, когда число элементов в структуре данных заранее неизвестно. В этом случае оптимальным вариантом является применение списковой организации данных. Основными структурами со списковой организацией данных, применяемыми для представления графовых моделей и вспомогательных данных, являются линейные односвязные, линейные двусвязные, n-связные и древовидные списки. С точки зрения реализации n-связные списки являются комбинацией списков и векторов адресов элементов, а потому их модели строятся с использованием моделей этих структур.
Списковая организация данных подразумевает
размещение элементов списка в произвольных свободных участках памяти. При
построении списковых структур с каждым компонентом списка связывается набор
вспомогательных полей, обеспечивающий связь отдельных компонентов списка между
собой. Так, для линейного односвязного списка компоненты связаны между собой
отношением «предыдущий-следующий» за счет хранения в компоненте адреса
следующего компонента. Наличие вспомогательных полей требует введения
дополнительных множеств – множество Рассмотрим модель простейшего односвязного списка, когда с каждым элементом списка связан всего один элемент данных. Список может хранить все те же данные, что и вектор за исключением того, что элементы данных списка не обязательно должны быть однотипными. При переходе от объекта к модели будем считать, что каждый компонент списка представляет собой запись, а сам список является множеством записей, соединённых между собой. Записью называют разновидность вектора, основными отличиями которой являются заранее известное постоянное количество элементов и отсутствие требования однотипности (одноразмерности) элементов данных.
Отобразим множество компонентов списка С на
множество записей H следующим образом – количество
элементов каждой записи множества H для
односвязного списка должно быть равно двум, то есть
Рисунок 2 – Модель односвязного списка Расчёт ёмкостной сложности списка сводится к подсчёту памяти, занимаемой всеми компонентами списка:
Если список хранит однотипные элементы, а размер одного
указателя равен
По аналогии с вектором, модель списка будет выглядеть следующим образом:
Полученные модели базовых структур данных позволяют определить организацию элементов данных; отражают ёмкостные и временные параметры структуры данных; позволяют создавать сложные комбинированные структуры данных, а также дают возможность автоматизировать процесс определения их временных и ёмкостных параметров.
Литература
1. Т. Кормен, Ч. Лейзерсон, Р. Ривест. Алгоритмы: построение и анализ. – М.:МЦНМО, 2004. – 960 с. 2. В.А. Овчинников. Алгоритмизация комбинаторно-оптимизационных задач при проектировании ЭВМ и систем. – изд-во. М.:МГТУ им. Баумана, 2001. – 288 с. 3. А. Ахо, Д. Ульман, Д. Хопкрофт. Структуры данных и алгоритмы. – М.:Вильямс, 2003. – 384 с. 4. Jiazhen Cai, Robert Paige. Type Analysis and Data Structure Selection. – Computer Sci. Dept., Courant Inst. Math. Sci., New York Univ. , 1973. – 520 pp. 5. Пасечников К.А. Анализ проблемы синтеза оптимальных структур данных для алгоритмов решения комбинаторных задач на графах. . Сборник трудов #5 молодых учёных, аспирантов и студентов ²Информатика и системы управления в ХХI веке⌡, . М.: МГТУ им. Н.Э. Баумана, 2007. 415 с. 6. Пасечников К.А., Иванова Г.С. Модели структур данных для представления объектов задач структурного анализа и синтеза. - Сборник трудов #4 молодых учёных, аспирантов и студентов "Информатика и системы управления", - М.: МГТУ им. Баумана, 2006. - 154 с. 7. Овчинников В.А., Иванова Г.С., Ничушкина Т.Н. Выбор структур данных для представления графов при решении комбинаторно-оптимизационных задач // Вестник Московского государственного технического университета им. Н.Э. Баумана. Приборостроение. . 2001. . # 2(43). . C. 39-51. 8. Иванова Г.С, Пасечников К.А. Макрогенерация описаний структур данных для системы проектирования алгоритмов решения задач структурного синтеза // Современные информационные технологии: Сб. трудов каф., посвященный 175-летию МГТУ им. Н.Э. Баумана. . М.: Эликс+, 2004. . С. 69-73.
Публикации с ключевыми словами: оптимизация, структуры данных Публикации со словами: оптимизация, структуры данных Смотри также:
Тематические рубрики: Поделиться:
|
|
||||||||||||||||||||||||||||||||
|