
- •Дані як основа, з якою працює програмне забезпечення. Модифікація даних. Вимоги до даних в частині швидкості пошуку та модифікації. Навести приклади із баз даних різного призначення.
- •Структура даних мови Object Pascal, коротка характеристика складених типів даних, приклади використання.
- •Масиви статичні та динамічні, переваги та недоліки. Використання масивів для організації роботи з даними. Заповнення масивів з файлу.
- •Формування типізованого файлу на базі таблиці Excel. Приклад програми.
- •Масиви статичні та динамічні. Додавання, видалення та модифікація даних (робота із даними). Приклад програмного коду.
- •Стек: призначення, приклади, застосування. Організація та робота стеку на базі масиву. Приклад програмного коду.
- •Черга: призначення, приклади , застосування. Організація та робота черги на базі масиву. Приклад програмного коду.
- •Пошук даних в масиві. Послідовний та бінарний методи пошуку. Переваги та недоліки. Приклад програмного коду.
- •Сортування масивів на місці, прості та складні алгоритми сортування. Приклад програмного коду (але не бульбашкою).
- •Сортування масивів на місці, метод вставок.
- •Сортування масивів на місці, метод простого вибору.
- •Сортування масивів на місці, метод Shaker (одночасний пошук мінімального та максимального елементів.
- •Динамічний список: призначення, організація, формування, ініціалізація, наприклад з файлу. Переваги та недоліки порівняно з масивами. Приклад програмного коду.
- •Лінійний динамічний список: додавання, видалення та модифікація даних (робота з даними, порівняти із масивами). Приклад програмного коду.
- •Кільцевий динамічний список: переваги та недоліки порівняно з лінійним. Додавання, видалення та модифікація даних (робота із даними). Порівняти з лінійним. Приклад програмного коду.
- •Сортування даних у динамічних списках по одному та декільком полях. Приклад програмного коду.
- •Стек: призначення, приклади , застосування. Організація стеку за допомогою лінійного динамічного списку. Приклад програмного коду.
- •Включення/забирання елемента до/з стеку. Приклад програмного коду.
- •Включення/забирання елемента до/з черги. Приклад програмного коду.
- •Черга: призначення, приклади застосування. Організація черги за допомогою лінійного динамічного списку. Приклад програмного коду.
- •Формування черги: принципи вставки заявок у чергу, використання приоритетів при формування черги. Позачерговий пріоритет (0).
- •Визначення характеристик черги: середня довжина черги, середній час виконання заявки.
- •Наведіть алгоритми додавання (insert) заявки у чергу.
- •Наведіть алгоритми обслуговування (service) заявки у черзі.
- •Робота із плоским файлом. Додавання, видалення та модифікація даних (робота із даними). Файли переповнення. Порівняти з масивами та списками. Приклад програмного коду.
- •Пошук даних у плоских файлах (послідовний та бінарний). Сортування файлів по одному та декільком полям. Приклад програмного коду.
- •Пошук даних у плоских декількох логічно зв’язаних файлах. Приклад програмного коду.
- •Індексні файли: призначення, створення та використання. Переваги та недоліки. Приклад програмного коду.
- •Сторінкова організація файлу: переваги та недоліки порівняно з плоским файлом. Файли переповнення.
- •Індексна організація файлу. Одно- та багаторівнева індексація. Переваги та недоліки порівняно з плоским файлом. Ознаки необхідності реорганізації файлу. Навести схему з поясненнями.
- •Динамічна організація при сторінковій організації файлу, організація файлів переповнення. Навести схему з поясненнями.
- •Файли прямого доступу. Визначення адрес в залежності від значення даних. Функції хешування. Файл переповнення. Загальні алгоритми.
- •Функції хешування: алгоритми ділення, складання.
- •Функції хешування: алгоритми зсуву розрядів, .
- •Функції хешування: алгоритми ділення, .
- •Колізії при хешуванні, шляхи (декілько) розв’язання цих проблем.
- •Дерева: загальна характеристика, структура вузла, приклади використання.
- •Бінарні дерева пошуку: приклади призначення, структура вузла, алгоритм формування.
- •Бінарні ідеально сбалансовані дерева: приклади призначення, структура вузла, алгоритм формування.
Файли прямого доступу. Визначення адрес в залежності від значення даних. Функції хешування. Файл переповнення. Загальні алгоритми.
Сторінки називаються пакетами. ключ перетворюється в адресу і записується в пакет.
Колізіїї- коли йде у файл переповнення.
Алгоритми перетворення ключа
1)Ключ повинен бути перетворен у число якщо він текстовий (сума кодів ASCI)
2)Pf допомогою функцый хешування ключ перетворюэться у сукупнысть випадково розподылених чисел які і є адресами пакетів.
Якщо вони не укладаються в адреси пакетів то за допомогою консьанти ви приводите діапазон пакетів до фактичного.
3)Множимо на К і приводимо до кількості наявних пакетів.
Алгоритми хешування.
Метод середніх квадратів.
Метод ділення.
Метод складання.
Метод Зсуву розрядів.
Метод Перетворення основою системи числень.
Метод ділення поліномів.
Функції хешування: алгоритми ділення, складання.
Метод згортання
При цьому методі значення основного ключа поділяють зліва направо на рівні, за кількістю цифр (символів, байтів), частини крім, можливо, останньої частини, а потім отримують суму цих частин, яка і буде значенням згорнутого ключа. При сумуванні інколи не переносять старший розряд, якщо сума за кількістю цифр буде більшою за обрану довжину.
Приклад. Хай значення ключа хі = 187249653, а згорнутий ключ має бути тризначним. Поділяємо основній ключ на три частини по три цифри : 187׀249׀653. Їх сума дорівнює 187+249+653=1089, відкидаємо старший розряд, оскільки значення чотиризначне, і отримуємо значення згорнутого ключа h=89.
Функції хешування: алгоритми зсуву розрядів, .
Зсув розрядів
Всі розряди ключа розбиваються на дві частини: старші та молодші. Далі обидві частини зсовуються за напрямком один до одного таким чином, щоб кількість перекритих цифр дорівнювалася кількості цифр пакету. Пари цифр сумуються по вертикалі, отримана сума вирівнюється по діапазону адрес за допомогою константи як у алгоритмі середини квадрату.
Функції хешування: алгоритми ділення, .
Метод ділення.
В основі цього алгоритму лежить просте ділення чисел, при цьому бажано, щоб дільник був великим простим числом, тобто
Н(х) = (х mod m) + 1,
де х – значення ключа;
mod – операція ділення націль;
m – велике просте число (число, що не має дільників).
Приклад. Хай значення ключа представлено рядом хі = 2000, 2001, … , 2017; дільник m = 101. Тоді значення згорнутого ключа hі = 82,83, … ,99. Розглянемо інший ряд записів з ключами хі = 3310, 3311, 3313, 3314, ... 3323, 3324. При тій же функції хешування отримуємо такі значення згорнутого ключа hі = 79, 80, 82, 83, … , 92, 93. Як бачимо, має місце колізія для значень основного ключа 2000 та 3313, яким відповідає значення згорнутого ключа 82, і 2001 та 3314, яким відповідає значення згорнутого ключа 83..
Колізії при хешуванні, шляхи (декілько) розв’язання цих проблем.
Для розв’язання проблеми колізій в ФПД передбачається область переповнення (спільна для всіх пакетів), куди направляються записи з пакетів, які вже заповнені. Пошук Даних відбувається наступним шляхом: для запису, який шукається, визначається ключ і відбувається перехід до відповідного пакету записів. Якщо запис не знайдено, відбувається пошук у області переповнення (звичайно невеликій). Якщо запис не знайдено – значить він у базі відсутній.
Якщо колізії будуть зустрічатися достатньо часто, то загальна область переповнення стає дуже великою і пошук у неї послідовним методом стає неефективним. У цьому випадку виділяють області переповнення при кожному з окремих пакетів. При цьому область переповнення, яку необхідно переглядати, навіть при великій кількості колізій стає достатньо малою, і процес пошуку суттєво прискорюється.