Содержание
- 2. Метод грубой силы ©Павловская Т.А. (СПб НИУ ИТМО)
- 3. Метод грубой силы («в лоб») Прямой подход к решению задачи, обычно основанный непосредственно на формулировке задачи
- 4. Пример: сортировки выбором и пузырьком ©Павловская Т.А. (СПб НИУ ИТМО) 28 16 0 29 3 -4
- 5. Исчерпывающий перебор Исчерпывающий перебор - подход к комбинаторным задачам с позиции грубой силы. Он предполагает: генерацию
- 6. Метод декомпозиции ©Павловская Т.А. (СПб НИУ ИТМО)
- 7. Метод декомпозиции Он же - метод «разделяй и властвуй»: Экземпляр задачи разбивается на несколько меньших экземпляров
- 8. Рекуррентное уравнение декомпозиции В общем случае экземпляр задачи размера n может быть разделен на несколько экземпляров
- 9. Основная теорема декомпозиции Можно указать класс эффективности алгоритма, не решая само рекуррентное уравнение. Этот подход позволяет
- 10. Сортировка слиянием Сортирует заданный массив путем его разделения на две половины, рекурсивной сортировки каждой половины и
- 11. ©Павловская Т.А. (СПб НИУ ИТМО) Mergesort (A) if n>1 Первая половина А -> в массив В
- 12. Слияние массивов Два индекса массивов после инициализации указывают на первые элементы сливаемых массивов. Элементы сравниваются, и
- 13. Анализ сортировки слиянием Пусть длина файла является степенью 2. Количество сравнений ключей: C(n) = 2*C(n/2) +
- 14. Количество сравнений ключей, выполняемых сортировкой слиянием, в худшем случае весьма близко к теоретическому минимуму количества сравнений
- 15. Быстрая сортировка В отличие от сортировки слиянием, которая разделяет элементы массива в соответствии с иx положением
- 16. Описание алгоритма Выбираем опорный элемент Выполняем перестановку элементов для получения разбиения, когда все элементы до некоторой
- 17. Процедура перестановки элементов Эффективный метод, основанный на двух проходах подмассива — слева направо и справа налево.
- 18. Эффективность быстрой сортировки Наилучший случай: все разбиения оказываются посередине соответствующих подмассивов В наихудшем случае все разбиения
- 19. Улучшения алгоритма улучшенные методы выбора опорного элемента переключение на более простую сортировку для малых подмассивов удаление
- 20. Обход бинарного дерева Это еще один пример применения метода декомпозиции При обходе в прямом порядке сначала
- 21. ©Павловская Т.А. (СПбГУ ИТМО) Обход дерева procedure print_tree( дерево ); begin print_tree( левое_поддерево ) посещение корня
- 22. Метод уменьшения размера задачи ©Павловская Т.А. (СПб НИУ ИТМО)
- 23. Метод уменьшения размера задачи Основан на использовании связи между решением данного экземпляра задачи и решением меньшего
- 24. Сортировка вставкой Предположим, что задача сортировки массива размерностью n-1 решена. Тогда остается вставить An в нужное
- 25. Реализация на псевдокоде for i = 1 to n — 1 do v j while j
- 26. Эффективность сортировки вставкой Наихудший случай: выполняется столько же сравнений, сколько и в сортировке выбором Наилучший случай
- 27. Пример результатов замера времени сортировки (зависимость времени работы программы от длины файла)
- 28. Генерация комбинаторных объектов Наиболее важными типами комбинаторных объектов являются перестановки, сочетания и подмножества данного множества. Обычно
- 29. Генерация перестановок Число перестановок Пусть дан n-элементный набор (множество). На первом месте в перестановке может стоять
- 30. Применение метода уменьшения размера к задаче получения всех перестановок Для простоты положим, что множество переставляемых элементов
- 31. Пример (восходящая генерация перестановок) 1 12 21 123 132 312 321 231 213 ©Павловская Т.А. (СПб
- 32. Алгоритм Джонсона-Троттера Вводится понятие мобильного элемента. С каждым элементом связывается стрелка, элемент считается мобильным, если стрелка
- 33. Лексикографический порядок Пусть есть первая перестановка (например, 1234). Для нахождения каждой следующей: 1. Cканируем текущую перестановку
- 34. Пример для осознания алгоритма 1234 1243 1324 1342 1423 1432 2134 2143 2314 2341 2413 2431
- 35. Число всех перестановок из n элементов Р(n) = n! ©Павловская Т.А. (СПб НИУ ИТМО)
- 36. Подмножества множества Множество A является подмножеством множества B, если любой элемент, принадлежащий A, также принадлежит B:
- 37. Генерация всех подмножеств множества Применим метод уменьшения размера задачи на 1. Все подмножества множества А =
- 38. Генерация кодов Грея Код Грея для n бит может быть рекурсивно построен на основе кода для
- 39. K-элементные подмножества Количество k-элементных подмножеств множества n (0≤k≤n) называется числом сочетаний (биномиальным коэффициентом): Прямое решение неэффективно
- 40. Пример: сочетания из 6 по 3 #include const int N = 6, K = 3; int
- 41. Свойства сочетаний каждому n-элементному подмножеству данного элементного множества соответствует одно и только одно n-k-элементное подмножество того
- 42. Треугольник Паскаля ©Павловская Т.А. (СПб НИУ ИТМО)
- 43. Свойства треугольника Паскаля (Википедия) ©Павловская Т.А. (СПб НИУ ИТМО)
- 44. Размещения Размещением из n элементов по m называется последовательность, состоящая из m различных элементов некоторого n-элементного
- 45. Число размещений Число размещений из n по m: Пример 1: Сколько существует двузначных чисел, в которых
- 46. Размещения с повторениями Размещения с повторениями из n элементов множества Е={a1, a2, ..., an} по k
- 47. Разбиение множеств Разбиение множества — это представление его в виде объединения произвольного количества попарно непересекающихся подмножеств.
- 48. Метод уменьшения на постоянный множитель Пример: бинарный поиск Подобные алгоритмы логарифмические и, будучи очень быстрыми, встречаются
- 49. Анализ эффективности Интерполяционный поиск в среднем требует менее log2 log2 n+1 сравнений ключей при поиске в
- 50. Метод преобразования Состоит в том, что экземпляр задачи преобразуется в другой, по той или иной причине
- 51. Пример 1: проверка единственности элементов массива Алгоритм на основе грубой силы попарно сравнивает все элементы, пока
- 52. Пример 2: поиск Метод грубой силы: последовательный поиск Метод преобразования задачи: сортировка + бинарный поиск Требуется
- 54. Скачать презентацию