Загальні властивості алгоритмів

Багатий досвід розробки та застосування алгоритмів підказують ряд загальних властивостей, які притаманні будь-якому алгоритму, в тому числі і алгоритмам, перерахованим вище.

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

Масовість алгоритму: алгоритм служить для вирішення не якоїсь однієї задачі, а цілого класу однотипних задач. В цьому аспекті таблиця множення не є алгоритмом, а множення стовпчиком багатозначних чисел - алгоритм. Наприклад, в алгоритмі Евкліда числа a і b вибираються з нескінченного (рахункового) безлічі цілих чисел.

Детерменірованность алгоритму: після виконання чергового етапу однозначно визначено, що робити на наступному етапі.

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

Результативність алгоритму: алгоритм через кінцеве число кроків повинен привести до зупинки, яка свідчить про досягнення необхідного результату. Так при пошуку шляху в лабіринті зупинка настає або на досяжною майданчику, або при поверненні на вихідну майданчик, якщо зазначена мета не досяжна. Зокрема, кожен, хто пред'являє алгоритм вирішення деякої задачі, зобов'язаний показати, що алгоритм зупиняється після кінцевого числа кроків (як кажуть, сходиться) для будь-якого xіз області заданіяf. Однак перевірити результативність (збіжність алгоритму) набагато важче, ніж інші його властивості.

Способи завдання алгоритмів

Алгоритм може бути заданий в наступному вигляді:

у вербальній (словесній) формі;

у вигляді ЛГСА (логічно графічна схема алгоритму) - в графічній формі у вигляді блок-схеми;

у вигляді структурограмми Насс-Шнейдермана;

у вигляді програми для ЕОМ.

Блок-схема це графічне зображення алгоритму. При її побудові вміст кожного кроку алгоритму записується в довільній формі всередині блоку, представленого геометричною фігурою. Порядок виконання кроків вказується за допомогою стрілок, що з'єднують блоки. Використання різних геометричних фігур відображає різний характер виконуваних дій. Розміри фігур і їх вид регламентовані ГОСТ 19.003-80 або ISO1028-73.

В прямокутнику (блок обчислень) записуються дії, в результаті яких дані змінюють свої значення.

В ромб (блок порівняння) записують умови підлягають перевірці з метою вибору варіанту продовження обчислення.

Паралелограм (блок введення-виведення) містить інформацію про вхідних і вихідних даних.

Овал означає почало або закінчення обчислювального процесу.

Найбільш часто вживані символи ЛГСА

Блок модифікації (цикл)

У блок-схемі алгоритму вершин відповідають кроки алгоритму, а ребрам - переходи між кроками. Вершини в блок-схемі може бути двох видів: вершини, з яких виходить одне ребро, (їх називають операторами) і вершини, з яких виходить два ребра, (їх називають логічними умовами і предикатами). Крім того, є єдиний оператор кінця, з якого не виходить жодного ребра і єдиний оператор початку.

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

На блок-схемі добре видно різницю між описом алгоритму і процесом його реалізації. Опис - це граф, процес реалізації - це шлях в графі. Різні шляхи в одному і тому ж графі виникають при різних даних, які створюють різні логічні умови в точках прийняття рішення (в точках розгалуження). Відсутність збіжності означає, що в процесі обчислення не з'являється умов ведуть до кінця алгоритму і процес зациклюється.

При всій наочності мови блок-схем слід враховувати, що вона відображає зв'язки між окремими блоками по управлінню, а не за інформацією. Блок-схема лише вказує, що робити в наступний момент, якого блоку передається керування. Блок-схеми не містять відомостей ні про дані, ні про пам'ять, ні про використовувані наборах елементарних кроків. По суті блок-схеми це не мова, а засіб для опису детермінізму алгоритму. Як і всі графічні моделі, це досить зручне і наочний засіб. Необхідно пам'ятати, що точки розгалуження можуть бути не тільки двійковими (вибір з двох можливих варіантів в залежності від істинності чи хибності логічного умови), але і багатозначними (вибір одного розгалуження з декількох можливих). Важливим є можливість вибору єдиного шляху при наявності декількох можливих.

Схожі статті