- •Методические указания
- •Операционные системы пк
- •Часть 1
- •Севастополь
- •Требования к оформлению отчета к лабораторной работе
- •Введение
- •Лабораторная работа № 1 Тема: «Основы работы с ос Windows»
- •1.1 Окна ос Windows
- •1.2 Панель задач
- •1.3 Главное меню
- •1.4 Значок Мой компьютер
- •1.5 Контекстное меню
- •1.6 Создание папок и ярлыков
- •1.7 Работа с панелью управления
- •1.8 Завершение работы Windows
- •Лабораторная работа № 2 Тема: «Работа с файловой системой Windows. Стандартные программы Windows»
- •2.1 Папки, ярлыки, файлы
- •2.2 Создание объектов
- •2.3 Запуск программ
- •Лабораторная работа № 3 Тема: «Основы работы с пакетами ms Word и ms Excel»
- •3.1 Панель инструментов и режимы просмотра Microsoft Word
- •3.2 Форматирование текста в редакторе ms Word
- •3.3. Редактор формул в ms Word
- •3.3 Окна редактора, меню и панели инструментов в Excel
- •3.4 Типы данных и форматы представления в Excel
- •3.5 Основные приемы работы в ячейках Excel
- •3.6 Работа с формулами в Excel
- •3.7 Создание диаграмм средствами Excel
- •Часть I 1) Открыть новый документ ms Word
- •Часть II 1) Создать новую книгу ms Excel
- •Лабораторная работа № 4 Тема: «Системы счисления. Формы представления чисел»
- •4.1 Системы счисления
- •4.2 Правила перевода целых чисел
- •4.3 Арифметические операции
- •Лабораторная работа № 5 Тема: «Создание блок-схем алгоритмов в пакете ms Visio»
- •5.1 Основное понятие алгоритма
- •5.2 Блок-схемы алгоритма
- •5.4 Правила применения символов
- •5.4 Создание алгоритмов средствами ms Visio
- •5.5 Создание текстового документа ms Word со схемой алгоритма
- •Лабораторная работа № 6 Тема: «Исследование алгоритмов линейной структуры»
- •6.1 Виды алгоритмических структур
- •6.2 Линейный алгоритмический процесс
- •Лабораторная работа № 7 Тема: «Исследование разветвляющихся алгоритмов»
- •7.1 Разветвляющийся вычислительный процесс
- •7.2 Переключательные алгоритмические процессы
- •Лабораторная работа № 8 Тема: «Исследование алгоритмов циклической структуры»
- •8.1 Цикл с постусловием и с предусловием
- •8.2 Цикл с заданным количеством повторений
- •8.3 Алгоритмы программ с накапливанием
- •Лабораторная работа № 9 Тема: «Разработка алгоритмов, использующих структуру данных массив»
- •Лабораторная работа № 10 Тема: «Разработка алгоритмов, использующих подпрограммы»
- •Лабораторная работа № 11 Тема: «Определение функции сложности алгоритмов»
- •11.1 Функция сложности алгоритма
- •11.2 Виды функции сложности алгоритмов o(I)
- •11.3 Анализ функции сложности по программе
- •Лабораторная работа № 12 Тема: «Исследование рекурсивных и итерационных алгоритмов»
- •12.1 Рекурсия
- •12.2 Итерационные циклы
- •Лабораторная работа № 13 Тема: «Исследование основных алгоритмов сортировок»
- •13.1 Задача сортировки элементов массива
- •13.2 Линейный выбор
- •13.3 Линейный выбор с обменом
- •13.4 Стандартный обмен (метод "пузырька")
- •13.5 Челночная сортировка
- •13.6 Сортировка Шелла
- •13.7 Линейная вставка
- •3.8 Центрированная и двоичная вставки
- •13.9 Быстрая сортировка (метод Хоара)
- •Лабораторная работа № 14 Тема: «Исследование основных алгоритмов поиска»
- •14.1 Последовательный поиск
- •14.2 Бинарный (двоичный) поиск
- •14.3 Интерполяционный поиск
- •Библиографический список
Лабораторная работа № 11 Тема: «Определение функции сложности алгоритмов»
Цель работы – изучить принцип определения функции сложности алгоритма.
Теоретические сведения
11.1 Функция сложности алгоритма
Эффективность программы является очень важной ее характеристикой. Эффективность программы имеет две составляющие: память (или пространство) и время.
Пространственная эффективность измеряется количеством памяти, требуемой для выполнения программы. Компьютеры обладают ограниченным объемом памяти. Если две программы реализуют идентичные функции, то та, которая использует меньший объем памяти, характеризуется большей пространственной эффективностью.
Временная эффективность программы определяется временем, необходимым для ее выполнения. Лучший способ сравнения эффективностей алгоритмов состоит в сопоставлении их порядков сложности. Этот метод применим как к временной, так и пространственной сложности. Порядок сложности алгоритма выражает его эффективность обычно через количество обрабатываемых данных. Например, некоторый алгоритм может существенно зависеть от размера обрабатываемого массива. Если, скажем, время обработки удваивается с удвоением размера массива, то порядок временной сложности алгоритма определяется как размер массива. Порядок алгоритма — это функция, доминирующая над точным выражением временной сложности. Функция f(n) имеет порядок O(g(n)), если имеется константа К и счетчик n0 такие, что f(n)(K*g(n)) для n>n0.
Алгоритм имеет сложность O(f(N)), если с увеличением размерности исходных данных N время выполнения алгоритма возрастает с той же скоростью, что и функция f (N).
Функция сложности O выражает относительную скорость алгоритма в зависимости от некоторой переменной (или переменных). Существуют три важных правила для определения функции сложности:
1) O(к*f) = O(f)
2) O(f*g) = O(f)* O(g) или O(f/g) = O(f)/O(g).
3) O(f+g) равна доминанте O(f) и O(g).
Здесь «к» обозначает константу, а f и g — функции.
Первое правило декларирует, что постоянные множители не имеют значения для определения порядка сложности
O(1,5*N)=O(N).
Из второго правила следует, что порядок сложности произведения двух функций равен произведению их сложностей
O((17*N)*N)=O(17*N)*O(N)=O(N)*O(N)=O(N*N)= O(N2).
Из третьего правила следует, что порядок сложности суммы функций определяется как порядок доминанты первого и второго слагаемых, т. е. выбирается наибольший порядок
O(N5 + N2) = O(N5).
11.2 Виды функции сложности алгоритмов o(I)
В алгоритмах константной сложности большинство операций в программе выполняются один или несколько раз. Любой алгоритм, всегда требующий независимо от размера данных одного и того же времени, имеет константную сложность.
1) O(N). Время работы программы линейно, обычно, когда каждый элемент входных данных требуется обработать лишь линейное число раз.
2) O(N2), O(N3), O(Na). Полиномиальная сложность. O(N2) — квадратичная сложность, O(N3) — кубическая сложность
3) O(Log(N)). Когда время работы программы логарифмическое, программа начинает работать намного медленнее с увеличением N. Такое время работы встречается обычно в программах, которые делят большую проблему на маленькие и решают их по отдельности.
4) O(N*log(N)). Такое время работы имеют те алгоритмы, которые делят большую проблему на маленькие, а затем, решив их, соединяют их решения.
5) O(2n). Экспоненциальная сложность. Такие алгоритмы чаще всего возникают в результате подхода, именуемого методом грубой силы.