- •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.5 Уявлення в пам’яті машини множин; операції над множинами. Уявлення графів. Дерева і бінарні дерева. Характеристики дерев. Ліс. Уявлення бінарних дерев. Перехід від дерева до бінарного дерева.
4.5.1 Множини. Опис множин, операції над множинами.
Поняття множин в мові програмування ґрунтується на математичному уявленні про множини: це обмежена сукупність різних елементів. Для побудови конкретного множинного типу використовується, перелічуваний чи інтервальний тип даних. Тип елементів, з яких складається множина, називається базовим типом.
Множинний тип описується за допомогою службових слів Set of, наприклад:
type M= Set of B;
Тут М – множинний тип, B – базовий тип.
Приклад опису змінної множинного типу:
Type M= Set of 'A'..'D';
Var MS: M;
Приналежність змінних до множинного типу може бути визначена прямо в розділі опису змінних:
var C: Set of 0..7;
Константи множинного типу записуються у виді вкладеної в квадратні дужки послідовності елементів чи інтервалів базового типу, розділених комами, наприклад: ['A', 'C'], [0, 2, 7], [3, 7, 11..14].
Константа виду [ ] означає порожню підмножину.
Множина містить у собі набір елементів базового типу, усі підмножини даної множини, а також порожня підмножину. Якщо базовий тип, на якому будується множина, має K елементів, то число підмножин, що входять у цю множину, дорівнює 2k . Нехай є змінна Р інтервального типу: var P: 1..3;
Ця змінна може приймати три різних значення – або 1, 2, або 3.
Змінна Т множинного типу var T: Set of 1..3; може приймати вісьмох різних значень:
[ ] [1] [2][3][1,2][1,3][2,3] [1,2,3]
Порядок перерахування елементів базового типу в константах безладний.
Значення змінної множинного типу може бути задане конструкцією виду [T], де T – змінна базового типу.
До змінного і константам множинного типу застосовні операції присвоювання(:=), об'єднання(+), перетин(*) і різниця (-):
['A','B'] + ['A','D'] дасть ['A','B','D']
['A'] * ['A','B','C'] дасть ['A']
['A','B','C'] - ['A','B'] дасть ['C'].
Результат виконання цих операцій є величина множинного типу.
До множинних величин застосовні операції: тотожність (=), нетотожність (<>), міститься в (<=), містить (>=). Результат виконання цих операцій має логічний тип, наприклад:
['А','В'] = ['А','С'] дасть FALSE
['А','В']<>['А','С'] дасть TRUE
['В']<=['В','С'] дасть TRUE
['С','D']>=['А'] дасть FALSE.
Крім цих операцій для роботи з величинами множинного типу в мові програмування використовується операція in – приналежність елемента, що перевіряється, базового типу, стоїть ліворуч від знака операції, до множини, що стоїть праворуч від знака операції. Результат виконання цієї операції – булевий. Операція перевірки належності елемента множині часто використовується замість операцій відношень, наприклад:
A in ['А', 'В'] дасть TRUE,
2 in [1, 3, 6] дасть FALSE.
При використанні в програмах даних множинного типу виконання операцій відбувається над бітовими рядками даних. Кожному значенню множинного типу в пам'яті ЕОМ відповідає один двійковий розряд. Наприклад, множина
['А','В','С','D'] представлена в пам'яті ЕОМ бітовим рядком 1 1 1 1.
Підмножини цієї множини представлені рядками:
['A','B','D'] 1 1 0 1
['B','C'] 0 1 1 0
['D'] 0 0 0 1
Величини множинного типу не можуть бути елементами виведення.
У кожній конкретній реалізації транслятора з мови програмування кількість елементів базового типу, на якому будується множина, обмежена.
Ініціалізація величин множинного типу виробляється за допомогою типізованих констант:
const seLit: Set of 'A'..'D'
