- •Пояснювальна записка
- •Витяг з робочої програми
- •Перелік посилань
- •Лекція №1 (2 год)
- •Зміст лекції
- •1 Алгоритми та їх властивості
- •2 Моделі алгоритмів
- •Лекція №2,3 (4 год)
- •1 Класи рекурсивних функцій
- •2 Встановлення рекурсивності деяких відомих функцій
- •3 Властивості рекурсивних та примітивно-рекурсивних множин.
- •4 Властивості рекурсивно-зліченних функцій
- •Лекція №4 (2 год.)
- •Зміст лекції
- •1 Машина Поста
- •2 Машина Тьюринга
- •Лекція №5 (2 год.)
- •Зміст лекції
- •1 Теза Чорча
- •2 Теорема про співпадання класів частково-рекурсивних і обчислювальних функцій за Тьюрингом
- •Лекція №6 (2 год.)
- •Зміст лекції
- •1 Поняття нормальних алгоритмів Маркова
- •2 Правила виконання нам
- •3 Композиції нормальних алгоритмів Маркова
- •Лекція №7 (2 год.)
- •1 Поняття алгоритмічної системи
- •2 Операторні алгоритми Ван-Хао
- •3 Операторні алгоритми Ляпунова
- •Лекція №8 (2 год.)
- •Зміст лекції
- •1 Еквівалентність як метод формальних перетворень
- •2 Еквівалентність операторних алгоритмів
- •3 Формальні перетворення логічних схем
- •Лекція № 9,10 (4 год.)
- •Зміст лекції
- •1 Псевдокоди
- •3 Графічне представлення алгоритмів згідно з вимогами стандартів єспд
- •3 Правила виконання схем алгоритмів
- •4 Схема даних, схеми програм, схема роботи системи
- •Лекція №11 (2 год.)
- •Зміст лекції
- •1 Лінійна та розгалужена структури алгоритмів
- •2 Структурний підхід до побудови схем алгоритмів
- •Лекція №12,13 (4 год.)
- •Зміст лекції
- •1 Поняття сортування
- •2 Сортування простим вибором
- •3 Сортування методом бульбашки
- •4 Швидке сортування
- •Лекція №14 (2 год)
- •Зміст лекції
- •1 Відокремлення коренів
- •2 Метод поділу відрізка навпіл
- •3 Метод хорд
- •4 Метод дотичних (Ньютона)
- •Лекція №15 (2 год)
- •Зміст лекції
- •1 Математична постановка задачі інтерполяції
- •2 Інтерполяційний многочлен Лагранжа
- •3 Точкова апроксимація
- •Лекція №16 (2 год)
- •Зміст лекції
- •1 Формула прямокутників
- •2 Формула трапецій
- •3 Формула парабол (Сімпсона)
- •Лекція №17 (2 год)
- •Зміст лекції
- •1 Задача Коші для рівняння Лапласа
- •2 Різницеві методи розв’язування диференціальних рівнянь частинних похідних
- •Лекція №18 (2 год)
- •Зміст лекції
- •1 Метод найменших квадратів (мнк)
- •2 Моделі множинної регресії
2 Еквівалентність операторних алгоритмів
Для
визначення еквівалентності операторних
алгоритмів розглянемо два алгоритми
—U1
й U2
з деякого
класу операторних алгоритмів. Для
кожного з алгоритмів виділимо ті змінні,
які нас цікавлять як результати виконання
цих алгоритмів. Виділені змінні можуть
бути різними, в алгоритму U1
й алгоритму U2,
.але число їх повинне бути однаковим і
між ними повинне бути встановлене
взаємно однозначна
відповідність.
Те
ж
саме
стосується
функціональних
змінним
алгоритмів
U1,
U2
і
до
параметрів
цих
алгоритмів,
які
можуть
входити
в
S-подання
виділених
змінних.
Позначимо
функціональні
змінні,
параметри
й
виділені
змінні
алгоритму
U1,
буквами
х1,
...,
x,
р1,
...,
рr
й y1,
..., уп
відповідно.
Відповідні
ним
змінні,
граючі
аналогічну
роль
для
U2,
позначимо
буквами
1,
...,
S;
1
, . . . ,
r
І
1,
. . . ,
п.
Можна також визначити еквівалентність між двома алгоритмами U1 й U2 з різних класів U1(γ1, φ1) і U2(γ2, φ2). Відповідність між функціональними змінними, параметрами й виділеними змінними встановлюються так само, як і вище. Однак може виявитися, що списки операцій φ1 й φ2, а також значення функціональних змінних не збігаються буквально. У цьому випадку між операціями зі списків φ1 й φ2, а також між можливими значеннями функціональних змінних із множин γ1 й γ2 необхідно додатково задати певні ізоморфізми й уважати алгоритми U1 й U2 еквівалентними в тому випадку, якщо ізоморфні набори вихідних даних приводять до S-подань, що збігають із точністю до ізоморфізму утворюючих їх операцій.
Прикладом ізоморфізму операцій можуть служити наступні подання арифметичних операцій:
( ) + ( ) і ( )+( );
( ) - ( ) і ( )-( );
(
)
(
)
і
(
)
(
);
( ) / ( ) і ()/();
Слід зазначити, що якщо вводиться поняття еквівалентності для алгоритмів з різних класів, то може виявитися, що алгоритми, еквівалентні в змісті S-подань, будуть нееквівалентні в змісті збігу значень виділених змінних. Це може відбутися в тому випадку, якщо ізоморфні операції не будуть збігатися функціонально. Наприклад, в одному випадку арифметичні дії виконуються у двійковій системі, а в іншому - у десятковій.
Виявляється, що проблеми еквівалентності й розпізнавання приналежності алгоритму до деякого класу алгоритмів у своїй повній постановці алгоритмічно нерозв'язні. Тому дотепер їх вирішували тільки для деяких видів алгоритмічних систем при досить вузькому визначенні еквівалентності. Основні результати, отримані в цій області, належать до операторних систем алгоритмізації, зокрема до операторним схем А.А. Ляпунова, називаним часто схемами програм. Характерні риси операторних схем полягають у наступному:
сукупність операторів, що утворять схему алгоритму, зображується в схемі явно;
для кожного оператора явно вказуються його приймачі й попередники по виконанню і його аргументи й результати (входи й виходи оператора);
при побудові реалізації приймач оператора звичайно вибирається довільно, без обліку історії руху до даного оператора;
якщо в розгляд утягується деяка величина, «вироблювана» деяким оператором, то вона трактується як незалежна змінна, тобто вважається, що після виконання даного оператора вона може приймати будь-яке значення незалежно від попередньої історії;
якщо аргументом або результатом оператора виявляється деякий компонент масиву, що вказується індексом, то конкретне значення індексу звичайно ігнорується й уважається, що аргументом або результатом оператора є весь масив.
Важливе місце в процесі перетворення алгоритмів займають різні міри якості. Звичайно вони носять характер числових функціоналів, але в загальному випадку ними можуть бути будь-які об'єкти, що допускають відношення порядку.
Міри якості визначаються конкретними умовами постановки задачі, але вони завжди пов'язані з «просторово-тимчасовими» характеристиками алгоритму, тобто з часом його виконання й об'ємом пам'яті, необхідним для зберігання переробляємої інформації.
Усякий алгоритм при переробці конкретного об'єкта пропонує однозначно певну послідовність елементарних дій. Така послідовність, загалом кажучи, різна для різних об'єктів, до яких даний алгоритм може бути застосований. Однак завжди найдеться скінченна множина предикатів, що характеризують деякі властивості об'єктів, що переробляються, така, що для даного алгоритму залежність порядку виконання елементарних операцій від перероблюваних об'єктів, буде однозначною функцією цих предикатів.
Рядки такого виду будемо називати схемними записами алгоритмів. Розглянемо приклад схемного запису нормального алгоритму. Нехай схема нормального алгоритму в деякому алфавіті А має вигляд:
де
формула
є заключною підстановкою. Позначимо
через рi предикат: «слово Pi входить у
перероблюєме слово», а через Аi — операцію
заміни першого входження слова Pi у
перероблюєме слове, на слово Qi(i = 1, 2,...,
п). Тоді рядок є схемний запис розглянутого
нормального алгоритму. (0 означає тотожно
хибний предикат).
Ясно, що для всякого слова R в алфавіті A послідовність операцій
Ai1, Ai2,... (1≤is≤n; s= 1, 2, ...)
над цим словом, що предписує схемний запис, збігається з послідовністю тих перетворень слова R, що виникає при застосуванні до нього нормального алгоритму з даною схемою.
Аналогічним чином можна говорити про схемні записи алгоритмів, що задаються програмами універсальних обчислювальних машин, які в цьому випадку називаються схемами програм.
Якщо в схемних записах алгоритмів відволіктися від змістовного змісту операторів, уважаючи їх елементарними символами, а предикати відповідно незалежними логічними змінними, то отримані вираження ми будемо називати логічними схемами алгоритмів.
