Жадные алгоритмы: введениеDEVTYPEОпечатки в слайдах на видео: в псевдокоде алгоритма решения непрерывной задачи о рюкзаке предметы должны сортироваться по убыванию (а не возрастанию) удельной стоимости.
1.4 Точечные оценки и их свойстваDEVTYPEТочечная оценка. Определение
Пример 1
Свойства точечных оценок
Несмещенность
Пример 2
Состоятельность
Эффективность
Асимптотическая нормальность
Робастность
1.3 Описательная статистикаDEVTYPEОписательная статистика, цели. Вариационный ряд
Полигон частот
Гистограмма
Гистограмма, пример. Выбор числа интервалов
Выборочные характеристики
Характеристики положения и рассеяния
Выборочные характеристики двумерной выборки
1.2 Выборка. Выборочное пространствоDEVTYPEОсновные задачи математической статистики. Примеры задач
Выборка.Выборочное пространство. Примеры
Простой случайный выбор. Реальные виды выборов
Функция распределения выборки
Эмпирическая вероятностная мера
Теорема Гливенко-Кантелли
Continuity and Uniform ContinuityDEVTYPEThis document defines continuity and uniform continuity of functions. A function f is continuous on a set S if small changes in the input x result in small changes in the output f(x). A function is uniformly continuous if the same relationship holds for all inputs and outputs simultaneously, not just for a fixed input. Several examples are provided to illustrate the difference. The key difference is that a continuous function may depend on the specific input point, while a uniformly continuous function does not. Functions that satisfy a Lipschitz inequality are proven to be uniformly continuous.
Coin Change ProblemDEVTYPEThis document discusses algorithms for solving the coin change problem of finding the minimum number of coins needed to make a given monetary value. It describes greedy, recursive, and dynamic programming approaches. The greedy algorithm works optimally for coin denominations of 10, 5, 1 by always selecting the highest value coin first. However, the greedy approach does not always give the optimal solution in general. Dynamic programming improves on the recursive solution by storing intermediate results in an array to avoid recomputing the same subproblems.
RecurrencesDEVTYPEThe document discusses recurrences and methods for solving them. It covers:
1) Divide-and-conquer algorithms can often be modeled with recurrences. Examples include merge-sort and matrix multiplication.
2) Common methods for solving recurrences are substitution, iteration/recursion trees, and the master method. The master method provides a general solution for recurrences of the form T(n) = aT(n/b) + nc.
3) Strassen's matrix multiplication algorithm improves on the naive O(n^3) time by using a recurrence with a=7 to achieve O(n^2.81) time via the master method. Changing variables can sometimes simplify recurrences.
Диаграммы Юнга, плоские разбиения и знакочередующиеся матрицыDEVTYPEСколько есть способов разбить натуральное число в сумму нескольких слагаемых, если суммы, отличающиеся только порядком слагаемых, считаются одинаковыми? Оказывается, что на этот, казалось бы, элементарный вопрос нет простого ответа. Зато теория, начинающаяся с этого вопроса, оказывается очень интересной, а ее результаты находят применение в самых разных разделах математики и математической физики.
Настоящая брошюра написана по материалам лекций, прочитанных автором на летней школе «Современная математика» в Дубне в июле 2013 года. Она рассчитана на старшеклассников и студентов младших курсов.
Asymptotic Growth of FunctionsDEVTYPEThis document introduces asymptotic notation used to analyze the runtime of algorithms. Big O notation describes upper bounds on function growth, while Ω notation describes lower bounds. Functions are asymptotically equivalent (Θ) if they have matching upper and lower bounds. Limits can be used to establish relationships between asymptotic classes in some cases, but not always - examples show membership in a class does not necessarily imply limits exist.
Наибольший общий делительDEVTYPE- Наибольший общий делитель: определение, наивный алгоритм вычисления, важная лемма
- Алгоритм Евклида, анализ времени работы
Числа ФибоначчиDEVTYPE- Определение чисел Фибоначчи, скорость роста
- Общая формула, экспоненциальная скорость роста
- Наивный алгоритм и анализ его времени работы
- Более быстрый алгоритм и анализ его времени работы, заключение
О-символикаDEVTYPE- Более детальный анализ алгоритма вычисления чисел Фибоначчи
- Определения O(⋅), преимущества и недостатки их использования для оценки времени работы алгоритмов
- Определения Ω(⋅),Θ(⋅),o(⋅), общие правила сравнения скорости роста стандартных функций
- Графики нескольких часто используемых функций
- Скорости часто используемых функций на практике, заключение
Задачи №2. Работа со звуком.DEVTYPE- понимание принципов проигрывания аудио в ОС Windows (DirectSound, лругие библиотеки);
- понимание форматов хранения звуковой информации (wav, mp3, прочие);
- обработка звука, распознавание звуковой информации;
Задача №1. Работа с видео.DEVTYPE- понимание принципов отображения видео в ОС Windows (OpenGL, DirectX, другие);
- понимание форматов хранения видео информации (контейнеры видео файлов);
- понимание работы «кодеков» для конвертации видео из одного формата в другой;
- распознавание образов на видео;
1.4 Точечные оценки и их свойстваDEVTYPEТочечная оценка. Определение
Пример 1
Свойства точечных оценок
Несмещенность
Пример 2
Состоятельность
Эффективность
Асимптотическая нормальность
Робастность
1.3 Описательная статистикаDEVTYPEОписательная статистика, цели. Вариационный ряд
Полигон частот
Гистограмма
Гистограмма, пример. Выбор числа интервалов
Выборочные характеристики
Характеристики положения и рассеяния
Выборочные характеристики двумерной выборки
1.2 Выборка. Выборочное пространствоDEVTYPEОсновные задачи математической статистики. Примеры задач
Выборка.Выборочное пространство. Примеры
Простой случайный выбор. Реальные виды выборов
Функция распределения выборки
Эмпирическая вероятностная мера
Теорема Гливенко-Кантелли
Continuity and Uniform ContinuityDEVTYPEThis document defines continuity and uniform continuity of functions. A function f is continuous on a set S if small changes in the input x result in small changes in the output f(x). A function is uniformly continuous if the same relationship holds for all inputs and outputs simultaneously, not just for a fixed input. Several examples are provided to illustrate the difference. The key difference is that a continuous function may depend on the specific input point, while a uniformly continuous function does not. Functions that satisfy a Lipschitz inequality are proven to be uniformly continuous.
Coin Change ProblemDEVTYPEThis document discusses algorithms for solving the coin change problem of finding the minimum number of coins needed to make a given monetary value. It describes greedy, recursive, and dynamic programming approaches. The greedy algorithm works optimally for coin denominations of 10, 5, 1 by always selecting the highest value coin first. However, the greedy approach does not always give the optimal solution in general. Dynamic programming improves on the recursive solution by storing intermediate results in an array to avoid recomputing the same subproblems.
RecurrencesDEVTYPEThe document discusses recurrences and methods for solving them. It covers:
1) Divide-and-conquer algorithms can often be modeled with recurrences. Examples include merge-sort and matrix multiplication.
2) Common methods for solving recurrences are substitution, iteration/recursion trees, and the master method. The master method provides a general solution for recurrences of the form T(n) = aT(n/b) + nc.
3) Strassen's matrix multiplication algorithm improves on the naive O(n^3) time by using a recurrence with a=7 to achieve O(n^2.81) time via the master method. Changing variables can sometimes simplify recurrences.
Диаграммы Юнга, плоские разбиения и знакочередующиеся матрицыDEVTYPEСколько есть способов разбить натуральное число в сумму нескольких слагаемых, если суммы, отличающиеся только порядком слагаемых, считаются одинаковыми? Оказывается, что на этот, казалось бы, элементарный вопрос нет простого ответа. Зато теория, начинающаяся с этого вопроса, оказывается очень интересной, а ее результаты находят применение в самых разных разделах математики и математической физики.
Настоящая брошюра написана по материалам лекций, прочитанных автором на летней школе «Современная математика» в Дубне в июле 2013 года. Она рассчитана на старшеклассников и студентов младших курсов.
Asymptotic Growth of FunctionsDEVTYPEThis document introduces asymptotic notation used to analyze the runtime of algorithms. Big O notation describes upper bounds on function growth, while Ω notation describes lower bounds. Functions are asymptotically equivalent (Θ) if they have matching upper and lower bounds. Limits can be used to establish relationships between asymptotic classes in some cases, but not always - examples show membership in a class does not necessarily imply limits exist.
Наибольший общий делительDEVTYPE- Наибольший общий делитель: определение, наивный алгоритм вычисления, важная лемма
- Алгоритм Евклида, анализ времени работы
Числа ФибоначчиDEVTYPE- Определение чисел Фибоначчи, скорость роста
- Общая формула, экспоненциальная скорость роста
- Наивный алгоритм и анализ его времени работы
- Более быстрый алгоритм и анализ его времени работы, заключение
О-символикаDEVTYPE- Более детальный анализ алгоритма вычисления чисел Фибоначчи
- Определения O(⋅), преимущества и недостатки их использования для оценки времени работы алгоритмов
- Определения Ω(⋅),Θ(⋅),o(⋅), общие правила сравнения скорости роста стандартных функций
- Графики нескольких часто используемых функций
- Скорости часто используемых функций на практике, заключение
Задачи №2. Работа со звуком.DEVTYPE- понимание принципов проигрывания аудио в ОС Windows (DirectSound, лругие библиотеки);
- понимание форматов хранения звуковой информации (wav, mp3, прочие);
- обработка звука, распознавание звуковой информации;
Задача №1. Работа с видео.DEVTYPE- понимание принципов отображения видео в ОС Windows (OpenGL, DirectX, другие);
- понимание форматов хранения видео информации (контейнеры видео файлов);
- понимание работы «кодеков» для конвертации видео из одного формата в другой;
- распознавание образов на видео;
2. Очередь с приоритетами
Insert(p) добавляет новый элемент с приоритетом p
Remove(it) удаляет элемент, на который указывает
итератор it
GetMin() возвращает элемент с минимальным
приоритетом
ExtractMin() извлекает из очереди элемент с
минимальным приоритетом
ChangePriority(it, p) изменяет приоритет элемента, на
который указывает итератор it, на p
2 / 11
5. Простейшие реализации
массив: GetMin имеет время работы O(n)
3 1 5 4 2
упорядоченный массив: GetMin — O(1), Remove — O(n)
1 2 3 4 5
упорядоченный список: GetMin and Remove — O(1),
Insert — O(n)
1 2 3 4 5
3 / 11
6. Двоичная (мин-)куча
4
20
22 21
53
7
18
18 42
основное свойство
(мин-)кучи: значение
вершины ≤ значений её
детей
минимальное значение
хранится в корне,
поэтому GetMin
работает за время O(1)
4 / 11
7. Вставка и просеивание вверх
4
20
22 21
53
7
18
18 42
5
подвесим новый
элемент листом в
произвольное место
5 / 11
8. Вставка и просеивание вверх
4
20
22 21
53
7
18
18 42
5
подвесим новый
элемент листом в
произвольное место
начнём чинить
свойство кучи,
просеивая
проблемную вершину
вверх
5 / 11
9. Вставка и просеивание вверх
4
20
22 21
53
7
18
18 5
42
подвесим новый
элемент листом в
произвольное место
начнём чинить
свойство кучи,
просеивая
проблемную вершину
вверх
5 / 11
10. Вставка и просеивание вверх
4
20
22 21
53
7
18
18 5
42
подвесим новый
элемент листом в
произвольное место
начнём чинить
свойство кучи,
просеивая
проблемную вершину
вверх
5 / 11
11. Вставка и просеивание вверх
4
20
22 21
53
7
5
18 18
42
подвесим новый
элемент листом в
произвольное место
начнём чинить
свойство кучи,
просеивая
проблемную вершину
вверх
5 / 11
12. Вставка и просеивание вверх
4
20
22 21
53
5
7
18 18
42
подвесим новый
элемент листом в
произвольное место
начнём чинить
свойство кучи,
просеивая
проблемную вершину
вверх
5 / 11
13. Время работы операции вставки
важный инвариант: в каждый момент времени
свойство кучи нарушено не более чем в одной вершине
6 / 11
14. Время работы операции вставки
важный инвариант: в каждый момент времени
свойство кучи нарушено не более чем в одной вершине
при просеивании вверх эта вершина становится ближе
к корню
6 / 11
15. Время работы операции вставки
важный инвариант: в каждый момент времени
свойство кучи нарушено не более чем в одной вершине
при просеивании вверх эта вершина становится ближе
к корню
время работы есть O(h), где h — высота кучи
6 / 11
19. Извлечение минимума и
просеивание вниз
7
20
22 21
53
18
18 42
заменим корень на
любой лист
обменяем проблемную
вершину с меньшим из
её детей, чтобы быть
уверенными, что
продолжать чинить кучу
нужно только в одном из
поддеревьев
7 / 11
20. Извлечение минимума и
просеивание вниз
7
20
22 21
53
18
18 42
заменим корень на
любой лист
обменяем проблемную
вершину с меньшим из
её детей, чтобы быть
уверенными, что
продолжать чинить кучу
нужно только в одном из
поддеревьев
7 / 11
21. Извлечение минимума и
просеивание вниз
7
20
22 21
18
53
18 42
заменим корень на
любой лист
обменяем проблемную
вершину с меньшим из
её детей, чтобы быть
уверенными, что
продолжать чинить кучу
нужно только в одном из
поддеревьев
7 / 11
22. Извлечение минимума и
просеивание вниз
7
20
22 21
18
53
18 42
заменим корень на
любой лист
обменяем проблемную
вершину с меньшим из
её детей, чтобы быть
уверенными, что
продолжать чинить кучу
нужно только в одном из
поддеревьев
7 / 11
23. Извлечение минимума и
просеивание вниз
7
20
22 21
18
18
53 42
заменим корень на
любой лист
обменяем проблемную
вершину с меньшим из
её детей, чтобы быть
уверенными, что
продолжать чинить кучу
нужно только в одном из
поддеревьев
время работы: O(h)
7 / 11
29. Куча на массиве
полное двоичное дерево: уровни заполняются слева
направо; все уровни заполнены полностью, кроме,
возможно, последнего
11 / 11
30. Куча на массиве
полное двоичное дерево: уровни заполняются слева
направо; все уровни заполнены полностью, кроме,
возможно, последнего
естественная нумерация вершин: сверху вниз, слева
направо
11 / 11
31. Куча на массиве
полное двоичное дерево: уровни заполняются слева
направо; все уровни заполнены полностью, кроме,
возможно, последнего
естественная нумерация вершин: сверху вниз, слева
направо
при добавлении элемента подвешиваем лист на
последний уровень; при удалении отрезаем самый
последний лист
11 / 11
32. Куча на массиве
полное двоичное дерево: уровни заполняются слева
направо; все уровни заполнены полностью, кроме,
возможно, последнего
естественная нумерация вершин: сверху вниз, слева
направо
при добавлении элемента подвешиваем лист на
последний уровень; при удалении отрезаем самый
последний лист
вершина i имеет родителя ⌊i/2⌋ и детей 2i и 2i + 1
(при вычислении данных индексов нужно проверять,
что они попадают в отрезок [1, n])
11 / 11
33. Куча на массиве
полное двоичное дерево: уровни заполняются слева
направо; все уровни заполнены полностью, кроме,
возможно, последнего
естественная нумерация вершин: сверху вниз, слева
направо
при добавлении элемента подвешиваем лист на
последний уровень; при удалении отрезаем самый
последний лист
вершина i имеет родителя ⌊i/2⌋ и детей 2i и 2i + 1
(при вычислении данных индексов нужно проверять,
что они попадают в отрезок [1, n])
не нужно хранить указатели на родителя и детей
11 / 11
34. Куча на массиве
полное двоичное дерево: уровни заполняются слева
направо; все уровни заполнены полностью, кроме,
возможно, последнего
естественная нумерация вершин: сверху вниз, слева
направо
при добавлении элемента подвешиваем лист на
последний уровень; при удалении отрезаем самый
последний лист
вершина i имеет родителя ⌊i/2⌋ и детей 2i и 2i + 1
(при вычислении данных индексов нужно проверять,
что они попадают в отрезок [1, n])
не нужно хранить указатели на родителя и детей
глубина кучи есть O(log n), поэтому все операции
работают за время O(log n)
11 / 11