Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції алгоритми и методи.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
2.17 Mб
Скачать

2 Еквівалентність операторних алгоритмів

Для визначення еквівалентності операторних алгоритмів розглянемо два алгоритми —U1 й U2 з деякого класу операторних алгоритмів. Для кожного з алгоритмів виділимо ті змінні, які нас цікавлять як результати виконання цих алгоритмів. Виділені змінні можуть бути різними, в алгоритму U1 й алгоритму U2, .але число їх повинне бути однаковим і між ними повинне бути встановлене взаємно однозначна відповідність. Те ж саме стосується функціональних змінним алгоритмів U1, U2 і до параметрів цих алгоритмів, які можуть входити в S-подання виділених змінних. Позначимо функціональні змінні, параметри й виділені змінні алгоритму U1, буквами х1, ..., x, р1, ..., рr й y1, ..., уп відповідно. Відповідні ним змінні, граючі аналогічну роль для U2, позначимо буквами 1, ..., S; 1 , . . . , r І 1, . . . , п.

Можна також визначити еквівалентність між двома алгоритмами U1 й U2 з різних класів U11, φ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, що виникає при застосуванні до нього нормального алгоритму з даною схемою.

Аналогічним чином можна говорити про схемні записи алгоритмів, що задаються програмами універсальних обчислювальних машин, які в цьому випадку називаються схемами програм.

Якщо в схемних записах алгоритмів відволіктися від змістовного змісту операторів, уважаючи їх елементарними символами, а предикати відповідно незалежними логічними змінними, то отримані вираження ми будемо називати логічними схемами алгоритмів.