Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


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

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

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

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

Презентация на тему Рекурсия. Перебор. Методы сокращения перебора

Содержание

Рекурсия. ОпределениеВ программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная или косвенная рекурсия), например, функция А вызывает функцию B, а функция B — функцию A. Количество
Рекурсия. Перебор. Методы сокращения перебораАвтор: Заливако Сергей Сергеевичвыпускник БГУИР Рекурсия. ОпределениеВ программировании рекурсия — вызов функции (процедуры) из неё же самой, Рекурсия. Основные положенияРекурсию надо использовать там, где она реально необходима.Числа Фибоначчи и Примеры использования рекурсииПоиск в глубину в графеСортировка слиянием«Быстрая» сортировка (Хоара)Обход различного рода Стек вызововРекурсия использует системный стек для запоминания вызываемых подпрограмм и их параметровСледите Рекурсия. Иллюстрация Перебор с помощью рекурсииДаны N упорядоченных множеств U1, U2, …, UN (N Перебор с помощью рекурсии. Общая схема Перебор с помощью рекурсии. Схема реализацииProcedure Backtrack ();BeginIf 	Then Else Begin	;	For Do 		Backtrack (,i+1) ;End;End; Задача о Ханойских башнях. ИсторияДревняя индийская легенда1883 г. Франсуа Люка «Профессор Клаус»Современное название головоломки Ханойские башни. РешениеДопустим на штыре n дисковНеобходимо каким-то образом(пока непонятно каким) перенести Ханойские башни. Графическая иллюстрация решения Ханойские башни. Алгоритм решения.Функция Перенести_диск(номер_1, номер_2, количество) begin  если (количество > Меморизация. ПредпосылкиПри реализации рекурсивных подпрограмм часто вызываются подпрограммы с одними и теми Меморизация. Что это?От английского слова memo – памятка.Идея заключается в том, чтобы Меморизация. ОсобенностиЭффективна, когда рекурсивная процедура или функция имеет целые параметры с небольшим Спасибо за внимание! Вопросы?
Слайды презентации

Слайд 2 Рекурсия. Определение
В программировании рекурсия — вызов функции (процедуры)

Рекурсия. ОпределениеВ программировании рекурсия — вызов функции (процедуры) из неё же

из неё же самой, непосредственно (простая рекурсия) или через

другие функции (сложная или косвенная рекурсия), например, функция А вызывает функцию B, а функция B — функцию A.
Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.
Преимущество рекурсивного определения объекта заключается в том, что такое конечное определение теоретически способно описывать бесконечно большое число объектов. С помощью рекурсивной программы же возможно описать бесконечное вычисление, причём без явных повторений частей программы.

Слайд 3 Рекурсия. Основные положения
Рекурсию надо использовать там, где она

Рекурсия. Основные положенияРекурсию надо использовать там, где она реально необходима.Числа Фибоначчи

реально необходима.
Числа Фибоначчи и факториалы – плохой пример использования

рекурсии
Рекурсия – это всего лишь вызов подпрограммы в самой себе
Рекурсия используется для разбиения задачи на подзадачи и решения задачи с объемом меньше, чем исходная.


Слайд 4 Примеры использования рекурсии
Поиск в глубину в графе
Сортировка слиянием
«Быстрая»

Примеры использования рекурсииПоиск в глубину в графеСортировка слиянием«Быстрая» сортировка (Хоара)Обход различного

сортировка (Хоара)
Обход различного рода деревьев (в повседневной жизни –

дерево каталогов)
Практически незаменима в переборных задачах

Слайд 5 Стек вызовов
Рекурсия использует системный стек для запоминания вызываемых

Стек вызововРекурсия использует системный стек для запоминания вызываемых подпрограмм и их

подпрограмм и их параметров
Следите за стеком.
Изменение размера стека:
Pascal:

{$M <размер стека в байтах>, <максимальный размер стека>}
С++: #pragma comment(linker, "/STACK:<размер стека в байтах>")


Слайд 6 Рекурсия. Иллюстрация

Рекурсия. Иллюстрация

Слайд 7 Перебор с помощью рекурсии
Даны N упорядоченных множеств U1,

Перебор с помощью рекурсииДаны N упорядоченных множеств U1, U2, …, UN

U2, …, UN (N – неизвестно)
Требуется построить вектор A

= (a1, a2, …, aN)
A1є U1, A2є U2, …, ANє UN
В алгоритме перебора вектор строится покомпонентно слева направо

Слайд 8 Перебор с помощью рекурсии. Общая схема

Перебор с помощью рекурсии. Общая схема

Слайд 9 Перебор с помощью рекурсии. Схема реализации
Procedure Backtrack ();
Begin
If

Перебор с помощью рекурсии. Схема реализацииProcedure Backtrack ();BeginIf 	Then Else Begin	;	For Do 		Backtrack (,i+1) ;End;End;


Then
Else Begin
;
For

є Si>Do
Backtrack (<вектор + а>,i+1) ;
End;
End;

Слайд 10 Задача о Ханойских башнях. История
Древняя индийская легенда

1883 г.

Задача о Ханойских башнях. ИсторияДревняя индийская легенда1883 г. Франсуа Люка «Профессор Клаус»Современное название головоломки

Франсуа Люка «Профессор Клаус»

Современное название головоломки


Слайд 11 Ханойские башни. Решение
Допустим на штыре n дисков
Необходимо каким-то

Ханойские башни. РешениеДопустим на штыре n дисковНеобходимо каким-то образом(пока непонятно каким)

образом(пока непонятно каким) перенести n-1 дисков на промежуточный штырь
Перенесем

n-й диск на последний штырь
Таким же образом как и во втором шаге перенести n-1 дисков на последний штырь

Слайд 12 Ханойские башни. Графическая иллюстрация решения



Ханойские башни. Графическая иллюстрация решения

Слайд 13 Ханойские башни. Алгоритм решения.
Функция Перенести_диск(номер_1, номер_2, количество)
begin

Ханойские башни. Алгоритм решения.Функция Перенести_диск(номер_1, номер_2, количество) begin если (количество >

если (количество > 0) то begin
номер_промежуточный = 6

- номер_1 - номер_2;
Перенести_диск(номер_1, номер_промежуточный, количество – 1);
Вывести_действие(номер_1, номер_2);
Перенести_диск(номер_промежуточный, номер_1, количество – 1);
end;
end;

Слайд 14 Меморизация. Предпосылки
При реализации рекурсивных подпрограмм часто вызываются подпрограммы

Меморизация. ПредпосылкиПри реализации рекурсивных подпрограмм часто вызываются подпрограммы с одними и

с одними и теми же параметрами, т.е. выполняется «лишняя»

работа
Такая особенность рекурсии уменьшает эффективность

Слайд 15 Меморизация. Что это?
От английского слова memo – памятка.
Идея

Меморизация. Что это?От английского слова memo – памятка.Идея заключается в том,

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

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

Слайд 16 Меморизация. Особенности
Эффективна, когда рекурсивная процедура или функция имеет

Меморизация. ОсобенностиЭффективна, когда рекурсивная процедура или функция имеет целые параметры с

целые параметры с небольшим диапазоном значений
Тогда для их хранения

достаточно n-мерного (n – число параметров функции) булевского массива
Если параметры имеют сложный вид, то необходимы сложные структуры данных, что вряд ли оправданно

Слайд 17 Спасибо за внимание!

Спасибо за внимание!

  • Имя файла: rekursiya-perebor-metody-sokrashcheniya-perebora.pptx
  • Количество просмотров: 148
  • Количество скачиваний: 0