- •Лекція 1
- •Основні визначення та поняття
- •1.1.Термінологія
- •1.2. Класифікація структур данях
- •1.3. Основні операції над структурами даних
- •Контрольні запитання
- •Лекція 2 алгоритми. Складність алгоритмів
- •1. Зображення алгоритмів
- •2 Складність алгоритмів
- •3. Класи алгоритмів
- •Контрольні запитання
- •Лекція 3 методи сортування
- •Лекція 4 методи сортування (продовження)
- •4. Сортування включенням
- •5. Сортування розподілом
- •6. Сортування злиттям або об’єднанням
- •Лекція 5 Дерева
- •1. Основні визначення та поняття
- •2. Бінарні дерева
- •3. Зображення в пам‘яті комп‘ютера графоподібних структур
- •Контрольні запитання
- •Лекція 6 дерева (продовження)
- •4. Сортування на деревах
- •4.2. Пірамідальне сортування.
- •Контрольні запитання
- •Лекція 7 лінійні структури даних
- •1. Стеки, черги, деки
- •1.1. Стеки
- •1.2. Черги
- •1.3. Деки
- •1.4. Організація стеків, черг і деків
- •Контрольні запитання та вправи
- •3. Множини I кортежі
- •4. Зберігання множин і масивів
- •4.1 Зберігання розріджених матриць
- •Контрольні запитання
- •Лекція 9 Лінійні списки
- •1. Основні визначення та поняття
- •2. Однонаправлені списки
- •3. Двонаправлені списки
- •4. Циклічні списки
- •Контрольні запитання та вправи
- •Лекція 11 нелінійні структури даних
- •1. Таблиці
- •2. Зображення таблиць
- •Контрольні питання
- •Лекція 13 Пошук даних
- •1. Послідовний або лінійний пошук
- •2. Двійковий пошук
- •1. Дерева порівнянь на векторній пам‘яті.
- •3.Пошук у таблиці
- •4. Прямий пошук стрічки
- •5. Алгоритм Кнута, Моріса і Прата пошуку в стрічці.
- •7. Алгоритми з поверненням
- •Лекція 14 Пошук у таблиці
- •1. Пошук у таблицях з обчислюваними адресами
- •2. Пошук у таблицях з прямим доступом
- •3. Пошук у Хеш-таблицях.
- •Контрольні питання
2. Зображення таблиць
Структуру зберігання таблиць вибирають в залежності від типу операцій, що виконуються над ними. Для внутрішніх таблиць може бути вибрана довільна структура, яку можна побудувати в оперативній пам‘яті. Залежно від методу доступу до елементів таблиці поділяються на послідовні, деревоподібні і з обчислювальними адресами. Останні, в свою чергу, поділяються на таблиці з прямим доступом і хеш-таблиці. Всіх їx, крім таблиць з прямим доступом, можна зберігати у векторній і зчепленій пам'яті.
У найпростіших послідовних таблиць для зберігання одного запису потрібно щонайменше одну ділянку пам'яті з двома полями: КЛЮЧ і значення. Таблиця може зображуватися як вектор із цих ділянок, або як лінійний список.
Деревоподібні таблиці або таблиці, організовані як дерева порівнянь, також можуть бути зображені у векторній і зчепленій пам'яті. У першому випадку елементи даних повинні бути впорядковані за значенням ключа, у другому - зображені у вигляді двозв‘язного списку. Для цього до кожного елемента таблиці повинно бути приєднано два вказівники - відповідно на ліве і праве піддерево. Тоді елемент таблиці перетворюється до такого:
де ЛВ, ПВ - відповідно лівий і правий вказівники.
Контрольні питання
-
Що називається таблицею?
-
Назвіть основні операції з таблицями.
-
Назвіть основні властивості ключа запису в таблиці
-
В залежності від методу доступу до елементів таблиці поділяються на…
Лекція 13 Пошук даних
Задача пошуку виникла пізніше, ніж задача сортування. Поява її спричинена головним чином появою автоматизованих інформаційних систем АІС, які будуються на основі ЕОМ.
Розглянемо звичайну пошукову задачу: як знаходити дані, що зберігаються в пам‘яті ЕОМ з якоюсь ідентифікацією.
Наприклад, в обчислювальній задачі потрібно знайти f(х) , маючи значення x і таблицю значень функції f(x) ; у лінгвістичних задачах може цікавити англійський еквівалент відповідного слова.
Взагалі будемо припускати, що зберігається множина з n записів i необхідно визначити місцезнаходження відповідного запису. Розглянемо ряд алгоритмів пошуку і наведемо їх короткі характеристики, а також рекомендації застосування.
1. Послідовний або лінійний пошук
Найпростішим методом пошуку певного запису, що знаходиться у невпорядкованій таблиці, є послідовний перегляд кожного запису, доки не буде виявленого злиття з шуканим.
Алгоритм L.
Таблиця містить п записів R1 ,..., Rп з ключами k1 ,..., kп . Необхідно знайти запис iз заданим ключем k.
L1. Ініціалізація індексу проходження таблиці: і=1.
L2. Якщо k=ki - кінець успішний; якщо ні, перехід на L3.
L3. Зміна індексу і =i+1.
L4. Перевірка умови i<n? Так: перехід на L2. Ні - кінець неуспішний.
Ефективність алгоритму можна оцінити, підрахувавши кількість виконаних порівнянь тих значень ключів, які приймають участь у пошуку. Середня кількість таких порівнянь дорівнює величині п.
2. Двійковий пошук
Другим відносно простим методом доступу до таблиць є метод бінарного пошуку. Двійковий пошук можливий у таблицях, організованих як дерева порівнянь. Елементи в таких таблицях зберігаються в лексикографічному /тобто алфавітному/ порядку, або в порядку зростання числових значень ключів.
Загальна стратегія організації дерева полягає у поділі таблиці на підтаблиці, сукупності елементів на підмножини елементів. Тоді процедура пошуку елемента в дереві порівнянь нагадує пошук імені в телефонному довіднику. Для відшукання елемента потрібно спочатку вирішити, в якій підмножині знаходиться елемент, знайти цю підмножину і після цього продовжувати пошук.