SlideShare a Scribd company logo
1 of 8
Практическое занятие 10.
Разделяй и властвуй
1.
2.
3.
4.

Теоретические сведения
Контрольные вопросы
Указания по выполнению заданий
Задания
Теоретические сведения
Один из широко используемых подходов к разработке алгоритмов
носит название метода разбиения (или, неформально,
«разделяй и властвуй»). Алгоритмы, разработанные с помощью
этого метода, имеют рекурсивную структуру: для решения
данной задачи они рекурсивно вызывают сами себя один или
несколько раз, чтобы решить вспомогательную задачу,
имеющую непосредственное отношение к поставленной задаче.
Одно из преимуществ таких алгоритмов заключается в том, что
время их работы часто легко определяется с помощью
рекуррентных соотношений.
Парадигма, лежащая в основе метода декомпозиции «разделяй и
властвуй», на каждом уровне рекурсии включает в себя три
этапа.
1. Разделение задачи на несколько подзадач.
2. Покорение — рекурсивное решение этих подзадач. Когда объем
подзадачи достаточно мал, выделенные подзадачи решаются
непосредственно.
3. Комбинирование решения исходной задачи из решений
вспомогательных задач.
Теоретические сведения
Если алгоритм рекурсивно обращается к самому себе, время его
работы часто описывается с помощью рекуррентного уравнения,
или рекуррентного соотношения, в котором полное время,
требуемое для решения всей задачи с объемом ввода n,
выражается через время решения вспомогательных подзадач.
Затем данное рекуррентное уравнение решается с помощью
определенных математических методов, и устанавливаются
границы производительности алгоритма.
Обозначим через T(n) время решения задачи, размер которой равен
n. Если размер задачи достаточно мал, скажем, n ≤ c, где c –
некоторая заранее известная константа, то задача решается
непосредственно в течение определенного фиксированного
времени, которое мы обозначим через Θ(1).
Предположим, что наша задача делится на a подзадач, объем
каждой из которых равен 1/b от объема исходной задачи. Если
разбиение задачи на вспомогательные подзадачи происходит в
течение времени D(n), а объединение решений подзадач в
решение исходной задачи – в течение времени C(n), то мы
получим такое рекуррентное соотношение:
(
Θ 1), n ≤ c,
T ( n) = 
aT ( n / b) + D ( n) + C ( n), n > c.
Теоретические сведения
Пример 1. Алгоритм вычисления факториала целого
числа N. Факториал числа N равен N, умноженному на
факториал числа N – 1.
Factorial(N)
1. if N = l then return 1
2. else
3. smaller ← N – l
4. answer ← Factorial(smaller)
5. return N * answer
рекуррентное соотношение на количество вычислений в
функции Factorial:

0
1
,N ≤,
T ( N ) =
T
1
1 1
1
 (N − ) + + , N > .
Теоретические сведения
Пример 2. Алгоритм нахождения максимального элемента множества
S = {s1, s2, …, sn}, |S| = n ≥ 2, с применением стратегии «разделяй
и властвуй».
Max(S)
1. if |S| = 2
2. if s1 > s2 then return s1
3. else return s2
4. else
5. Разбить S на два подмножества S1 и S2 (S = S1 ∪ S2, S1 ∩ S2 =
∅)
6. max1 = Max(S1)
7. max2 = Max(S2)
8. if max1 > max2 then return max1
9. else return max2
Рекуррентное соотношение на число сравнений в зависимости от n = |
S| в этом случае определяется следующим образом:
1,
2
n =,
T ( n) =

2
1
2
T ( n / 2) + , n > .
Теоретические сведения
Пример 3. Алгоритм умножения n-разрядных двоичных чисел. Пусть x и y
– два n-разрядных двоичных числа (для простоты будем считать, что n
есть степень 2). Разобьем x и y на две равные части x = (a, b), y = (c, d).
Если рассматривать каждую из этих частей как (n/2)-разрядное число,
то можно представить произведение чисел x и y в виде
xy = (a2n/2 + b)(c2n/2 + d) = ac2n + (ad + bc)2n/2 + bd.
Полученное равенство x и y с помощью четырех умножений (n/2)разрядных чисел и нескольких сложений и сдвигов.
Пример 4. Сортировка слиянием. Этот алгоритм также основан на
принципе «разделяй и властвуй». Его выполнение заключается в
выполнении следующих шагов.
1. Разделить неупорядоченную n-элементную входную
последовательность на две неупорядоченные подпоследовательности
по n/2 элементов каждая.
2. Рекурсивно сортировать каждую из двух подпоследовательностей.
Если подпоследовательность содержит только один элемент, то эту
подпоследовательность не нужно рекурсивно сортировать, т.к. один
элемент уже является отсортированным.
3. Объединить две отсортированные последовательности с помощью
слияния их в отсортированный результат.
Контрольные вопросы
1.
2.
3.
4.
5.
6.

Принцип «разделяй и властвуй».
Структура алгоритмов, основанных на «разделяй и властвуй».
Разбиение.
Покорение.
Комбинирование.
Рекуррентные соотношения для алгоритмов «разделяй и
властвуй».
7. Рекуррентное соотношение для оценки времени вычисления
факториала целого числа.
8. Рекуррентное соотношение для оценки времени нахождения
максимального элемента множества.
9. Этапы выполнения алгоритма умножения по принципу «разделяй и
властвуй».
10. Рекуррентное соотношение для оценки времени сортировки
слиянием.
Указания по выполнению заданий
1.
2.
3.

4.

Получить задание
Получить решение задачи.
Подготовить отчет по выполнению задания.
Отчет должен включать задание и описание
этапов выполнения задания.
Ответить на вопросы по выполнению задания и
контрольные вопросы

More Related Content

What's hot

аксиоматический подход в математике матрицы и определители
аксиоматический подход в математике матрицы и определителиаксиоматический подход в математике матрицы и определители
аксиоматический подход в математике матрицы и определителиAnna1978
 
Aa97b0f540f686123fa4f693a35aa8d0
Aa97b0f540f686123fa4f693a35aa8d0Aa97b0f540f686123fa4f693a35aa8d0
Aa97b0f540f686123fa4f693a35aa8d0tomik1044
 
учебно методическое пособие. решение неравенств методом интервалов
учебно методическое пособие. решение неравенств методом интерваловучебно методическое пособие. решение неравенств методом интервалов
учебно методическое пособие. решение неравенств методом интерваловoquzaman
 
Kvadratichnaya funkciya
Kvadratichnaya funkciyaKvadratichnaya funkciya
Kvadratichnaya funkciyaIvanchik5
 
Тригонометрические функции числового аргумента
Тригонометрические функции числового аргументаТригонометрические функции числового аргумента
Тригонометрические функции числового аргументаFormula.co.ua
 
Запись алгоритмов на языках программирования
Запись алгоритмов на языках программированияЗапись алгоритмов на языках программирования
Запись алгоритмов на языках программированияssusere39acb
 
Определенные интегралы
Определенные интегралыОпределенные интегралы
Определенные интегралыdaryaartuh
 
Мысль №6
Мысль №6Мысль №6
Мысль №6rasparin
 
система уравнений
система уравненийсистема уравнений
система уравненийaviamed
 
Лекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиЛекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиsimple_people
 
Predstavlenie vyrazheniya v_vide_mnogochlena
Predstavlenie vyrazheniya v_vide_mnogochlenaPredstavlenie vyrazheniya v_vide_mnogochlena
Predstavlenie vyrazheniya v_vide_mnogochlenaDimon4
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Mikhail Kurnosov
 
Практикум по выполнению блока с информатика
Практикум по выполнению блока с информатикаПрактикум по выполнению блока с информатика
Практикум по выполнению блока с информатикаЕкатерина Луговова
 
Линейная алгебра ll. Разбор задач второго модуля
Линейная алгебра ll. Разбор задач второго модуляЛинейная алгебра ll. Разбор задач второго модуля
Линейная алгебра ll. Разбор задач второго модуляDEVTYPE
 
10 a n_r
10 a n_r10 a n_r
10 a n_r4book
 
226329 individualnye kartochki-po_algebre_7_klass
226329 individualnye kartochki-po_algebre_7_klass226329 individualnye kartochki-po_algebre_7_klass
226329 individualnye kartochki-po_algebre_7_klassssusera868ff
 

What's hot (18)

аксиоматический подход в математике матрицы и определители
аксиоматический подход в математике матрицы и определителиаксиоматический подход в математике матрицы и определители
аксиоматический подход в математике матрицы и определители
 
Aa97b0f540f686123fa4f693a35aa8d0
Aa97b0f540f686123fa4f693a35aa8d0Aa97b0f540f686123fa4f693a35aa8d0
Aa97b0f540f686123fa4f693a35aa8d0
 
лекция 8
лекция 8лекция 8
лекция 8
 
учебно методическое пособие. решение неравенств методом интервалов
учебно методическое пособие. решение неравенств методом интерваловучебно методическое пособие. решение неравенств методом интервалов
учебно методическое пособие. решение неравенств методом интервалов
 
Kvadratichnaya funkciya
Kvadratichnaya funkciyaKvadratichnaya funkciya
Kvadratichnaya funkciya
 
Тригонометрические функции числового аргумента
Тригонометрические функции числового аргументаТригонометрические функции числового аргумента
Тригонометрические функции числового аргумента
 
Запись алгоритмов на языках программирования
Запись алгоритмов на языках программированияЗапись алгоритмов на языках программирования
Запись алгоритмов на языках программирования
 
Определенные интегралы
Определенные интегралыОпределенные интегралы
Определенные интегралы
 
Мысль №6
Мысль №6Мысль №6
Мысль №6
 
система уравнений
система уравненийсистема уравнений
система уравнений
 
Лекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиЛекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистики
 
Predstavlenie vyrazheniya v_vide_mnogochlena
Predstavlenie vyrazheniya v_vide_mnogochlenaPredstavlenie vyrazheniya v_vide_mnogochlena
Predstavlenie vyrazheniya v_vide_mnogochlena
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.
 
Практикум по выполнению блока с информатика
Практикум по выполнению блока с информатикаПрактикум по выполнению блока с информатика
Практикум по выполнению блока с информатика
 
6
66
6
 
Линейная алгебра ll. Разбор задач второго модуля
Линейная алгебра ll. Разбор задач второго модуляЛинейная алгебра ll. Разбор задач второго модуля
Линейная алгебра ll. Разбор задач второго модуля
 
10 a n_r
10 a n_r10 a n_r
10 a n_r
 
226329 individualnye kartochki-po_algebre_7_klass
226329 individualnye kartochki-po_algebre_7_klass226329 individualnye kartochki-po_algebre_7_klass
226329 individualnye kartochki-po_algebre_7_klass
 

Viewers also liked

лекция №15
лекция №15лекция №15
лекция №15student_kai
 
лекция 21 управление безопасностью-ч1
лекция 21 управление безопасностью-ч1лекция 21 управление безопасностью-ч1
лекция 21 управление безопасностью-ч1student_kai
 
лекция №9
лекция №9лекция №9
лекция №9student_kai
 
лекция №3
лекция №3лекция №3
лекция №3student_kai
 
лекция №5
лекция №5лекция №5
лекция №5student_kai
 
лекция № 16
лекция № 16лекция № 16
лекция № 16student_kai
 
слайды лекции сети
слайды лекции сетислайды лекции сети
слайды лекции сетиstudent_kai
 
лекция №6
лекция №6лекция №6
лекция №6student_kai
 

Viewers also liked (20)

п8
п8п8
п8
 
лекция №15
лекция №15лекция №15
лекция №15
 
лекция 21 управление безопасностью-ч1
лекция 21 управление безопасностью-ч1лекция 21 управление безопасностью-ч1
лекция 21 управление безопасностью-ч1
 
лекция 17
лекция 17лекция 17
лекция 17
 
лекция 2
лекция 2лекция 2
лекция 2
 
лекция 7
лекция 7лекция 7
лекция 7
 
лаб № 8
лаб № 8лаб № 8
лаб № 8
 
лекция 23
лекция 23лекция 23
лекция 23
 
л20
л20л20
л20
 
лекция №9
лекция №9лекция №9
лекция №9
 
лекция 26
лекция 26лекция 26
лекция 26
 
лекция №3
лекция №3лекция №3
лекция №3
 
лекция №5
лекция №5лекция №5
лекция №5
 
лекция № 16
лекция № 16лекция № 16
лекция № 16
 
лекция23
лекция23лекция23
лекция23
 
14 лекция
14 лекция14 лекция
14 лекция
 
лек16
лек16лек16
лек16
 
лекция 7
лекция 7лекция 7
лекция 7
 
слайды лекции сети
слайды лекции сетислайды лекции сети
слайды лекции сети
 
лекция №6
лекция №6лекция №6
лекция №6
 

Similar to практика 10

Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыsimple_people
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Technopark
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовMikhail Kurnosov
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовMikhail Kurnosov
 
лекция1
лекция1лекция1
лекция1ap0f30z
 
презентация
презентацияпрезентация
презентацияMarijVANGLIS
 
Исследование операций и методы оптимизации
Исследование операций и методы оптимизацииИсследование операций и методы оптимизации
Исследование операций и методы оптимизацииJakobow
 
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Technosphere1
 
04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепции04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепцииFedor Tsarev
 
практика 12
практика 12практика 12
практика 12student_kai
 
Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Technosphere1
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2simple_people
 
К автоматизированной проверке решений некоторого класса задач
К автоматизированной проверке решений некоторого класса задачК автоматизированной проверке решений некоторого класса задач
К автоматизированной проверке решений некоторого класса задачNatalia Smirnova
 
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015LIPugach
 
метод пособие
метод пособиеметод пособие
метод пособиеoquzaman
 

Similar to практика 10 (20)

Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
лекция1
лекция1лекция1
лекция1
 
Java. Методы
Java. Методы Java. Методы
Java. Методы
 
презентация
презентацияпрезентация
презентация
 
Исследование операций и методы оптимизации
Исследование операций и методы оптимизацииИсследование операций и методы оптимизации
Исследование операций и методы оптимизации
 
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение"
 
p01.pdf
p01.pdfp01.pdf
p01.pdf
 
04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепции04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепции
 
практика 12
практика 12практика 12
практика 12
 
Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства"
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2
 
К автоматизированной проверке решений некоторого класса задач
К автоматизированной проверке решений некоторого класса задачК автоматизированной проверке решений некоторого класса задач
К автоматизированной проверке решений некоторого класса задач
 
Razlogenie Na Mnogiteli
Razlogenie Na MnogiteliRazlogenie Na Mnogiteli
Razlogenie Na Mnogiteli
 
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015
 
метод пособие
метод пособиеметод пособие
метод пособие
 

More from student_kai

презентация
презентацияпрезентация
презентацияstudent_kai
 
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкетаstudent_kai
 
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке Cstudent_kai
 
презентация курсовой работы
презентация курсовой работыпрезентация курсовой работы
презентация курсовой работыstudent_kai
 
лекция№34
лекция№34лекция№34
лекция№34student_kai
 
лекция№32
лекция№32лекция№32
лекция№32student_kai
 
лекция№33
лекция№33лекция№33
лекция№33student_kai
 
лекция№31
лекция№31лекция№31
лекция№31student_kai
 
лекция№30
лекция№30лекция№30
лекция№30student_kai
 
лекция№29
лекция№29лекция№29
лекция№29student_kai
 
лекция№28
лекция№28лекция№28
лекция№28student_kai
 
лекция№27
лекция№27лекция№27
лекция№27student_kai
 
лекция№26
лекция№26лекция№26
лекция№26student_kai
 
лекция№25
лекция№25лекция№25
лекция№25student_kai
 
лекция№25
лекция№25лекция№25
лекция№25student_kai
 
лекция№24
лекция№24лекция№24
лекция№24student_kai
 
лекция№23
лекция№23лекция№23
лекция№23student_kai
 
лекция№22
лекция№22лекция№22
лекция№22student_kai
 
лекция№21
лекция№21лекция№21
лекция№21student_kai
 
лекция№20
лекция№20лекция№20
лекция№20student_kai
 

More from student_kai (20)

презентация
презентацияпрезентация
презентация
 
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкета
 
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке C
 
презентация курсовой работы
презентация курсовой работыпрезентация курсовой работы
презентация курсовой работы
 
лекция№34
лекция№34лекция№34
лекция№34
 
лекция№32
лекция№32лекция№32
лекция№32
 
лекция№33
лекция№33лекция№33
лекция№33
 
лекция№31
лекция№31лекция№31
лекция№31
 
лекция№30
лекция№30лекция№30
лекция№30
 
лекция№29
лекция№29лекция№29
лекция№29
 
лекция№28
лекция№28лекция№28
лекция№28
 
лекция№27
лекция№27лекция№27
лекция№27
 
лекция№26
лекция№26лекция№26
лекция№26
 
лекция№25
лекция№25лекция№25
лекция№25
 
лекция№25
лекция№25лекция№25
лекция№25
 
лекция№24
лекция№24лекция№24
лекция№24
 
лекция№23
лекция№23лекция№23
лекция№23
 
лекция№22
лекция№22лекция№22
лекция№22
 
лекция№21
лекция№21лекция№21
лекция№21
 
лекция№20
лекция№20лекция№20
лекция№20
 

практика 10

  • 1. Практическое занятие 10. Разделяй и властвуй 1. 2. 3. 4. Теоретические сведения Контрольные вопросы Указания по выполнению заданий Задания
  • 2. Теоретические сведения Один из широко используемых подходов к разработке алгоритмов носит название метода разбиения (или, неформально, «разделяй и властвуй»). Алгоритмы, разработанные с помощью этого метода, имеют рекурсивную структуру: для решения данной задачи они рекурсивно вызывают сами себя один или несколько раз, чтобы решить вспомогательную задачу, имеющую непосредственное отношение к поставленной задаче. Одно из преимуществ таких алгоритмов заключается в том, что время их работы часто легко определяется с помощью рекуррентных соотношений. Парадигма, лежащая в основе метода декомпозиции «разделяй и властвуй», на каждом уровне рекурсии включает в себя три этапа. 1. Разделение задачи на несколько подзадач. 2. Покорение — рекурсивное решение этих подзадач. Когда объем подзадачи достаточно мал, выделенные подзадачи решаются непосредственно. 3. Комбинирование решения исходной задачи из решений вспомогательных задач.
  • 3. Теоретические сведения Если алгоритм рекурсивно обращается к самому себе, время его работы часто описывается с помощью рекуррентного уравнения, или рекуррентного соотношения, в котором полное время, требуемое для решения всей задачи с объемом ввода n, выражается через время решения вспомогательных подзадач. Затем данное рекуррентное уравнение решается с помощью определенных математических методов, и устанавливаются границы производительности алгоритма. Обозначим через T(n) время решения задачи, размер которой равен n. Если размер задачи достаточно мал, скажем, n ≤ c, где c – некоторая заранее известная константа, то задача решается непосредственно в течение определенного фиксированного времени, которое мы обозначим через Θ(1). Предположим, что наша задача делится на a подзадач, объем каждой из которых равен 1/b от объема исходной задачи. Если разбиение задачи на вспомогательные подзадачи происходит в течение времени D(n), а объединение решений подзадач в решение исходной задачи – в течение времени C(n), то мы получим такое рекуррентное соотношение: ( Θ 1), n ≤ c, T ( n) =  aT ( n / b) + D ( n) + C ( n), n > c.
  • 4. Теоретические сведения Пример 1. Алгоритм вычисления факториала целого числа N. Факториал числа N равен N, умноженному на факториал числа N – 1. Factorial(N) 1. if N = l then return 1 2. else 3. smaller ← N – l 4. answer ← Factorial(smaller) 5. return N * answer рекуррентное соотношение на количество вычислений в функции Factorial: 0 1 ,N ≤, T ( N ) = T 1 1 1 1  (N − ) + + , N > .
  • 5. Теоретические сведения Пример 2. Алгоритм нахождения максимального элемента множества S = {s1, s2, …, sn}, |S| = n ≥ 2, с применением стратегии «разделяй и властвуй». Max(S) 1. if |S| = 2 2. if s1 > s2 then return s1 3. else return s2 4. else 5. Разбить S на два подмножества S1 и S2 (S = S1 ∪ S2, S1 ∩ S2 = ∅) 6. max1 = Max(S1) 7. max2 = Max(S2) 8. if max1 > max2 then return max1 9. else return max2 Рекуррентное соотношение на число сравнений в зависимости от n = | S| в этом случае определяется следующим образом: 1, 2 n =, T ( n) =  2 1 2 T ( n / 2) + , n > .
  • 6. Теоретические сведения Пример 3. Алгоритм умножения n-разрядных двоичных чисел. Пусть x и y – два n-разрядных двоичных числа (для простоты будем считать, что n есть степень 2). Разобьем x и y на две равные части x = (a, b), y = (c, d). Если рассматривать каждую из этих частей как (n/2)-разрядное число, то можно представить произведение чисел x и y в виде xy = (a2n/2 + b)(c2n/2 + d) = ac2n + (ad + bc)2n/2 + bd. Полученное равенство x и y с помощью четырех умножений (n/2)разрядных чисел и нескольких сложений и сдвигов. Пример 4. Сортировка слиянием. Этот алгоритм также основан на принципе «разделяй и властвуй». Его выполнение заключается в выполнении следующих шагов. 1. Разделить неупорядоченную n-элементную входную последовательность на две неупорядоченные подпоследовательности по n/2 элементов каждая. 2. Рекурсивно сортировать каждую из двух подпоследовательностей. Если подпоследовательность содержит только один элемент, то эту подпоследовательность не нужно рекурсивно сортировать, т.к. один элемент уже является отсортированным. 3. Объединить две отсортированные последовательности с помощью слияния их в отсортированный результат.
  • 7. Контрольные вопросы 1. 2. 3. 4. 5. 6. Принцип «разделяй и властвуй». Структура алгоритмов, основанных на «разделяй и властвуй». Разбиение. Покорение. Комбинирование. Рекуррентные соотношения для алгоритмов «разделяй и властвуй». 7. Рекуррентное соотношение для оценки времени вычисления факториала целого числа. 8. Рекуррентное соотношение для оценки времени нахождения максимального элемента множества. 9. Этапы выполнения алгоритма умножения по принципу «разделяй и властвуй». 10. Рекуррентное соотношение для оценки времени сортировки слиянием.
  • 8. Указания по выполнению заданий 1. 2. 3. 4. Получить задание Получить решение задачи. Подготовить отчет по выполнению задания. Отчет должен включать задание и описание этапов выполнения задания. Ответить на вопросы по выполнению задания и контрольные вопросы