Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Strukturi_danikh_ta_algoritmi_-_konspekt_lektsi...doc
Скачиваний:
33
Добавлен:
23.11.2019
Размер:
870.4 Кб
Скачать

4.2.1.Інвертовані індекси

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

Пошук здійснюється у допоміжній структурі достатньо швидко, так як фактично відсутня необхідність звернення до основної структури даних. Ділянка пам’яті, яка використовується для індексів, є відносно невеликою у порівнянні з іншими методами організації таблиць.

Недоліками даної системи є великі затрати часу на складання допоміжної структури даних і її поновлення. Причому ці затрати зростають зі збільшенням об’єму бази даних.

Система інвертованих індексів є досить зручною й ефективною при організації пошуку в великих таблицях.

4.2.2.Бітові карти

Для таблиць невеликого об’єму використовують організацію допоміжної структури даних у вигляді бітових карт. Для кожного значення вторинного ключа записів основного набору даних записується послідовність бітів. Довжина послідовності бітів рівна кількості записів. Кожен біт в бітовій карті відповідає одному значенню вторинного ключа і одному запису. Одиниця означає наявність ключа в запису, а нуль – відсутність.

Основною перевагою такої організації є дуже проста й ефективна організація обробки складних запитів, які можуть об’єднувати значення ключів різними логічними предикатами. У цьому випадку пошук зводиться до виконання логічних операцій запиту безпосередньо над бітовими стрічками й інтерпретації результуючої бітової стрічки. Іншою перевагою є простота поновлення карти при добавленні записів.

До недоліків бітових карт варто віднести збільшення довжини стрічки пропорційно довжині файлу. При цьому наповненість карти одиницями зменшується зі збільшенням довжини файлу. Для великої довжини таблиці і ключів, які рідко зустрічаються, бітова карта перетворюється в велику розріджену матрицю, яка складається, в основному, з одних нулів.

5.Мережеві алгоритми

Мережі відіграють важливу роль у багатьох програмах. Їх можна використовувати для моделювання таких об’єктів, як мережа вулиць, телефонна або електрична мережа, водопровід, каналізація, водостік, мережа авіаперевезень або залізниць. Менш очевидна можливість використовування мереж для вирішення таких задач, як розбиття на райони, складання розкладу методом критичного шляху, планування колективної роботи або розподіли роботи.

5.1.Представлення мереж

Мережею або графом називається набір вузлів, сполучених ребрами або зв’язками. Для графа, на відміну від дерева, не було визначено поняття батьківського або синівського вузла. З ребрами мережі може бути зв’язаний відповідний напрям, тоді в цьому випадку мережа називається орієнтованою мережею. Для кожного зв’язку можна також визначити її ціну. Для мережі доріг, наприклад, ціна може бути рівна часу, який займе проїзд відрізком дороги, представленому ребром мережі. В телефонній мережі ціна може бути рівна коефіцієнту електричних втрат в кабелі, представленому зв’язком.

Шляхом між вузлами А і B називається послідовність ребер, яка зв’язує два ці вузли між собою. Якщо між будь-якими двома вузлами мережі є не більше одного ребра, то шлях можна однозначно описати, перерахувавши вузли, які входять в нього.

Циклом називається шлях який зв’язує вузол з ним самим. Шлях називається простим, якщо він не містить циклів.

Якщо існує який-небудь шлях між двома вузлами, то повинен існувати і простий шлях між ними. Цей шлях можна знайти, якщо видалити всі цикли з початкового шляху.

Мережа називається зв’язною, якщо між будь-якими двома вузлами існує хоча б один шлях. В орієнтованій мережі не завжди очевидно, чи є мережа зв’язною.

Більшість з методів представлень дерев можна застосувати і для роботи з мережами. Наприклад, представлення повними вузлами, списком нащадків (списком сусідів для мереж) або нумерацією зв’язків також можуть використовуватися для зберігання мереж.

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

Окрім цього, деякі варіанти представлення ребер можуть спростити роботу з певними типами мереж. Ці представлення використовують один тип для вузлів і інший – для представлення зв’язків. Використання визначення типів для зв’язків полегшує роботу з властивостями зв’язків, такими, як ціна зв’язку.

Наприклад, орієнтована мережа з ціною зв’язків може використовувати для типу вузла структуру з номером вузла і списком сусідніх вузлів, а для представлення типу зв’язок – номер кінцевого вузла і ціна зв’язку.

Для представлення неорієнтованих мереж, можна використати інше представлення. Тип для представлення вузлів залишається таким же, що й раніше, але тип для представлення зв’язку включає посилання на обидва вузли на кінцях зв’язку. Для неорієнтованої мережі, попереднє представлення використовувало б два об’єкти для представлення кожного зв’язку – по одному для кожного з напрямків зв’язку.

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