Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
самост1_1new_druk!!!.doc
Скачиваний:
24
Добавлен:
13.11.2019
Размер:
1.61 Mб
Скачать

Тема: Базові структури алгоритмів.

Рекурентні алгоритми.

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

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

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

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

аіі-1+d

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

Рекурентна формула – це така формула, яка зв’язує значення Р сусідніх членів деякої послідовності зі значенням наступного члена. Рекурентна формула дозволяє крок за кроком визначити будь-який член послідовності, якщо відомі Р перших її членів.

У послідовності Фібоначчі кожний наступний член дорівнює сумі двох (Р=2) попередніх членів: аіі-1+ аі-2, а1= а2=1.

Цікава історія цієї послідовності. У 1202 році Леонардо Пізанський (Італія), більш відомий як Фібоначчі, написав «Книгу про абаку (рахівницю)». У цій праці містилися майже всі арифметичні і алгебраїчні досягнення того часу.

Книга містить багато оригінальних задач, найбільш відома серед них – задача про кроликів: «Скільки пар кроликів народиться за рік від однієї пари, якщо природа кроликів така, що кожен місяць, починаючи з третього місяця після свого народження, пара народжує іншу?»

При розв’язуванні цієї задачі одержуємо таку послідовність:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

Складемо, наприклад, блок-схему обчислення значення полінома Р(х)=а0хn+ а1хn-1+ а2хn-2+…+ аn-1х+ аn при заданих х і n та дійсних коефіцієнтах аі (і=0, 1, 2, …, n).

Обчислення проведемо за рекурентною схемою Горнера:

Р(х)=(…(а0хn+ а1) х+ а2)х+…+ аn-1 )х+ аn

Алгоритми пошуку.

Задача пошуку полягає у знаходженні в послідовності елементів одного або кількох елементів із заданими значеннями.

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

Зробимо із дроту рамку розміром у перше довільно вибране яблуко. Тим самим ми «задалися» початковим розміром. Назвемо рамку етало­ном. Беремо наступне яблуко і пробуємо пронести його через рамку. Якщо воно не проходить (більше еталону), то збільшуємо еталон до роз­міру цього яблука і беремо чергове яблуко. Якщо ж виявиться, що черго­ве яблуко менше еталона, то воно не найбільше, і ми відкладаємо його вбік. Коли ми таким чином порівняємо всі яблука, то еталонне яблуко буде найбільшим.

Аналогічно можна знайти найменше яблуко, але рамку потрібно кожний раз зменшувати до розмірів меншого яблука.

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

Нехай еталонна змінна визначена як перший елемент. Порівняємо з нею другий елемент. Якщо виявиться, що він менший еталона, то зміни­мо еталон (надамо йому значення другого елемента), потім перейдемо до порівняння його з третім елементом.

Подібні порівняння проведемо для всіх елементів послідовності. По закінчені перегляду еталонна змінна буде мати мінімальне значення серед елементів послідовності.

Наприклад, знайдемо найменше число в послідовності чисел: 30, 45, 32, 12, 7, 27. алгоритм буде діяти таким чином:

  • приймаємо як еталон перше число, тобто 30;

  • порівнюємо еталон з 45, еталоном залишається 30;

  • порівнюємо еталон з 32, еталоном залишається 30;

  • порівнюємо еталон з 12, еталоном стає 12;

  • порівнюємо еталон з 7, еталоном стає 7;

  • порівнюємо еталон з 27, еталоном залишається 7;

  • 7 є найменшим числом послідовності.

Частіше пошук елемента в послідовності проводиться за декількома параметрами. На­приклад, ми шукаємо і вибира­ємо одяг за розміром, ціною, фасоном, кольором і якістю тканини.

Наведемо алгоритм вибо­ру взуття за розміром, ціною і загальним враженням, куди зведемо решту значень (колір, фасон, форма...).

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

Останнім часом з'явилось багато шлюбних контор, в яких кандидати в подружжя підбираються згідно з анкетами. Ці анкети містять до 200 різних запитань — вимог до майбутнього чоловіка або жінки. Спробуйте при виборі «вручну» врахувати всі ці побажання.

У лікарнях і медичних центрах усе частіше застосовуються комп'ю­тери для діагностики хвороб. У комп'ютер вводять дані про тиск крові і температуру, результати аналізів, показники рентгену і електрокардіог­рами, десятки інших показників, і комп'ютер ставить діагноз і дає реко­мендації для лікування.

Алгоритми сортування.

Сортування це розташування заданих елементів послідовно­сті у визначеному порядку.

Серед різноманітності алгоритмів сортування виділимо три най­більш простих: вставок, вибору, обміну («спливаючих бульбашок»). Усі інші впорядкування є похідними цих трьох.