- •0Міністерство освіти і науки, молоді та спорту україни
- •«Теорія алгоритмів» Методичні вказівки
- •2.1 Види алгоритмів
- •2.2 Організація лінійних алгоритмів .
- •2.3 Організація розгалужень в са
- •2.4 Організація циклів.
- •Розділ 3. Моделі обчислень
- •3.1 Скінченний автомат, як модель перетворювача дискретної інформації
- •3.2 Визначення та властивості скінченого автомату
- •3.3 Автомат Мілі
- •3.4 Автомат Мура
- •3.5 Машина Тюрінга.
- •3.5.1 Історія
- •3.5.2 Визначення машини т.
- •3.5.3 Можливості машини Тюрінга
- •3.5.4 Приклади
- •4.1 Необхідність структурування даних. Поняття Структури даних
- •4.2 Послідовне і зв’язне розподілення даних в пам’яті еом.
- •4.2.2 Зв'язаний розподіл в пам'яті.
- •4.3 Лінійні та нелінійні структури даних.
- •4.3.1 Лінійні струтури даних
- •Однозв'язні списки
- •Двохзв'язні списки
- •4.3.2 Нелінійні структури даних
- •4.4 Статичні структури даних.
- •4.5 Уявлення в пам’яті машини множин; операції над множинами. Уявлення графів. Дерева і бінарні дерева. Характеристики дерев. Ліс. Уявлення бінарних дерев. Перехід від дерева до бінарного дерева.
- •4.5.1 Множини. Опис множин, операції над множинами.
- •4.5.2 Поняття графа як структури даних.
- •Застосування графів
- •4.5.3 Поняття дерева як структури даних
- •4.5.4 Бінарне дерево
- •Перехід від дерева до бінарного дерева
- •4.6 Порядок обходу вузлів дерева: обернений і внутрішній. Властивості обходу вузлів дерева: прямий, обернений і внутрішній. Властивості обходу дерев. Порядок та властивості обходу дерева.
- •5.1 Предмет теорії комбінаторних алгоритмів (обчислювань)
- •5.2 Правила множення і суми для знаходження
- •5.3 Види задач підрахунку числа елементів множин
- •1. Метод рекурентних співвідношень.
- •2. Метод включення і виключення.
- •5.4 Елементи комбінаторики. Набори: набори з повторюванням; специфікація набору
- •Розділ 6 Ефективність алгоритмів
- •6.1. Характеристики алгоритмів.
- •6.2 Ємна та часова складність. Поліноміальна зв’язність.
- •6.3 Класи p та np
4.2 Послідовне і зв’язне розподілення даних в пам’яті еом.
4.2.1 ПОСЛІДОВНИЙ РОЗПОДІЛ В ПАМ'ЯТІ.
При послідовному розподілі в пам'яті список розміщується в суміжних елементах пам'яті.
…
…
Переваги послідовного розподілення:
1. Можливість безпосередньої адресації потрібної комірки, оскільки номер комірки легко обчислюється.
2. Економія пам'яті: елемент використовується лише для зберігання інформації.
Недоліки послідовного розподілення:
1. При включенні/видаленні елементу в середині списку необхідно зрушувати велику кількість елементів.
2. При багаточисельних записах або стираннях даних пам'ять фрагментується. Тобто складається із зайнятих і порожніх ділянок, що чергуються, при цьому неможливо записати новий блок даних, якщо його розміри більше існуючих фрагментів вільної пам'яті, навіть якщо сума вільних фрагментів дозволяє це зробити.
4.2.2 Зв'язаний розподіл в пам'яті.
Формат елементу
inf |
ss |
inf- поле інформації;
S - поле заслання на наступний елемент, розмір відповідає розмірності адреси в даній системі.
Переваги зв'язного розподілення:
1. Довільне розміщення елементів в пам'яті (відсутня проблема фрагментації).
2. Легко виробити вставку/видалення із списку.
Недоліки послідовного розподілення:
1. Більше займаний об'єм пам'яті у зв'язку з необхідністю зберігати адреси.
2. Неможливість прямого доступу до будь-якого елементу.
4.3 Лінійні та нелінійні структури даних.
Структури даних по їхньому внутрішньому представленню можна розділити на лінійні і більш складні (нелінійні) структури. До лінійних структур можна віднести такі як: списки, стеки, черги, деки та інші. До нелінійних структур відносяться деревоподібні структури (tree structure) і багатозв'язані структури (multilinked structure).
4.3.1 Лінійні струтури даних
Лінійні зв'язані структури являють собою послідовності з числом вузлів більшим за нуль, найважливішою структурною особливістю яких є таке розташування елементів списку один щодо іншого, начебто знаходяться на одній лінії. Інакше кажучи, у такій структурі повинне дотримуватися наступне умова: кожні елемент має не більш одного попереднього й одного наступного.
У лінійних зв'язаних структурах всі елементи упорядковані, але порядок задається не номерами вузлів (як у масиві ), а вказівниками вхідними до складу списку. Списки є зручним способом збереження динамічних множин, що дозволяють робити наступні операції над ними:
Одержання доступу до k-го елементу множини для зчитування і/чи зміни його значення
Вставка нового елемента множини після k-го
Видалення k-го вузла множини
Об'єднання в одну множину двох чи більш інших
Розбивка множини на дві чи більш підмножини
Створення копії множини
Визначення кількості елементів множини, находження максимального і мінімального
Упорядкування елементів множини
Пошук елемента множини з даним значенням.
Списки - це дискретні, зв'язані, динамічні, рекурсивні інформаційні структури.
Для списків характерно:
Складаються з елементів того самого типу. Тип елементів може бути будь-яким.
Зв'язок між елементами і доступ до списків здійснюється за допомогою типізованих вказівників. При цьому, на ряду з інформацією кожен елемент списку повинний мати вказівники на наступний чи попередній, або на наступний і попередній елементи списку.
Кількість елементів списку заздалегідь не задається. Воно може змінюватися в процесі виконання програми. Розмір одного елемента списку не може перевищувати 64 Кбайт.
При описі типу - список, використовується рекурсія.
Доступ до елементів списку послідовний.
Списки можуть бути однозв'язними і двохзв'язними. Так само серед лінійних списків виділяють циклічно зв'язні списки. Розглянемо їх.
