Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
final.docx
Скачиваний:
10
Добавлен:
14.07.2019
Размер:
71.28 Кб
Скачать
  1. Дайте визначення алгоритму і опишіть його властивості.

У старій трактуванні алгоритм - це точний набір інструкцій, що описують послідовність дій деякого виконавця для досягнення результату, рішення деякої задачі за кінцевий час. У міру розвитку паралельності в роботі комп'ютерів слово «послідовність» стали замінювати більш загальним словом «порядок». Це пов'язано з тим, що якісь дії алгоритму повинні бути виконані тільки один за одним, але якісь можуть бути і незалежними.

Раніше часто писали «алгорифми», зараз таке написання використовується рідко. (Див. наприклад Нормальний алгорифми Маркова)

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

Властивості:

1. Кінцівка

2. Визначеність

3. Введення

4. Висновок

5. Ефективність

  1. Дайте поняття рекурсії, наведіть її особливості, приклад.

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

Іншими словами, рекурсія - спосіб загального визначення об'єкта або дії через себе, з використанням раніше заданих приватних визначень. Рекурсія використовується, коли можна виділити самоподібність задачі.

Рекурсивний алгоритм - алгоритм, який вирішує завдання шляхом вирішення декількох вузьких варіантів тієї ж задачі.

Рекурсивна функція - це ф-ція, яка викликає сама себе.

Особливості:

1) РФ не може викликати себе до нескінченності, тобто повинна мати кінцеву кількість викликів.

2) РФ завжди повинна мати умова завершення.

3) Кожний наступний виклик здійснюється зі зменшенням значення параметрі ф-ції.

  1. Поясніть принцип «розділяй і пануй», опишіть його застосування на прикладі задачі о «ханойській вежі».

1) Завдання розбивається на підзадачі (поділ здійснюється до деякої неподільної складових) і рішення відшукується в кожній підзадачі.

Int max (int mas [], int l int r) (

If (l == r) return mas [];

Int (l r) / 2;

Int r = max (mas, l, m) l

Int v = max (mas, m l, r);

If (n> v) return n;

Else return v;

)

2) Завдання «Ханойські вежі». Її змістовна постановка така:

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

Рекурсивний варіант розв'язання задачі можна описати так:

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

Якщо число дисків дорівнює одному, тоді:

Натисніть диск із джерела в завдання

В іншому випадку:

Рекурсивно пересуньте всі диски крім одного з джерела в запас, використовуючи завдання як запас

Натисніть залишився диск із джерела в завдання

Натисніть всі диски із запасу в завдання використовуючи джерело як запас

  1. Поясніть принцип «розділяй і пануй», опишіть його застосування на прикладі задачі о «ханойській вежі».

1) Завдання розбивається на підзадачі (поділ здійснюється до деякої неподільної складових) і рішення відшукується в кожній підзадачі.

Int max (int mas [], int l int r) (

If (l == r) return mas [];

Int (l r) / 2;

Int r = max (mas, l, m) l

Int v = max (mas, m l, r);

If (n> v) return n;

Else return v;

)

2) Завдання «Ханойські вежі». Її змістовна постановка така:

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

Рекурсивний варіант розв'язання задачі можна описати так:

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

Якщо число дисків дорівнює одному, тоді:

Натисніть диск із джерела в завдання

В іншому випадку:

Рекурсивно пересуньте всі диски крім одного з джерела в запас, використовуючи завдання як запас

Натисніть залишився диск із джерела в завдання

Натисніть всі диски із запасу в завдання використовуючи джерело як запас

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