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

ТСД. Лекции Силантьевой / Вектора Айлиффа

.doc
Скачиваний:
83
Добавлен:
10.02.2015
Размер:
49.66 Кб
Скачать

Вектора Айлиффа

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

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

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

Каждый из указателей адресует область памяти, соответствующую нулевому значению индекса, даже если его в диапазоне значений нет. После прибавления к указателю значения индекса получается адрес соответствующего компонента вектора Айлиффа или, в случае вектора нижнего уровня, – адрес bтребуемого элемента массива. Таким образом, к элементу массива M[J1,J2,……,Jn] можно обратиться, пройдя по цепи от основного дескриптора через все компоненты вектора Айлиффа, после чего и будет получен адрес требуемого элемента:

Addr (M[J1,J2,……,Jn]) = (…(…(D + J1) + J2) +…) + Jn , где D – значение указателя вектора Айлиффа первого уровня, хранящееся в основном дескрипторе.

Структура вектора Айлиффа для матрицы М[2..3, -1..1] с длиной элемента L=4 приведена на рисунке:

Например, дескриптор 1 имеет адрес 100, адрес начала масива – 200, тогда вектора Айлиффа будут выглядеть так:

Дескриптор 0 Дескриптор 1 J1

204

216

0

0

а 1

2

D(100)

т 3

J2

М[2, -1]

M[2, 0]

M[2, 1]

M[3, -1]

M[3,0]

M[3,1]

Пример: Для трехмерного массива М(4..5, -1..1, 0..1) векторами

Айлиффа будут:

Основной дескриптор Вектор Айлиффа I уровня

:

D

:

:

0

1

2 J1

3

4

5

Векторы Айлиффа II уровня

-1 -1

0 0 J2

1 1

В[4,-1,0]

B[4,-1,1]

B[4,0,0]

B[4,0,1]

B[4,1,0]

B[4,1,1]

B[5,-1,0]

B[5,-1,1]

B[5,0,0]

B[5,0.1]

B[5,1,0]

B[5,1,1]

0 1 0 1 0 1 0 1 0 1 0 1

J3

Большинство современных языков поддерживает работу со СД, более того, во многих из них уже реализованы основные структуры (string – Pascal, Vector – Java …), но не всегда они удовлетворяют потребностям программиста и требуется умение создавать свои СД.

Операции над созданными структурами данных

  1. Обход структуры: доступ к каждому элементу структуры («посещение» элемента);

  2. Поиск: нахождение расположения элемента с данным значением (ключом);

  3. Вставка: включение нового элемента в структуру;

  4. Удаление: исключение элемента из структуры.