Лекции по курсу «Алгоритмизация и программирование»

advertisement
Лекции по курсу
«Алгоритмизация и программирование»
Лекция 12. Динамические структуры
данных: связные списки, деревья, графы.
Представление файлов на дисковых
носителях. Параллельная обработка
информации
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Основные особенности динамических
структур.
Основным свойством динамических структур является отсутствие
физической смежности элементов структуры в памяти и непостоянство
числа элементов структуры в процессе ее обработки. Размещение
динамической структуры может быть реализовано как на смежной, так
и на связной (как правило) памяти. В последнем случае каждый
элемент структуры состоит их двух полей:
 информационного поля или поля данных;
 служебного поля – поля связок, в котором содержаться один или
несколько указателей, связывающих данный элемент с другими
элементами структуры.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С
Основные особенности динамических
структур.
Достоинства связного представления динамических
структур:
 размер структуры ограничивается только доступным размером
памяти;
 при изменении логической последовательности элементов
структуры не требуется их перемещения в памяти, достаточно лишь
скорректировать указатели.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С
Основные особенности динамических
структур.
Недостатки связного представления динамических
структур:
на поля связок расходуется дополнительная память;
доступ к элементам связной структуры может быть
менее эффективным по времени.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С
СВЯЗНЫЕ СПИСКИ
Односвязный линейный список
Списком называется упорядоченное множество, состоящее из
переменного числа элементов, к которым применимы операции
включения и исключения.
Если ограничения на длину списка не допускаются, то список
представляется в памяти в виде связной структуры следующего вида
HEAD
DATA
NEXT
DATA
NEXT
DATA
Представленная на данном рисунке структура называется
ОДНОСВЯЗНЫМ ЛИНЕЙНЫМ СПИСКОМ.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С
NULL
СВЯЗНЫЕ СПИСКИ
Двухсвязный линейный список
Обработка односвязного списка не всегда удобна, так как отсутствует
возможность продвижения в противоположную сторону. Такую
возможность обеспечивает ДВУХСВЯЗНЫЙ ЛИНЕЙНЫЙ СПИСОК, каждый
элемент которого содержит два указателя: на следующий и предыдущий
элемент списка.
HEAD
NULL
DATA
NEXT
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С
PREV
DATA
NEXT
PREV
DATA
NULL
СВЯЗНЫЕ СПИСКИ
Основные операции над списками: исключение элемента
из списка
Было
DATA
NEXT
DATA
NEXT
DATA
NEXT
Стало
DATA
NEXT
DATA
NEXT
DATA
NEXT
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
СВЯЗНЫЕ СПИСКИ
Основные операции над списками: включение нового
элемента в список
Было
DATA
NEXT
DATA
NEXT
DATA
NEXT
Стало
DATA
NEXT
DATA
NEXT
DATA
NEXT
DATA
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
NEXT
СВЯЗНЫЕ СПИСКИ
Основные операции над списками
Рассмотренное размещение данных в виде связных списков позволяет добиться
большой гибкости при работе. Однако доступ к отдельным элементам
последовательности не является прямым и эффективным. Например, при
поиске среднего элемента последовательности даже при известной её длине,
требуется просмотреть половину списка. Поэтому при выборе способа
представления структур данных следует помнить, что выбор того или иного
представления данных в значительной степени зависит от типа операций,
выполняемых с элементами последовательности. Связное представление
предпочтительнее лишь в том случае, если в значительной степени
используются операции включения и исключения элементов.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Деревья
Конечным деревом T называется непустое конечное множество
упорядоченных узлов, таких, что существует один выделенный узел,
называемый корнем дерева, а оставшиеся узлы разбиты на m поддеревьев
T1, T2, …, Tm. Пример дерева из 9 узлов
А
Б
Д
В
Е
Г
Ё
Ж
З
Данное дерево содержит 9 узлов (А-З), узлы с метками Д, Е, Ё, Ж, З являются
ЛИСТЬЯМИ, остальные узлы – внутренние. Узел с меткой К – корень. Важной
разновидностью являются БИНАРНЫЕ или ДВОИЧНЫЕ деревья. Двоичное
дерево T либо пустое, либо состоит из корня и двух бинарных поддеревьев:
левого T1 и правого T2
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Деревья
Способы физического представления деревьев
Большинство машинных представлений деревьев основаны на связанных
распределениях, повторяющих логическую структуру. Каждый узел состоит в
данном случае из поля данных и нескольких полей связок, в которых
размещаются указатели (подобно связным спискам).
Представление деревьев на смежной памяти (в виде одномерного массива)
предполагает неявное присутствие рёбер, переход по которым выполняется
посредством арифметических операций над индексами массива. Смежное
формирование деревьев можно осуществить двумя способами.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Деревья
Первый способ физического представления деревьев
ПЕРВЫЙ СПОСОБ применим при любом постоянном количестве рёбер,
выходящих из вершин (регулярное дерево). Рассмотрим его на примере
регулярного двоичного дерева. Пусть имеется одномерный массив (вектор),
неявно определяющий структуру двоичного дерева как
a[1]
a[2]
a[4]
a[5]
Левое поддерево: a[i*2]
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
a[3]
a[6]
a[7]
Правое поддерево: a[i*2+1]
Деревья
Второй способ физического представления деревьев
ВТОРОЙ СПОСОБ, основанный на индексной арифметике, применим только для двоичных
деревьев. Пусть для представления дерева используется одномерный массив ai, ai+1, …,
aj. Корнем дерева считают элемент a[m], где m=(j+i)/2, т.е. середина массива. Левое
поддерево располагается в массиве ai, ai+1,…, am-1, а правое - am+1, am+2,…, aj.
Корни поддеревьев рассчитываются подобным же образом, что и корень основного
дерева.
a[4]
a[2]
a[1]
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
a[3]
a[6]
a[5]
a[7]
Деревья
Основными операциями над деревьями являются, как и для
связных списков, операции включения и исключения
элементов. Их реализация зависит, очевидно, от способа
представления дерева в памяти компьютера.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Файлы
Логическая структура файлов
Файл – поименованная область внешней памяти
компьютера;
Файл характеризуется именем, атрибутами и размером;
Имя – строка ограниченной длины (от 11 до 255);
Атрибуты задают свойства файла (например, права
доступа);
Размер – объем хранимой информации.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Файлы
Физическая структура файлов
Способ представления файла на носителе зависит от типа
носителя (магнитный дисковый накопитель, оптический
диск, флешь память).
Для однотипных устройств также существуют различные
способы представления файлов (файловые системы FAT,
NTFS, HPFS).
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Файлы
Принцип представления файлов в файловой системе FAT
Разновидности файловой системы FAT:
FAT12 (на дискетах);
FAT16 (жесткие диски);
FAT32 (жесткие диски).
Основные понятия: магнитный диск, дорожка, сектор,
кластер.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Файлы
Принцип представления файлов в файловой системе FAT 12
Нулевая дорожка хранит:
в нулевом секторе
загрузочная запись;
в следующих – две (или
больше) копии таблицы
размещения файлов FAT;
в оставшихся – имена и
номера первых кластеров
файлов корневой
директории;
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Файлы
Сущность таблицы размещения файлов FAT
№ кластера
№ дорожки
№ сектора
доступность
0
0
0
-
1
0
1
-
2
0
2
+
Хранение файла в виде связного списка
DATA
№
кластера
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
DATA
№
кластера
DATA
NULL
Файлы
Свойства файловой системы FAT
- реально занимаемое файлом пространство на диске кратно
объему одного кластера и не может быть меньше него;
- чтение данных с диска происходит быстрее, если
соответствующие кластеры расположены в смежных
областях поверхности диска;
- при повреждении одного кластера теряется возможность
доступа ко всем кластерам, следующим за ним;
- доступ к данным от начала файла к концу происходит
быстрее, чем от конца к началу.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Файлы
Программная реализация работы с файлами (на примере языка С)
char i;
fread(&i, sizeof(char), 1, f1);
Указатель на
переменную, в
которую
производится
чтение
Размер читаемой
порции данных
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Кол-во читаемых
порций данных
Имя файловой
переменной
Параллельная обработка информации
Два способа параллельной обработки:
- параллельная обработка;
- конвейерная обработка.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Параллельная обработка информации
Основные направления реализации систем параллельной обработки:
- векторно-конвейерные компьютеры;
- массивно-параллельные компьютеры;
- параллельные компьютеры с общей памятью;
- кластерные компьютеры.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Параллельная обработка информации
Эффективность систем параллельной обработки. Закон Амдала.
Пусть f – доля последовательных операций в системе,
причем 0<=f<=1
Ускорение, получаемое системой равно:
s1 / {f + (1 - f) / p}.
© В.М. Гриняк, доц. каф. ИСКТ ВГУЭС, при участии Бондаренко Р. С.
Download