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

-
для будь-якого набору
такого, що

![]()
-
для будь-якого набору
такого, що
не визначено машина
,
запущена в стандартному початковому
стані, працює нескінченно.
Всяка
функція,
обчислюванна
за Тьюрінгом, зіставляється з машиною
Тьюрінга, яка обчислює цю функцію. З
другого боку, будь-якій машині Тьюрінга,
яка, почавши працювати зі стандартної
початкової конфігурації
,
може зупинитися тільки в стандартній
заключній конфігурації
,
можна поставити у відповідності
обчислювану нею функцію.
Означення.
Дві
машини Тьюрінга з однаковим алфавітом
називаються еквівалентними,
якщо вони обчислюють одну й ту саму
функцію.
Приклад.
Для будь-якої машини Тьюрінга
існує еквівалентна їй машина,
що
не містить у командах символ
.
Цей приклад показує, що можна розглядати тільки такі машини, голівки яки на кожнім кроці рухаються.
4. Універсальна машина Тьюрінга.
Основна, циклічно повторювана, дія алгоритму відтворення роботи будь-якої машини Тьюрінга за її програмою полягає у наступному:
„Для
поточної конфігурації
знайти в програмі команду з лівою
частиною
.
Якщо права частина цієї команди має
вигляд
,
то замінити в поточній конфігурації
;
на
;
якщо ж права частина має вигляд
,
то замінити
на
.
(Як було показано в питанні 1, випадок
можна не розглядати).”
Як
ми відзначали в попередній лекції,
словесний опис алгоритму може бути
неясним і потребує уточнення. Оскільки
як уточнення поняття алгоритму ми
розглядаємо машину Тьюрінга, то виникає
питання, чи можна побудувати машину
Тьюрінга ,що реалізує вищеописаний
алгоритм відтворення. Будь-яку машину
Тьюрінга, яка має таку властивість
будемо називати універсальною машиною
Тьюрінга і позначати через
.
Як
зовнішній алфавіт машини Тьюрінга
візьмемо алфавіт
.
Нехай
– довільна машина Тьюрінга із зовнішнім
алфавітом
і алфавітом внутрішніх станів
.
Символи з алфавітів
і
закодуємо словами в алфавіті
в такий
спосіб:


Зауважимо,
що код символу
має довжину (формат)
,
а код символу
- формат
.
Програму
машини Тьюрінга
в алфавіті
можна записати одним словом. Для цього
всі команди програми кодуються в алфавіті
,
а потім всі отримані слова записуються
підряд на стрічку машини
.
Точно так само кодуються вихідні дані
машини Тьюрінга
.
Приклад.
Нехай
дана машина
з алфавітом
;
внутрішньою пам'яттю
і
з
програмою
.
Початковій конфігурації машини
з
вихідним словом, наприклад, 11, відповідає
наступне слово на стрічці машини:
![]()
Z-
границя між програмою і поточною
конфігурацією машини
.
Виконанню
однієї команди машини
відповідає цикл машини
,
що
реалізує основну дію алгоритму відтворення
з тією лише різницею, що воно буде
здійснюватися не над конфігурацією
машини М, а над її кодом.
Існування
універсальної машини Тьюрінга означає,
що програму будь-якої машини Тьюрінга
можна розглядати або як опис роботи
конкретного пристрою машини М, або як
програму для машини
.
