Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТА ЛЕКЦIЯ 1-18.doc
Скачиваний:
84
Добавлен:
08.11.2018
Размер:
1.81 Mб
Скачать

2. Поняття алгоритму. Основні властивості алгоритмів

Поняття алгоритму належить до первісних понять математики і є концептуальною основою процесів обробки інформації. Загальні властивості алгоритмів вивчає розділ математики, який називається теорією алгоритмів. Виникнення й бурхливий розвиток швидкодіючих обчислювальних машин відкрили нові області застосування теорії алгоритмів, яка стала теоретичною базою програмування та інформатики.

Обчислювальні процеси алгоритмічного характеру відомі людству з глибокої давнини. Такими є, наприклад, арифметичні дії над цілими числами, знаходження найбільшого спільного дільника двох чисел і т. п. На початку ХХ століття поняття алгоритму сформувалося в явному вигляді.

Під алгоритмом розуміють скінченну множину точно визначених правил для чисто механічного розв’язування задач певного класу. Така множина правил задає обчислювальний процес, названий алгоритмічним, що починається із довільного початкового даного (вибраного з деякої фіксованої для даного алгоритму множини початкових даних) і спрямований на отримання повністю визначеного цим початковим даним результату.

Указане формулювання можна розглядати тільки як пояснення, а не як визначення, тому що поняття алгоритму в силу його первісності не можна виразити через інші поняття математики. Наведене поняття можна далі уточнити, явно виділивши характерні властивості алгоритму, до яких звичайно відносять:

І) фінітність  алгоритм є скінченним об'єктом, що виступає необхідною умовою його механічної реалізовності;

2) масовість  початкові дані для алгоритму можна вибирати із певної (можливо, нескінченної) множини даних; це означає, що алгоритм призначений не для однієї конкретної задачі, а для класу однотипних задач;

3) дискретність розчленованість процесу виконання алгоритму на окремі кроки; це означає, що алгоритмічний процес здійснюється в дискретному часі;

4) елементарність  кожен крок алгоритму має бути простим, елементарним, можливість виконання якого людиною або машиною не викликає сумнівів;

5) детермінованість  однозначність процесу виконання алгоритму; це означає, що при заданих початкових даних кожне дане, отримане на певному (не початковому) кроці, однозначно визначається даними, одержаними на попередніх кроках;

6) результативність  алгоритм має засоби, які дозволяють відбирати із даних, отриманих на певному кроці виконання, результативні дані, після чого алгоритм спиниться.

За допомогою алгоритму кожен конкретний результат отримується за скінченну кількість кроків із скінченної множини даних. Кажуть, що до таких початкових даних алгоритм застосовний. Проте в деяких ситуаціях процес виконання алгоритму для певних початкових даних продовжується необмежено. Тоді кажуть, що до таких початкових даних алгоритм незастосовний.

Для опису алгоритму необхідно вказати множину його початкових даних та множину даних, до яких належать результати. Ці множини називають також множиною вхідних даних і множиною вихідних даних алгоритму. Алгоритм із множиною вхідних даних X та множиною вихідних даних Y називають X-Y-алгоритмом.

Нехай алгоритм  має множину вхідних даних X. Областю застосування алгоритму  називають підмножину DX таку, що до кожного dD алгоритм  застосовний. Якщо  видає результат b при роботі над вхідним даним d, це позначатимемо b=(d).

Кожний X-Y-алгоритм  визначає функцію f : ХY, узагалі кажучи, часткову, задану наступним чином.

Для кожного елемента dХ маємо f(d)=(d), якщо dD, тобто  до d застосовний. Якщо dD, то f(d) не визначене, тобто  до d незастосовний.

Кажуть, що такий алгоритм  обчислює функцію f.

Функція називається алгоритмічно обчислюваною (скорочено АОФ), якщо існує алгоритм, який її обчислює.

Множина L називається алгоритмічно перелічною, якщо вона є областю значень деякої алгоритмічно обчислюваної функції, тобто існує алгоритм, який перелічує елементи множини L і тільки їх.

Множина L називається алгоритмічно розв'язною відносно множини U, якщо існує алгоритм, який дозволяє для кожного xU визначати, xL чи xL.

Кожна алгоритмічно розв'язна непорожня множина є алгоритмічно перелічною. Справді, нехай L розв'язна відносно U за допомогою алгоритму . Укажемо алгоритм , який перелічує L. Зафіксуємо довільний елемент bL. На вхід  подаємо довільний хU і запускаємо  над х. Якщо xL, то  видає х як результат; якщо xL, то  видає b як результат.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]