
- •Понятие «сортировка». Устойчивость сортировки.
- •Задача сортировки.
- •Понятие «ключевое поле» в сортировке.
- •Понятие внутренней сортировки.
- •Понятие внешней сортировки.
- •Причины изучения алгоритмов сортировки.
- •Группы алгоритмов внутренней сортировки.
- •Основные идеи методов сортировок с помощью вставок.
- •2)Улучшение метода простых вставок:
- •Сортировка методом простых вставок.
- •Основные идеи методов сортировок с помощью выбора.-min эл.
- •Сортировка с помощью метода прямого выбора.
- •Основные идеи методов сортировки с помощью обмена.
- •Сортировка методом Шелла.
- •Быстрая сортировка.-разобрать
- •Понятие эффективности алгоритмов и программ.
- •Виды эффективности алгоритмов программ.
- •Порядок сложности алгоритма.
- •Понятие «доминирующая» функция, «асимптотически доминирующая» функция.
- •Правила определения сложности функции.
- •Доминирование функций друг над другом.-разобрать хрень!!!
- •Понятие алгоритма полиноминальной сложности.
- •Понятие алгоритма неполиноминальной сложности.
- •Вопрос 27.
- •Проблемы реализации np-сложных алгоритмов.
- •Вопрос 27.
- •Соответствие между скоростью выполнения алгоритма и его сложностью.
- •Анализ лучшего, худшего и среднего случаев поведения алгоритма.
- •31* Ограниченность о-анализа.
- •Пространственная сложность программы.
- •Взаимосвязь различных типов сложности.
- •Контрольные замеры.
- •Файлы. Их организация и обработка.
- •Стоимость операций с вторичной памятью.
- •Внешняя сортировка. Особенности внешней сортировки.
- •Понятие «серия», «слияние», «хвост», «фаза», «этап» в алгоритмах внешней сортировки.
- •38* Алгоритм 2-х фазной сортировки прямым слиянием.
- •Алгоритм однофазной сортировки прямым слиянием.
- •Алгоритм сортировки «естественным слиянием».
- •Ускорение сортировок прямым слиянием.
- •Задача поиска.
- •Классификация методов поиска.
- •Связь задач сортировки и поиска.
- •Последовательный поиск.
- •Быстрый последовательный поиск.
- •Последовательный поиск в упорядоченной таблице. Поиск путем сравнения ключей.-херня!
- •Бинарный поиск. Интерполяционный поиск.
- •Хеширование Выбор хеш-функций.
- •Хеширование. Разрешение коллизий.
Понятие алгоритма неполиноминальной сложности.
Вопрос 27.
Проблемы реализации np-сложных алгоритмов.
Вопрос 27.
В теории алгоритмов NP-полная задача — задача из класса NP, к которой можно свести любую другую задачу из класса NP за полиномиальное время. Таким образом, NP-полные задачи образуют в некотором смысле подмножество «самых сложных» задач в классе NP; и если для какой-то из них будет найден «быстрый» алгоритм решения, то и любая другая задача из класса NP может быть решена так же «быстро».
Соответствие между скоростью выполнения алгоритма и его сложностью.
Сравним рост времени выполнения алгоритмов с разным порядком сложности в зависимости от увеличения числа эл.
N |
Log2(N) |
N*log2(N) |
N2 |
N3 |
2N |
3N |
1 |
0 |
0 |
1 |
1 |
2 |
3 |
2 |
1 |
2 |
4 |
8 |
4 |
3 |
4 |
2 |
8 |
16 |
64 |
16 |
9 |
8 |
3 |
24 |
64 |
512 |
256 |
81 |
16 |
4 |
64 |
256 |
4096 |
65536 |
6561 |
32 |
5 |
160 |
1024 |
32768 |
4294967296 |
43046721 |
64 |
6 |
384 |
4096 |
262144 |
? |
? |
Скорость компа увелич. в 1000 раз, тогда для алгоритмов с разной временной сложностью можно определить насколько увеличиться макс. размер вход. данных для кот. алгоритм м.б. выполнен за указ. время.
N N*log2(N) N2 N3 2N N! |
1000 140 31.6 10 2 1.2 |
Соответствие между скоростью работы алгоритма и его сложностью:
Надо уметь проводить анализ алгоритмов и определять их сложность.
Временная сложность алгоритмов м.б. посчитана исходя из анализа управляющих структур.
Вид управляющей структуры |
Сложность |
Присваивание Простое выражение Выраж 1… выраж. N Если усл. то S1 иначе S2 Цикл от N до M {S1} |
О(1) О(1) Домин О(выч1) … Домин. O(выч. усл.) O(вычS1) O(вычS2) O((M-N)*S1) |
Любые алгоритмы без циклов и рекурсивных вызовов имеют константную сложность -> все управляющие структуры м.б. сведены к структурам константной сложности и весь алгоритм так же будет х-ризоваться константной сложностью.
Определение сложности алгоритма часто сводится в основном к анализу циклов или рекурсивных вызовов.
Вектор А из N эл. Есть цикл по i от 1 до n {простая обработка A(i)}
Сложность: O(1) * О(N) O(N)
Начальным значением переменной цикла м.б. любая константа. Ее значение не влияет на сложность цикла. Тип цикла т.ж. не влияет на его сложность.
цикл i = 1, I < n (О(N))
цикл j = 1, j < m (O(N))
{простая обработка}
Сложность: О(n2)
цикл i=1 до N
оператор сложности O(P)
Сложность: О(N * P)
Вложенность повторений рассматривается, как основной фактор роста сложности. Анализ алгоритмов и программ показал, что как правило около 90% времени работы проги требуются на выполнение повторений и 10% - вычисления. Большая часть 90% - повторений наибольшей глубины вложенности.
При разработки алгоритма нужно делать:
пытаться сократить глубину вложенности повторений
следует сокращать кол-во операторов в циклах с наибольшей глубиной вложенности.