
- •Тема 4. Елементи теорії графів
- •2. Способи завдання графа: матрицею інцидентності, списком ребер, матрицею суміжності.
- •3. Ізоморфізм графів.
- •3. Елементи графів
- •4. Маршрути в графах: ланцюги, цикли
- •5. Ейлерові графи. Необхідні та достатні умови наявності в графі ейлерова цикла (теорема Ейлера).
- •6. Досяжність і зв’язність. Компоненти зв’язності.
- •5. Операції над графами
- •6. Види графів
- •Тривіальні і повні графи.
- •2) Дерево і ліс.
- •3) Дерево з коренем.
- •Тема 5. Елементи теорії алгоритмів
- •1. Інтуїтивне означення алгоритму. Приклади алгоритмів. Блок-схеми алгоритмів.
- •2. Проблема уточнення поняття алгоритму. Машина Тьюрінга.
- •3. Функції, обчислюванні за Тьюрінгом. Теза Тьюрінга.
- •4. Універсальна машина Тьюрінга.
- •5. Приклад числової функції, яка не є обчислюванною за Тьюрінгом.
- •6. Алгоритмічно нерозв'язувані проблеми
Тема 5. Елементи теорії алгоритмів
1. Інтуїтивне означення алгоритму. Приклади алгоритмів. Блок-схеми алгоритмів.
Простими прикладами алгоритмів є відомі ще з початкової школи методи додавання і множення цілих невід’ємних чисел “стовпчиком” і ділення “куточком”. Інші алгоритми: алгоритм Евкліда знаходження НСД двох чисел, алгоритм розкладання числа на прості множники; спосіб побудови трикутника за трьома заданими сторонами; метод послідовного виключення невідомих при розв’язуванні систем лінійних алгебраїчних рівнянь; правило диференціювання складеної функції, та інші.
Означення. Алгоритмом називається процес, якому притаманні наступні властивості:
-
Наявність даних: вихідних (входів), проміжних і результатів (виходів).
-
Дискретність: у кожен момент часу множина (проміжних) даних виходить з множини даних, що малися в попередній момент часу шляхом виконання дискретної послідовності деяких елементарних дій, що називаються кроками алгоритму.
-
Елементарність кроку: операції, які виконуються на кожнім кроці, повинні бути відносно простими і локальними.
-
Детермінованість: множина даних, одержуваних у якийсь (не початковий) момент часу, однозначно визначається множиною даних, отриманих у попередній момент часу.
-
Результативність: зупинка після скінченого числа кроків ( що залежить від даних) із указівкою того, що вважати результатом.
-
Масовість: множина вихідних даних повинна вибиратися з деякої потенціально нескінченної множини. Іншими словами, алгоритм повинний вирішувати масову проблему, тобто клас однотипних задач.
Варто розрізняти:
-
опис алгоритму (інструкцію чи програму)
-
механізм реалізації алгоритму (наприклад, ЕОМ), що включає засоби пуску, зупинки, реалізації елементарних кроків, видачі результатів і забезпечення детермінованості, тобто керування ходом обчислення.
-
процес реалізації алгоритму, тобто послідовність кроків, що буде породжена при застосуванні алгоритму до конкретних даних.
Будемо припускати, що опис алгоритму і механізм його реалізації скінченні. Вимога скінченності процесу реалізації збігається з вимогою результативності.
Означення. Блок-схемою алгоритму називається орієнтований граф, в якому вершинам відповідають кроки, а ребрам - переходи між кроками.
Вершини блок-схеми можуть бути двох видів:
-
оператори, з них виходить одне ребро
-
логічні умови, з яких виходить 2 ребра.
Крім того, існує єдиний оператор кінця, з якого не виходить жодне ребро і єдиний оператор початку.
Важлива особливість блок-схеми полягає в тому, що зв’язки, які вона описує, не залежать від того, чи є кроки елементарними чи являють собою самостійні алгоритми, так звані блоки. Можливість розбивати великий алгоритм на блоки широко використовується в програмуванні. І навпаки, за допомогою блок-схем можна декілька алгоритмів, розглянутих як блоки, зв'язати в один великий алгоритм.
На блок-схемі добре видна різниця між описом алгоритму і процесом його реалізації. Опис – це граф; процес реалізації – маршрут в графі. Різні маршрути в тому самому графі виникають при різних даних, і які створюють різні логічні умови в точках розгалуження. Якщо в процесі обчислення не з'являється умов, що приводять до кінця, то процес піде по нескінченному шляху, тобто зациклиться.