Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OРГАНІЗАЦІЯ БАЗ ДАНИХ І ЗНАНЬ-ЛЕКЦІЯ.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
815.1 Кб
Скачать

Загальні підходи

Будь-яке представлення структури даних у пам'ятi ЕОМ повинно мiстити в собi як самi данi, так i заданi взаємозв'язки, що i визначають структурування.

Форма представлення структур даних у пам'ятi ЕОМ залежить вiд очiкуваного використання даних, оскiльки для рiзноманiтних типiв структур ефективнiсть виконання тих або iнших операцiй опрацювання даних рiзноманiтна. Основна розбiжнiсть форм уявлення структур даних у пам'ятi ЕОМ визначаться в першу чергу тим, як адресуються елементи структури даних у пам'ятi машини - по мiсцю або по вмiсту. У першому випадку вказуються логiчнi або фiзичнi адреси даних, визначальне мiсце розташування даних i їхня вибiрка здiйснюються по вiдомому значенню ключа, тобто визначаються вмiстом самих даних. Цей випадок реалiзується в спецiальнiй - асоцiативнiй пам'ятi ЕОМ. Деякий аналог асоцiативної пам'ятi може бути реалiзований засобами спецiального програмного забезпечення в звичайнiй пам'ятi ЕОМ.

Найбiльш простою формою збереження даних у пам'ятi ЕОМ є одномiрний лiнiйний список. Лiнiйний список - це множина n i 0 об'єктiв (вузлiв) X[1], X[2], &, X[n], структурнi властивостi якого пов'язанi лише з лiнiйним розташуванням вузлiв. Якщо n > 0, те X[1] є першим вузлом; для 1< i < n вузол X[i-1] передує вузлу X[i], а вузол X[i+1] iде за ним, X[n] є останнiм вузлом, тобто лiнiйний список реалiзує структуру, що можна визначити як лiнiйне впорядкування елементiв даних.

Спискові структури

Лiнiйний список X розглядають як послiдовнiсть X[1], X[2], &, X[i], &, X[n], компоненти якої iдентифiкованi порядковим номером, що вказує їхнє вiдносне розташування в X.

Одномiрний лiнiйний список, що використовується для збереження даних у пам'ятi машини, називають ще вектором даних або фiзичною структурою збереження даних. Використання лiнiйного списку в якостi фiзичної структури збереження даних визначається властивостями пам'ятi обчислювальної машини.

Проблема представлення логiчних структур даних у пам'ятi ЕОМ полягає в знаходженнi ефективних методiв вiдображення логiчної структури даних на фiзичну структуру збереження. Таке вiдображення називають адресною функцiєю.

При реалiзацiї адресної функцiї використовують два основних методи: послiдовний розподiл пам'ятi; зв'язний розподiл пам'ятi.

Послiдовний розподiл пам'ятi. Послiдовний розподiл - простий i природний засiб збереження лiнiйного списку. У цьому випадку вузли списку розмiщаються в послiдовних елементах пам'ятi (рис.5.1).

Адреса

Вмiст

±(1)= І

Y1

±(i)= І + (i -1)m

Yi

 

___

±(n)= І + (n -1)m

Yn

Рис. 5.1 Приклад послiдовного розподiлу пам'ятi для представлення лiнiйного списку

При послiдовному розподiлi вектор даних логiчно вiддiлений вiд опису структури збережених даних. Наприклад, якщо структура даних являє собою лiнiйний список (наприклад, файл записiв фiксованої довжини), то опис структури зберiгається в окремому записi i мiстить:

  • n - розмiр вектора даних, тобто кiлькiсть елементiв спискiв-записiв;

  • m - розмiр елемента списку, тобто розмiр запису, наприклад у байтах;

  • І- адреса бази, що вказує на початок вектора даних у пам'ятi.

У цьому випадку адреса кожного запису можна обчислити за допомогою адресної функцiї, що вiдображає логiчний iндекс, що iдентифiкує запис у структурi, на адресу фiзичної пам'ятi

±(i)= І + (i -1)m

У випадку лiнiйного списку адресна функцiя складається з операцiй зсуву i маштабування. Будь-якi вiдношення, що можна висловити на мовi цiлих чисел, можна витлумачити як вiдношення мiж елементами пам'ятi, одержуючи при цьому усiлякi варiанти структур.

Розглянемо ще один спосіб реалізації, що використовується тільки для двійкових дерев. Якщо для уявлення двійкового дерева використовується вектор пам'яті від елемента i до елемента j включно, то корінь дерева розміщається в елементі пам'яті з адресою

і = [(i+j)/2],

де  - знак округлення до найближчого меншого цілого.

Корінь дерева розміщається в середину вектора. У елементах пам'яті від i -го до (m-1)-го включно розміщається ліве піддерево. У елементах пам'яті те (m+1)-го до j -го включно розміщається праве піддерево. Аналогічно процес повторюється для розміщення кожного піддерева. Приведений засіб дозволяє реалізувати двійкове збалансоване дерево.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]