Разделы презентаций


Ітераційні та рекурсивні алгоритми Лекція з курсу Структури даних Час – 2 год

Содержание

ПланІтераційний алгоритм.Рекурсивний алгоритм.Рекурсивні структури даних.Види обходу бінарних дерев.

Слайды и текст этой презентации

Слайд 1Ітераційні та рекурсивні алгоритми
Лекція з курсу «Структури даних»
Час – 2

год

Ітераційні та рекурсивні алгоритмиЛекція з курсу «Структури даних»Час – 2 год

Слайд 2План
Ітераційний алгоритм.
Рекурсивний алгоритм.
Рекурсивні структури даних.
Види обходу бінарних дерев.

ПланІтераційний алгоритм.Рекурсивний алгоритм.Рекурсивні структури даних.Види обходу бінарних дерев.

Слайд 3Ефективним засобом програмування для деякого класу задач є рекурсія. З

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

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

Слайд 4Під рекурсією розуміють спосіб завдання функції через саму себе, наприклад

спосіб завдання факторіала у вигляді
 
n! = (n-1)!  n.
 
У програмуванні

під рекурсивною процедурою (функцією) розуміють спосіб виклику процедурою (функцією) самої себе.
Під рекурсією розуміють спосіб завдання функції через саму себе, наприклад спосіб завдання факторіала у вигляді n! = (n-1)!

Слайд 5Під ітерацією розуміють результат багаторазово повторюваної якої-небудь операції, наприклад представлення

факторіала у вигляді   n! = 1  2  3 

4  … (n-1)  n
Під ітерацією розуміють результат багаторазово повторюваної якої-небудь операції, наприклад представлення факторіала у вигляді   n! = 1

Слайд 6Загальна методика аналізу рекурсії містить три етапи:
1. Параметризація задачі, що

полягає у виділенні різних елементів, від яких залежить розв'язання, зокрема

розмірності розв'язуваної задачі. Після кожного рекурсивного виклику розмірність повинна спадати.
2. Пошук тривіального випадку та його рішення. Як правило, це ключовий етап у рекурсії, розмір-ність задачі при цьому часто дорівнює 0 або 1.
3. Декомпозиція загального випадку, що має на меті привести завдання до одного або декількох завдань того ж типу, але меншої розмірності.
Загальна методика аналізу рекурсії містить три етапи:1. Параметризація задачі, що полягає у виділенні різних елементів, від яких

Слайд 71. Ітераційний алгоритм

1. Ітераційний алгоритм

Слайд 8Найбільш простою і природною формою представлення ітераційного алгоритму при реалізації

на комп'ютері є його опис з використанням циклу.
Розглянемо алгоритм ітераційного

алгоритму обчислення факторіала n!.
Відповідно до визначення функції n! маємо
Найбільш простою і природною формою представлення ітераційного алгоритму при реалізації на комп'ютері є його опис з використанням

Слайд 9Спочатку в залежності від поточного значення відбувається вибір способу обчислення

n!. Якщо n = 0, то змінна fctrl приймає значення

1. Якщо n ≠ 0, в циклі обчислюється добуток 1  2  3  4  … (n-1)  n. Змінна i - це параметр циклу, який послідовно приймає значення 2, 3, 4 і т.д. до n включно. Для кожного значення параметра циклу виконується тіло циклу:
 
fctrl = fctrl  i.
 
Спочатку в залежності від поточного значення відбувається вибір способу обчислення n!. Якщо n = 0, то змінна

Слайд 10Послідовність ітерацій циклу для n = 6 показана в табл.

1.
Під ітерацією циклу будемо розуміти виконання тіла циклу для конкретного

значення параметра циклу.
Покрокове обчислення факторіала
Послідовність ітерацій циклу для n = 6 показана в табл. 1.Під ітерацією циклу будемо розуміти виконання тіла

Слайд 122. Рекурсивний алгоритм

2. Рекурсивний алгоритм

Слайд 13Рекурентні співвідношення досить часто зустрічаються в математичних виразах. Рекурсія у

визначенні полягає в тому, що визначене поняття визначається через саме

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

Слайд 14Наприклад, рекурентне співвідношення
 
an+1=an+d, де d — різниця прогресії,
 
або геометричної

прогресії
 
an+1=qan, где q — коефіцієнт прогресії.
 
Рекурсивне представлення факторіала має вигляд:
 
n!

= (n-1)!  n.
Наприклад, рекурентне співвідношення an+1=an+d, 		де d — різниця прогресії,  або геометричної прогресії an+1=qan, 		где q — коефіцієнт прогресії. Рекурсивне представлення

Слайд 15Проведемо аналіз рекурсивного обчислення факторіала.
1. Параметризація. В даному випадку є

всього один параметр n - ціле число.
2. Пошук тривіального випадку.

При n=0 або n=1 значення факторіала дорівнює 1, що відповідає виходу з рекурсії.
3. Декомпозиція загального випадку: n! обчислюється через меншу розмірність цієї ж задачі (n-1)!.
Проведемо аналіз рекурсивного обчислення факторіала.1. Параметризація. В даному випадку є всього один параметр n - ціле число.2.

Слайд 17Спочатку утворюється так званий рекурсивний фрейм 1 при n=4. Фрейм

- структура, що містить деяку інформацію. Для цього фрейму відводиться

пам'ять і в ньому фіксуються всі значення змінних тіла функції при n=4. Відзначимо, що в рекурсивному фреймі фіксуються значення всіх змінних функції, крім глобальних.
Потім відбувається виклик Fасtоriаl(n) при n=3. Утворюється фрейм 2, де фіксуються значення змінних тіла функції при n=3.
Спочатку утворюється так званий рекурсивний фрейм 1 при n=4. Фрейм - структура, що містить деяку інформацію. Для

Слайд 18При цьому фрейм 1 також зберігається в пам'яті. З фрейма

2 відбувається звернення до Factorial(n) при n=2. В результаті цього

звернення утворюється фрейм 3, де фіксуються значення змінних тіла функції при n=2 і т.д. до тих пір, поки при черговому зверненні до функції Factorial умова n>0 не прийме значення false.
Це відбудеться в фреймі 5. У цьому фреймі отримаємо значення Factorial=1 і передамо це значення в фрейм 4.
Після цього фрейм 5 буде знищений, так як звернення Factorial(n) при n=0 буде виконано.
При цьому фрейм 1 також зберігається в пам'яті. З фрейма 2 відбувається звернення до Factorial(n) при n=2.

Слайд 19У фреймі 4 обчислимо значення Factorial(n) для n=1. Після цього

передамо це значення у фрейм 3, а фрейм 4 буде

закрито, оскільки звернення до Factorial(n) при n=1 буде закінчено.
Так буде згортатися ланцюжок фреймів в послідовності, зворотній тій, в якій їх породжували, поки не звернемо фрейм 1. Після цього обчислення функції буде закінчено.
У фреймі 4 обчислимо значення Factorial(n) для n=1. Після цього передамо це значення у фрейм 3, а

Слайд 21Функція обчислення факторіала має такі особливості:
• при обчисленні факторіала відбувається

звернення функції до самої себе (підкреслено у виразі), але з

меншим значенням аргументу n-1 в порівнянні з першим викликом n:
 
factorial:=factorial(n-1)  n;
 
• при обчисленні факторіала не використовується цикл, що є суттєвою особливістю рекурсивного алгоритму.
Функція обчислення факторіала має такі особливості:• при обчисленні факторіала відбувається звернення функції до самої себе (підкреслено у

Слайд 22Розглянемо послідовність дій при рекурсивному обчисленні факторіала для n=3:
1) зовнішній

виклик з основної програми factorial(3);
2) перший рекурсивний виклик factorial(2) в

операторі
factorial:=factorial(n-1)  n,
де не відбуваються жодні обчислення - лише виклик (підкреслено);
3) другий рекурсивний виклик factorial(l);
4) отримання значення factorial(1):=1;
5) повернення з другого рекурсивного виклику і обчислення факторіала
factorial(2):= 1  2 = 2;
6) повернення з першого рекурсивного виклику і обчислення факторіала
factorial(3):= 2  3 = 6;
7) повернення в основну програму fac: = 6.
Розглянемо послідовність дій при рекурсивному обчисленні факторіала для n=3:1) зовнішній виклик з основної програми factorial(3);2) перший рекурсивний

Слайд 233. Рекурсивні структури даних

3. Рекурсивні структури даних

Слайд 24Список - набір елементів, розташованих у певному порядку.
Список черговості -

список, в якому останній вступний елемент додається до нижньої частини

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

Слайд 25Рис. 2. Однонаправлений і двонаправлений списки

Рис. 2. Однонаправлений і двонаправлений списки

Слайд 26На рис. 3 і 4 показано, як додається і видаляється

елемент з двонаправленого списку. При додаванні нового елементу (позначений N)

зв'язок від 3 йде до N, а від N до 4, а зв'язок між 3 і 4 видаляється.
В однонаправленому списку структура додавання і видалення така ж, тільки зв'язок між елементами односторонній.

Рис. 3. Додавання елемента в список

Рис. 4. Видалення елемента з списку

На рис. 3 і 4 показано, як додається і видаляється елемент з двонаправленого списку. При додаванні нового

Слайд 27Черга - тип даних, при якому нові дані розташовуються слідом

за існуючими в порядку надходження; ті дані, що надійшли першими,

при цьому обробляються першими.
Чергу іноді називають циклічною пам'яттю або списком типу FIFO («first-in-first-out» - «першим прийшов - першим обслуговується»). Іншими словами, у черзі є голова і хвіст.
У черзі новий елемент додається тільки з одного краю (рис. 5).
Черга - тип даних, при якому нові дані розташовуються слідом за існуючими в порядку надходження; ті дані,

Слайд 28Рис. 5. Структура черги
 
Видалення елемента відбувається на іншому кінці. В

даному випадку це може бути тільки четвертий елемент. Черга по

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

Слайд 29Стек - лінійний список, в якому всі включення і виключення

робляться в одному кінці списку. Стек називають (push-down) списком, реверсивною

пам'яттю, гніздовою пам'яттю, магазином, списком типу LIFO («last-in-first-out» - «останнім прийшов - першим обслуговується"). Стек - частина пам'яті ОЗУ комп'ютера, яка призначається для тимчасового зберігання байтів, використовуваних мікропроцесором. Дії зі стеком здійснюються за допомогою регістра вказівника стека. Будь-яке пошкодження цієї частини пам'яті призводить до фатального збою.
Стек - лінійний список, в якому всі включення і виключення робляться в одному кінці списку. Стек називають

Слайд 30Рис. 6. Структура стека.
Найважливіші операції доступу до стека - включення

елементів і виключення елементів - здійснюються з вершини стека, причому

в кожен момент для виключення або включення доступний один елемент, що знаходиться на вершині стека.
Рис. 6. Структура стека.Найважливіші операції доступу до стека - включення елементів і виключення елементів - здійснюються з

Слайд 31Вершина стека адресується за допомогою спеціального покажчика. Для включення нового

елемента в стек покажчик спочатку переміщується «вгору» (можлива й інша

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

Слайд 32Приклад 1. Нехай є множина елементів {1, 4, 6, 9}

і до стека застосована послідовність операцій: (I, I, О, I,

О, О, I, O), де символ I означає запис елемента в стек, а символ О - зчитування елемента зі стеку. Етапи виконання операцій показані на рис. 7.
Приклад 1. Нехай є множина елементів {1, 4, 6, 9} і до стека застосована послідовність операцій: (I,

Слайд 33Дек (стек з двома кінцями) - лінійний список, в якому

всі включення і виключення робляться на обох кінцях списку (рис.

8). ще один термін «архів» застосовувався до деків з обмеженим виходом, а деки з обмеженим входом називали «переліками», або «реєстрами».
Дек (стек з двома кінцями) - лінійний список, в якому всі включення і виключення робляться на обох

Слайд 34Циклічно зв'язаний список має ту особливість, що зв'язок його останнього

вузла йде назад до першого вузла списку (рис. 9).
В цьому

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

Слайд 354. Види обходу бінарних дерев

4. Види обходу бінарних дерев

Слайд 36Набір способу обходу дерева дозволяє ввести відношення порядку для вузлів

дерева.
Найбільш поширені три способи обходу вузлів дерева (рис. 10), які

отримали такі назви:
• обхід в напрямку зліва направо (зворотний порядок, інфіксний запис);
• зверху вниз (прямий порядок, префіксний запис);
• знизу вгору (кінцевий порядок, постфіксний запис).
Набір способу обходу дерева дозволяє ввести відношення порядку для вузлів дерева.Найбільш поширені три способи обходу вузлів дерева

Слайд 37У результаті обходу дерева, наведеного на рис. 11, породжуються такі

послідовності проходження вузлів:
abcdefghi (прямий порядок);
cdbfhigea (кінцевий порядок)

У результаті обходу дерева, наведеного на рис. 11, породжуються такі послідовності проходження вузлів:abcdefghi (прямий порядок);cdbfhigea (кінцевий порядок)

Слайд 38Приклад. Нехай задано арифметичний вираз
 
(((А-В)*С) + (D/(EF))).
 
Можливий опис цього арифметичного

виразу за допомогою бінарного дерева - рис. 12.

Приклад. Нехай задано арифметичний вираз (((А-В)*С) + (D/(EF))). Можливий опис цього арифметичного виразу за допомогою бінарного дерева - рис.

Слайд 39проходження всього дерева в прямому порядку породжує послідовність
Проходження цього дерева

в зворотному і кінцевому порядках породжує відповідно послідовності:

проходження всього дерева в прямому порядку породжує послідовністьПроходження цього дерева в зворотному і кінцевому порядках породжує відповідно

Слайд 40Зауважимо, що у всіх трьох виразах порядок входження змінних збігається;

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

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

Слайд 41Для бінарного дерева на рис. 13 маємо наступний порядок обходу

вузлів:
ABFHGIJKCDE для прямого обходу;
HFBGJIKACDE для зворотного обходу;
HFJKIGBEDCA для кінцевого обходу.

Для бінарного дерева на рис. 13 маємо наступний порядок обходу вузлів:ABFHGIJKCDE для прямого обходу;HFBGJIKACDE для зворотного обходу;HFJKIGBEDCA

Слайд 42Питання?

Питання?

Слайд 43Дякую за увагу!!! 

Дякую за увагу!!! 

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика