Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Лекции.doc
Скачиваний:
44
Добавлен:
23.03.2015
Размер:
741.89 Кб
Скачать

Абстрактные структуры данных

Определение. Под структурой данных (СД) мы будем понимать два множества S = {D,R}, гдеD– множество элементов данных, а R – множество взаимосвязей между ними. Другими словами СД – это организованное определенным образом множество элементов данных. В множество R включаются не все взаимосвязи между элементами, а только те, которые не зависят от конкретных значений элементов структуры, т. е. связи характерные для данного типа структуры, которые описывают ее общие характеристики.

Т. е. структурой будем считать множество ее элементов вместе с “системным элементом”, который включает структурную информацию. Часто элемент структуры, кроме данных, включает часть структурной информации, касающейся взаимосвязей с другими элементами этой структуры. В системный элемент включается системная информация, общая для всех элементов структуры и помогающая выполнять ее обработку.

Структура – это сложная конструкция данных и с ней можно связать ряд общих характеристик, таких как

- организация;

- метод доступа;

- методы расположения и обработки и т.д.

Под организацией структуры будем понимать множество взаимосвязей, таких как количество элементов, их взаимное расположение, взаимные связи.

Под методом доступа будем понимать множество операций (действий), выполнив которые, мы получим отдельный выделенный элемент структуры. В большинстве случаев метод доступа можно описать тремя процедурами:

- метод поиска;

- метод адресации;

- метод идентификации, т.е.

MD = {MP, MA, MI}.

Методом поискабудем называть стратегию, правило выбора элемента структуры, который будет подлежать анализу. Метод поиска зависит от организации структуры. Например, для массива – метод последовательного поиска, метод бинарного поиска, метод случайного поиска и т.д.

Метод адресацииэлемента – это процедура нахождения выбранного элемента, его относительного положения, его “чтения” в структуре. Например, для табличной структуры – это обращение к функции расстановки, для массива – это определение приведенного индекса (отображение на вектор памяти).

Метод идентификации– это процедура анализа выделенного элемента с целью его классификации в соответствии с критерием поиска. Это может быть сравнение значений или анализ попадания в интервал, или нахождение элемента, ближайшего к заданному и т.д.

Методом обработкиструктуры будем называть последовательность обработки элементов, наличие взаимосвязей элементов, которые формируют такую последовательность. Важно отметить, что очередность обработки элементов определяется задачей обработки, прикладной задачей, но в зависимости от структуры разные методы обработки могут иметь разную сложность.

По характеристикам структур их можно разделить на определенные классы. Так по устойчивости взаимосвязей выделяют статические и динамические структуры.

Под статической СДбудем понимать такую АСД, в которой в процессе ее обработки могут изменяться значения элементов данных. При изменении элемента в статической СД он размещается на месте старого значения. В статической структуре почти не изменяется системная информация, которая формируется при инициализации структуры. Изменение организации такой структуры – сложное и ограниченное, т.е. в статической структуре изменяется D и неизменно R.

В динамической СДлегко изменяются связи между ее элементами, организация, состав структуры, а не только характеристики ее элементов. Т.е. в такой структуре допускается простое изменение множества R. Как правило, динамические структуры более гибкие (удобные) в использовании, чем статические, но сложность их обработки и содержания (поддержки) значительно большая, чем для статических. Они более точно описывают функционирование предметной области.

Лекція 4. Обзор основних структур даних.

Cтруктуры данныхпредназначены для удобного хранения и доступа к информации. Они предоставляют удобный интерфейс для типичных операций с хранимыми объектами, скрывая детали реализации от пользователя. Это позволяет добиться большей модульности программы. Абстрактные структуры данных иногда делят на две части: интерфейс, набор операций над объектами, который называют АТД(абстрактный тип данных) и реализацию

Языки программирования высокого уровня(Паскаль, Си..) предоставляют удобный интерфейс для чисел: операции +, *, = .. и т.п, но при этом скрывают саму реализацию этих операций, машинные команды.

Структуры данных разделяют на два типа: статические и динамические.

Статические структурыотносятся к разряду непримитивных структур, которые, фактически, представляют собой структурированное множество примитивных, базовых, структур. Например, вектор может быть представлен упорядоченным множеством чисел. Поскольку по определению статические структуры отличаются отсутствием изменчивости, память для них выделяется один раз и ее объем остается неизменным до уничтожения структуры.

Динамические структуры по определению характеризуются отсутствием физической смежности элементов структуры в памяти непостоянством и непредсказуемостью размера (числа элементов) структуры в процессе ее обработки.

Поскольку элементы динамической структуры располагаются по непредсказуемым адресам памяти, адрес элемента такой структуры не может быть вычислен из адреса начального или предыдущего элемента. Для установления связи между элементами динамической структуры используются указатели, через которые устанавливаются явные связи между элементами. Такое представление данных в памяти называется связным. Элемент динамической структуры состоит из двух полей:

информационного поля или поля данных, в котором содержатся те данные, ради которых и создается структура; в общем случае информационное поле само является интегрированной структурой - вектором, массивом, другой динамической структурой и т.п.;

поле связок, в котором содержатся один или несколько указателей, связывающий данный элемент с другими элементами структуры;

Когда связное представление данных используется для решения прикладной задачи, для конечного пользователя "видимым" делается только содержимое информационного поля, а поле связок используется только программистом-разработчиком.

Достоинства связного представления данных - в возможности обеспечения значительной изменчивости структур;

размер структуры ограничивается только доступным объемом машинной памяти;

при изменении логической последовательности элементов структуры требуется не перемещение данных в памяти, а только коррекция указателей;

большая гибкость структуры.

Вместе с тем связное представление не лишено и недостатков, основные из которых:

на поля связок расходуется дополнительная память;

доступ к элементам связной структуры может быть менее эффективным по времени.

Последний недостаток является наиболее серьезным и именно им ограничивается применимость связного представления данных. Если в смежном представлении данных для вычисления адреса любого элемента нам во всех случаях достаточно было номера элемента и информации, содержащейся в дескрипторе структуры, то для связного представления адрес элемента не может быть вычислен из исходных данных. Дескриптор связной структуры содержит один или несколько указателей, позволяющих войти в структуру, далее поиск требуемого элемента выполняется следованием по цепочке указателей от элемента к элементу. Поэтому связное представление практически никогда не применяется в задачах, где логическая структура данных имеет вид вектора или массива - с доступом по номеру элемента, но часто применяется в задачах, где логическая структура требует другой исходной информации.

Структура данных - это организованная совокупность данных, решающая задачи адресации (взаимного расположения элементов в памяти) и доступа (выборки). Каждая структура характеризуется набором операций, которые с ней можно выполнять и стратегией размещения элементов структуры в памяти. Поэтому каждая структура имеет:

внешнее описание: описание свойств структуры данных и описание набора операций. Причем это описание делается с точки зрения использования этой структуры данных;

внутреннее представление: здесь определяется стратегия взаимного расположения элементов в структуре, а также от этого зависит эффективность реализации операций.

Важно понимать, что для одного и того же внешнего описания возможно выбрать несколько представлений, а значит и реализаций структуры данных.

Задачей нашего курса является рассмотрение различных структур данных как с точки зрения присущих им свойств, так и с точки зрения различных способов их реализации без математической оценки эффективности этих способов реализации (это предмет отдельного разговора в курсе "Анализ алгоритмов").

В наиболее абстрактном виде любую структуру данных можно представить в виде:

Структура данных ---------

Представление (REP)

Дескриптор -----

Тело

Дескриптор структуры данных хранит некоторую информацию, общую для всей структуры данных и необходимую для эффективной и удобной реализации набора ее операций. Например, для списка в качестве элементов дескриптора могут выступать указатели первого и последнего элементов списка, а также количество элементов в списке. В дескрипторе структуры может храниться избыточная информация, облегчающая реализацию некоторых операций (например, количество элементов в списке).

Дескриптор структуры должен содержать явную (адрес) или неявную ссылку на тело структуры данных (если тело, например, расположено непосредственно за дескриптором).

Тело структуры данных - это набор взаимосвязанных элементов структуры, ради хранения и обработки которых структура, собственно, и была создана.

Соседние файлы в папке AlgStr